Exemplo n.º 1
0
        /* Parses arguments
         * '(' expressionList ')' | table | String */
        Arguments Arguments()
        {
            switch (lexer.Current.Symbol)
            {
            case Symbol.LeftParen:
                if (lexer.Current.Line != lexer.Last.Line)
                {
                    throw new LuaSyntaxException(input, ExceptionMessage.AMBIGUOUS_SYNTAX_FUNCTION_CALL);
                }
                lexer.Consume();

                var arguments = new List <Expression>();
                if (lexer.Current.Symbol != Symbol.RightParen)
                {
                    arguments = ExpressionList();
                }

                lexer.Expect(Symbol.RightParen);
                return(new Arguments.Normal(arguments));

            case Symbol.LeftBrace:
                return(new Arguments.Table(Table()));

            case Symbol.String:
                var str = new Expression.String(lexer.ExpectLexeme(Symbol.String));
                return(new Arguments.String(str));

            default:
                throw new LuaSyntaxException(input, ExceptionMessage.UNEXPECTED_SYMBOL, lexer.Current.Symbol);
            }
        }
Exemplo n.º 2
0
        /* Parses arguments
         * '(' expressionList ')' | table | String */
        Arguments Arguments()
        {
            switch (lexer.Current.Symbol)
            {
                case Symbol.LeftParen:
                    if (lexer.Current.Line != lexer.Last.Line)
                        throw new LuaSyntaxException(input, ExceptionMessage.AMBIGUOUS_SYNTAX_FUNCTION_CALL);
                    lexer.Consume();

                    var arguments = new List<Expression>();
                    if (lexer.Current.Symbol != Symbol.RightParen)
                        arguments = ExpressionList();

                    lexer.Expect(Symbol.RightParen);
                    return new Arguments.Normal(arguments);

                case Symbol.LeftBrace:
                    return new Arguments.Table(Table());

                case Symbol.String:
                    var str = new Expression.String(lexer.ExpectLexeme(Symbol.String));
                    return new Arguments.String(str);

                default:
                    throw new LuaSyntaxException(input, ExceptionMessage.UNEXPECTED_SYMBOL, lexer.Current.Symbol);
            }
        }