Ejemplo n.º 1
0
        public LuaStatement Parse(INextAwareEnumerator <Token> reader, IParserContext context)
        {
            var scope = context.AcquireScope();

            reader.VerifyExpectedToken(Keywords.Do);
            reader.MoveNext();
            var statements = new List <LuaStatement>();

            while (reader.Current.Value != Keywords.End)
            {
                statements.Add(SyntaxParser.ReadStatement(reader, context));
            }
            reader.VerifyExpectedTokenAndMoveNext(Keywords.End);
            context.ReleaseScope(scope);
            return(new DoEndBlock(new StatementBlock(statements)));
        }
Ejemplo n.º 2
0
        public StatementBlock ParseBlock(INextAwareEnumerator <Token> reader, IParserContext context,
                                         out Token terminationToken)
        {
            var statements = new List <LuaStatement>();

            while (!_terminatingTokens.Contains(reader.Current.Value))
            {
                statements.Add(SyntaxParser.ReadStatement(reader, context));
                while (string.IsNullOrEmpty(reader.Current.Value) || reader.Current.Value == "\n")
                {
                    reader.MoveNext();
                }
            }
            terminationToken = reader.Current;
            reader.VerifyExpectedTokenAndMoveNext(_terminatingTokens);
            return(new StatementBlock(statements));
        }