private Node atom() {
		// NUMBER
		// | TRUE | FALSE
		// | LPAREN^ sumExpr RPAREN!
		// | variable
		TokenType type = lookAhead(1);
		if (type == TokenType.NUMBER) {
			Token t = match(TokenType.NUMBER);
			return new NumberNode(t.getPosition(), t.getText());
		} else if (type == TokenType.TRUE) {
			return new TrueNode(match(TokenType.TRUE).getPosition());
		} else if (type == TokenType.FALSE) {
			return new FalseNode(match(TokenType.FALSE).getPosition());
		} else if (type == TokenType.LPAREN) {
			match(TokenType.LPAREN);
			Node atom = expression();
			match(TokenType.RPAREN);
			return atom;
		} else {
			return variable();
		}
	}