protected ASTNode andExpr() {
	ASTNode current;

	ASTNode leftTree = atom();
	current = leftTree;

	Token nextToken;

	do {
	    nextToken = peek();

	    if (nextToken.getType() == TokenType.AND) {
		consume();
		ASTNode head = new AndNode(Token.getTokenInstance(nextToken.getPayload()));
		head.addChild(current);
		ASTNode rightTree = atom();
		head.addChild(rightTree);
		current = head;

	    } else {
		return current;
	    }

	} while (nextToken.getType() != TokenType.END);

	return current;

    }