public Node ForStatement() { var for_node = new For_Statement() { AnchorToken = Expect(TokenCategory.FOR) }; for_node.Add(new IdentifierNode() { AnchorToken = Expect(TokenCategory.IDENTIFIER) }); Expect(TokenCategory.IN); for_node.Add(Expression()); Expect(TokenCategory.DO); for_node.Add(new Statement_List(){ ZeroOrMore(firstOfStatement, Statement) }); Expect(TokenCategory.END); Expect(TokenCategory.SEMICOLON); return for_node; }
public Node ForStatement() { var forNode = new For_Statement() { AnchorToken = Expect(TokenCategory.FOR) }; var forID = new Identifier() { AnchorToken = Expect(TokenCategory.IDENTIFIER) }; var inNode = new IN_Statement() { AnchorToken = Expect(TokenCategory.IN) }; inNode.Add(forID); inNode.Add(Expression()); var doNode = new DO_Statement() { AnchorToken = Expect(TokenCategory.DO) }; var stmtList = new Statement_List(); while (firstOfStatement.Contains(CurrentToken)) { stmtList.Add(Statement()); } doNode.Add(stmtList); Expect(TokenCategory.END); Expect(TokenCategory.EOL); forNode.Add(inNode); forNode.Add(doNode); return(forNode); }