コード例 #1
0
 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;
 }
コード例 #2
0
        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);
        }