Пример #1
0
 private static AstNode ParseFunctionCall(Parser.Parser parser, AstNode left)
 {
     if (parser.AcceptToken(TokenType.Parentheses, "("))
     {
         return(ParseFunctionCall(parser, new FunctionCallNode(left, ArgListNode.Parse(parser))));
     }
     else if (parser.AcceptToken(TokenType.Bracket, "["))
     {
         return(ParseFunctionCall(parser, new ArrayGetNode(left, ArrayIndexerNode.Parse(parser))));
     }
     else
     {
         return(left);
     }
 }
Пример #2
0
        public static ArgListNode Parse(Parser.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;
        }
Пример #3
0
        public static ArgListNode Parse(Parser.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);
        }
Пример #4
0
 public FunctionCallNode(AstNode target, ArgListNode arguments)
 {
     this.Children.Add(target);
     this.Children.Add(arguments);
 }
Пример #5
0
 public FunctionCallNode(AstNode target, ArgListNode arguments)
 {
     this.Children.Add(target);
     this.Children.Add(arguments);
 }