public boolean evaluate() throws SyntaxErrorException {
		ArrayList<Object> al = new ArrayList<Object>();
		for (currentPosition = 0; currentPosition < expression.length(); currentPosition++) {
			char c = expression.charAt(currentPosition);
			if (c == ' ')
				continue;
			if (isFalseCharacter(c))
				throw new SyntaxErrorException(
						Tools.getLocalizedString("False_Character"),
						currentPosition);
			if (c == '(') {
				String str = getExpression(currentPosition);
				Evaluator e = new Evaluator(str);
				al.add(e.evaluate());
			} else {
				if (c == '0')
					al.add(false);
				else {
					if (c == '1')
						al.add(true);
					else
						al.add(String.valueOf(c));
				}
			}
		}

		return evaluate(al);

	}