private ExpressionNode parseExpression() throws ParseExpressionException { ExpressionNode rootNode = null; rootNode = parseTerm(); scanner.nextSymbol(); while (isLogicalOp()) { if (scanner.isAnd()) { ExpressionNode oldRootNode = rootNode; rootNode = new ExpressionAndNode(oldRootNode, parseTerm()); } else if (scanner.isOr()) { ExpressionNode oldRootNode = rootNode; rootNode = new ExpressionOrNode(oldRootNode, parseTerm()); } else { throw new ParseExpressionException(); } } return rootNode; }
private boolean isLogicalOp() { return (scanner.isAnd() || scanner.isOr()); }