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