private bool ParseBlockStatement(TokenReader reader, out BlockStatement result) { result = null; Token tok = reader.Peek(); Token start = tok; if (!this.Expect(reader, Keyword.Begin)) { return false; } BlockStatement block = new BlockStatement(start); tok = reader.Peek(); while (!tok.Is(Keyword.End)) { Statement statement = null; if (!this.ParseStatement(reader, out statement)) { return false; } if (statement != null) { block.AddStatement(statement); } if (!this.Expect(reader, Keyword.SemiColon)) { return false; } tok = reader.Peek(); } if (!this.Expect(reader, Keyword.End)) { return false; } result = block; return true; }
private bool TryEmitBlockStatement( BlockStatement statement, CompilerContext context, Scope scope, MethodImpl method) { bool failed = false; foreach (Statement s in statement.Statements) { if (!this.TryEmitStatement(s, context, scope, method)) { failed = true; } } return !failed; }