expression = PropertyUtil.writeProperties(expression, this.variables);  expression = TextUtil.replace( expression, " and ", " && " ); expression = TextUtil.replace( expression, " or ", " || " );
	public boolean evaluate( String expression, String fileName, int line ) 	throws BuildException 	{		// main loop: evaluate all simple expressions (without parenthesisses)		Matcher matcher = TERM_PATTERN.matcher( expression );		boolean foundParenthesis = matcher.find(); 		while ( foundParenthesis ) {			String group = matcher.group();			String term = group.substring( 1, group.length() -1 ); // the term has no parenthesis			boolean result = evaluateTerm( term, fileName, line );			expression = TextUtil.replaceFirst( expression, group, "" + result );						// find next "(...)" term:			foundParenthesis = matcher.find();			if (!foundParenthesis) {				matcher = TERM_PATTERN.matcher( expression );				foundParenthesis = matcher.find();			}		}		// now the expression is simplified to a term without parenthesis:		return evaluateTerm( expression, fileName, line );	}