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; }
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); }
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); }
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)); }