当前位置: 首页>>代码示例>>C#>>正文


C# Parser.ExpectToken方法代码示例

本文整理汇总了C#中Parser.ExpectToken方法的典型用法代码示例。如果您正苦于以下问题:C# Parser.ExpectToken方法的具体用法?C# Parser.ExpectToken怎么用?C# Parser.ExpectToken使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Parser的用法示例。


在下文中一共展示了Parser.ExpectToken方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Parse

        public static AstNode Parse(Parser.Parser parser)
        {
            parser.ExpectToken(TokenType.Identifier, "for");
            parser.ExpectToken(TokenType.Parentheses, "(");
            AstNode left = StatementNode.Parse(parser);
            AstNode predicate = StatementNode.Parse(parser);
            AstNode right = StatementNode.Parse(parser);
            parser.ExpectToken(TokenType.Parentheses, ")");
            AstNode forBody = StatementNode.Parse(parser);

            return new ForNode(left, predicate, right, forBody);
        }
开发者ID:zdimension,项目名称:Hassium,代码行数:12,代码来源:ForNode.cs

示例2: Parse

        public static AstNode Parse(Parser.Parser parser)
        {
            parser.ExpectToken(TokenType.Identifier, "foreach");
            parser.ExpectToken(TokenType.Parentheses, "(");
            AstNode needle = StatementNode.Parse(parser);
            parser.ExpectToken(TokenType.Identifier, "in");
            AstNode haystack = StatementNode.Parse(parser);
            parser.ExpectToken(TokenType.Parentheses, ")");
            AstNode forBody = StatementNode.Parse(parser);

            return new ForEachNode(needle, haystack, forBody);
        }
开发者ID:zdimension,项目名称:Hassium,代码行数:12,代码来源:ForEachNode.cs

示例3: Parse

        public static AstNode Parse(Parser.Parser parser)
        {
            CodeBlock block = new CodeBlock();
            parser.ExpectToken(TokenType.Brace, "{");

            while (!parser.EndOfStream && !parser.MatchToken(TokenType.Brace, "}"))
            {
                block.Children.Add(StatementNode.Parse(parser));
            }

            parser.ExpectToken(TokenType.Brace, "}");
            return block;
        }
开发者ID:zdimension,项目名称:Hassium,代码行数:13,代码来源:CodeBlock.cs

示例4: Parse

        public static ArrayIndexerNode Parse(Parser.Parser parser)
        {
            var ret = new ArrayIndexerNode();
            parser.ExpectToken(TokenType.Bracket, "[");

            while (!parser.MatchToken(TokenType.Bracket, "]"))
            {
                ret.Children.Add(ExpressionNode.Parse(parser));
            }
            parser.ExpectToken(TokenType.Bracket, "]");

            return ret;
        }
开发者ID:zdimension,项目名称:Hassium,代码行数:13,代码来源:ArrayGetNode.cs

示例5: Parse

        public static AstNode Parse(Parser.Parser parser)
        {
            parser.ExpectToken(TokenType.Identifier, "try");
            AstNode tryBody = StatementNode.Parse(parser);
            parser.ExpectToken(TokenType.Identifier, "catch");
            AstNode catchBody = StatementNode.Parse(parser);

            if (parser.AcceptToken(TokenType.Identifier, "finally"))
            {
                AstNode finallyBody = StatementNode.Parse(parser);
                return new TryNode(tryBody, catchBody, finallyBody);
            }

            return new TryNode(tryBody, catchBody);
        }
开发者ID:zdimension,项目名称:Hassium,代码行数:15,代码来源:TryNode.cs

示例6: Parse

        public static AstNode Parse(Parser.Parser parser)
        {
            parser.ExpectToken(TokenType.Identifier, "while");
            parser.ExpectToken(TokenType.Parentheses, "(");
            AstNode predicate = ExpressionNode.Parse(parser);
            parser.ExpectToken(TokenType.Parentheses, ")");
            AstNode whileBody = StatementNode.Parse(parser);
            if (parser.AcceptToken(TokenType.Identifier, "else"))
            {
                AstNode elseBody = StatementNode.Parse(parser);
                return new WhileNode(predicate, whileBody, elseBody);
            }

            return new WhileNode(predicate, whileBody);
        }
开发者ID:zdimension,项目名称:Hassium,代码行数:15,代码来源:WhileNode.cs

示例7: Parse

 public static AstNode Parse(Parser.Parser parser)
 {
     if (parser.MatchToken(TokenType.Identifier, "if"))
         return IfNode.Parse(parser);
     else if (parser.MatchToken(TokenType.Identifier, "while"))
         return WhileNode.Parse(parser);
     else if (parser.MatchToken(TokenType.Identifier, "for"))
         return ForNode.Parse(parser);
     else if (parser.MatchToken(TokenType.Identifier, "foreach"))
         return ForEachNode.Parse(parser);
     else if (parser.MatchToken(TokenType.Identifier, "try"))
         return TryNode.Parse(parser);
     else if (parser.MatchToken(TokenType.Identifier, "func"))
         return FuncNode.Parse(parser);
     else if (parser.MatchToken(TokenType.Identifier, "thread"))
         return ThreadNode.Parse(parser);
     else if (parser.MatchToken(TokenType.Identifier, "return"))
         return ReturnNode.Parse(parser);
     else if (parser.MatchToken(TokenType.Brace, "{"))
         return CodeBlock.Parse(parser);
     else
     {
         AstNode expr = ExpressionNode.Parse(parser);
         parser.ExpectToken(TokenType.EndOfLine);
         return expr;
     }
 }
开发者ID:zdimension,项目名称:Hassium,代码行数:27,代码来源:StatementNode.cs

示例8: Parse

        public static ThreadNode Parse(Parser.Parser parser)
        {
            parser.ExpectToken(TokenType.Identifier, "thread");
            AstNode node = StatementNode.Parse(parser);

            return new ThreadNode(node);
        }
开发者ID:zdimension,项目名称:Hassium,代码行数:7,代码来源:ThreadNode.cs

示例9: Parse

        public static ArgListNode Parse(Parser parser)
        {
            ArgListNode ret = new ArgListNode();
            parser.ExpectToken(TokenType.Parentheses, "(");

            while (!parser.MatchToken(TokenType.Parentheses, ")"))
            {
                ret.Children.Add(ExpressionNode.Parse(parser));
                if (!parser.AcceptToken(TokenType.Comma))
                    break;
            }

            parser.ExpectToken(TokenType.Parentheses, ")");

            return ret;
        }
开发者ID:JacobMisirian,项目名称:LittleBASIC,代码行数:16,代码来源:ArgListNode.cs

示例10: Parse

 public static AstNode Parse(Parser parser)
 {
     parser.ExpectToken(Lexer.TokenType.Identifier, "PAUSE");
     if (parser.MatchToken(Lexer.TokenType.String) || parser.MatchToken(Lexer.TokenType.Number))
         return new PauseNode((string)parser.ReadToken().Value);
     else
         return new PauseNode("PRESS ANY KEY TO CONTINUE...");
 }
开发者ID:JacobMisirian,项目名称:LittleBASIC,代码行数:8,代码来源:PauseNode.cs

示例11: Parse

        public static ArrayInitializerNode Parse(Parser parser)
        {
            var ret = new ArrayInitializerNode();
            parser.ExpectToken(TokenType.Bracket, "[");

            while (!parser.MatchToken(TokenType.Bracket, "]"))
            {
                ret.Children.Add(ExpressionNode.Parse(parser));
                if (!parser.AcceptToken(TokenType.Comma))
                {
                    break;
                }
            }
            parser.ExpectToken(TokenType.Bracket, "]");

            return ret;
        }
开发者ID:zdimension,项目名称:Hassium,代码行数:17,代码来源:ArrayInitializerNode.cs

示例12: Parse

        public static AstNode Parse(Parser.Parser parser)
        {
            parser.ExpectToken(TokenType.Identifier, "func");
            string name = parser.ExpectToken(TokenType.Identifier).Value.ToString();
            parser.ExpectToken(TokenType.Parentheses, "(");

            List<string> result = new List<string>();
            while (parser.MatchToken(TokenType.Identifier))
            {
                result.Add(parser.ExpectToken(TokenType.Identifier).Value.ToString());
                if (!parser.AcceptToken(TokenType.Comma))
                    break;
            }

            parser.ExpectToken(TokenType.Parentheses, ")");
            AstNode body = StatementNode.Parse(parser);

            return new FuncNode(name, result, body);
        }
开发者ID:zdimension,项目名称:Hassium,代码行数:19,代码来源:FuncNode.cs

示例13: Parse

        public static AstNode Parse(Parser parser)
        {
            parser.ExpectToken(Lexer.TokenType.Identifier, "IF");
            AstNode predicate = ExpressionNode.Parse(parser);
            AstNode body = StatementNode.Parse(parser);

            if (parser.MatchToken(Lexer.TokenType.Identifier, "ELSE"))
                return new ConditionalNode(predicate, body, StatementNode.Parse(parser));

            return new ConditionalNode(predicate, body);
        }
开发者ID:JacobMisirian,项目名称:LittleBASIC,代码行数:11,代码来源:ConditionalNode.cs

示例14: Parse

        public static AstNode Parse(Parser parser)
        {
            parser.ExpectToken(Lexer.TokenType.Identifier, "GOTO");

            AstNode position = ExpressionNode.Parse(parser);

            if (position is NumberNode)
                return new GotoNode(Convert.ToString(((NumberNode)position).Value));
            else if (position is IdentifierNode)
                return new GotoNode(((IdentifierNode)position).Identifier);
            else
                throw new Exception("Unknown type " + parser.CurrentToken().TokenType + " " + parser.CurrentToken().Value);
        }
开发者ID:JacobMisirian,项目名称:LittleBASIC,代码行数:13,代码来源:GotoNode.cs

示例15: Parse

        public static AstNode Parse(Parser parser)
        {
            parser.ExpectToken(Lexer.TokenType.Identifier, "CLS");

            return new ClsNode();
        }
开发者ID:JacobMisirian,项目名称:LittleBASIC,代码行数:6,代码来源:ClsNode.cs


注:本文中的Parser.ExpectToken方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。