Ejemplo n.º 1
0
        public static Node Parse(Parser parser)
        {
            ArgumentsListNode argList = new ArgumentsListNode();

            parser.ExpectToken(TokenType.Parentheses, "(");
            while (!parser.MatchToken(TokenType.Parentheses, ")"))
            {
                argList.Children.Add(ExpressionNode.Parse(parser));
                if (!parser.AcceptToken(TokenType.Comma))
                {
                    break;
                }
            }
            parser.ExpectToken(TokenType.Parentheses, ")");
            return(argList);
        }
Ejemplo n.º 2
0
 private static Node ParseFunctionCall(Parser parser, Node left)
 {
     if (parser.MatchToken(TokenType.Parentheses, "("))
     {
         return(ParseFunctionCall(parser, new FunctionCallNode(left, ArgumentsListNode.Parse(parser))));
     }
     else if (parser.MatchToken(TokenType.Dot))
     {
         return(ParseFunctionCall(parser, GetAttributeNode.Parse(left, parser)));
     }
     else if (parser.MatchToken(TokenType.Bracket, "["))
     {
         return(ParseFunctionCall(parser, IndexerNode.Parse(left, parser)));
     }
     else
     {
         return(left);
     }
 }