public override LuaStatement Parse(INextAwareEnumerator<Token> reader, IParserContext context)
        {
            var variables = ReadDeclarations(reader);
            foreach (var variable in variables)
                context.CurrentScope.AddVariable(variable);
            reader.VerifyExpectedTokenAndMoveNext(LuaToken.EqualsSign);
            var assignedExpressionParser = new ExpressionListParser();
            var expressions = assignedExpressionParser.Parse(reader, context);

            return new Assignment(variables, expressions, _local);
        }
        public override LuaExpression Parse(INextAwareEnumerator<Token> reader, IParserContext context)
        {
            var name = reader.Current.Value;
            reader.MoveNext();
            reader.VerifyExpectedToken(LuaToken.LeftBracket);

            var parametersParser = new ExpressionListParser();

            var expression = new FunctionCallExpression(name, parametersParser.Parse(reader, context).ToList());
            reader.VerifyExpectedToken(LuaToken.RightBracket);
            return expression;
        }
Esempio n. 3
0
        public LuaExpression Parse(INextAwareEnumerator <Token> reader, IParserContext context)
        {
            var name = reader.Current.Value;

            reader.MoveNext();
            reader.VerifyExpectedTokenAndMoveNext(LuaToken.LeftBracket);

            var parametersParser = new ExpressionListParser();

            var expression = new FunctionCallExpression(name, parametersParser.Parse(reader, context).ToList());

            reader.VerifyExpectedToken(LuaToken.RightBracket);
            return(expression);
        }
Esempio n. 4
0
        public override LuaStatement Parse(INextAwareEnumerator<Token> reader, IParserContext context)
        {
            reader.VerifyExpectedTokenAndMoveNext(Keywords.For);
            var scope = context.AcquireScope();
            reader.VerifyIsIdentifier();
            var forVariableName = reader.GetAndMoveNext();
            reader.VerifyExpectedTokenAndMoveNext(LuaToken.EqualsSign);
            var conditionsParser = new ExpressionListParser();
            var conditions = conditionsParser.Parse(reader, context).ToList();
            reader.VerifyExpectedTokenAndMoveNext(Keywords.Do);

            var statementsParser = new StatementBlockParser(Keywords.End);
            var bodyBlock = statementsParser.ParseBlock(reader, context);
            context.ReleaseScope(scope);
            return new ForStatement(conditions,bodyBlock);
        }
Esempio n. 5
0
        public LuaExpression Parse(INextAwareEnumerator <Token> reader, IParserContext context)
        {
            reader.VerifyExpectedToken(LuaToken.LeftCurlyBrace);
            reader.MoveNext();
            var expressions = Enumerable.Empty <LuaExpression>();

            if (reader.Current.Value != LuaToken.RightCurlyBrace)
            {
                var parser = new ExpressionListParser();
                expressions = parser.Parse(reader, context);
                reader.VerifyExpectedToken(LuaToken.RightCurlyBrace);
                reader.MoveNext();
            }
            else
            {
                reader.VerifyExpectedTokenAndMoveNext(LuaToken.RightCurlyBrace);
            }
            return(new TableInitializerExpression(expressions));
        }