示例#1
0
 @SuppressWarnings("unchecked")
 private void term() {
   factor();
   while (token == Lexer.AND) {
     NonTerminal and = NodeFactory.createNonTerminal(token);
     and.setLeft(root);
     factor();
     and.setRight(root);
     root = and;
   }
 }
示例#2
0
 @SuppressWarnings("unchecked")
 private void expression() {
   term();
   while (token == Lexer.OR) {
     NonTerminal or = NodeFactory.createNonTerminal(token);
     or.setLeft(root);
     term();
     or.setRight(root);
     root = or;
   }
 }
示例#3
0
 @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));
   }
 }