@SuppressWarnings("unchecked") private void term() { factor(); while (token == Lexer.AND) { NonTerminal and = NodeFactory.createNonTerminal(token); and.setLeft(root); factor(); and.setRight(root); root = and; } }
@SuppressWarnings("unchecked") private void expression() { term(); while (token == Lexer.OR) { NonTerminal or = NodeFactory.createNonTerminal(token); or.setLeft(root); term(); or.setRight(root); root = or; } }
@SuppressWarnings("unchecked") private void condition() { value(); if (token == Lexer.GREATER || token == Lexer.GREATEROREQUAL || token == Lexer.LESS || token == Lexer.LESSOREQUAL || token == Lexer.EQUAL || token == Lexer.NOTEQUAL) { NonTerminal condition = NodeFactory.createNonTerminal(token); condition.setLeft(root); token = lexer.nextToken(); value(); condition.setRight(root); root = condition; } else { throw new MalformedExpressionException( String.format("Conditional operator instead of <%s> expected.", token)); } }