public void Visit(ExprRelNode node) { foreach (var subnode in node) { Visit((dynamic)subnode); } }
public Node ExprRel() { var node1 = ExprAdd(); while (firstOfExprRel.Contains(CurrentToken)) { var node2 = new ExprRelNode(); switch (CurrentToken) { case TokenCategory.LESS: node2.AnchorToken = Expect(TokenCategory.LESS); break; case TokenCategory.LESS_EQUAL: node2.AnchorToken = Expect(TokenCategory.LESS_EQUAL); break; case TokenCategory.GREATER: node2.AnchorToken = Expect(TokenCategory.GREATER); break; case TokenCategory.GREATER_EQUAL: node2.AnchorToken = Expect(TokenCategory.GREATER_EQUAL); break; default: throw new SyntaxError(firstOfExprRel, tokenStream.Current); } node2.Add(node1); node2.Add(ExprAdd()); node1 = node2; } return(node1); }