protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { generator.WriteBlankLineBeforeEnteringBlock(); generator.WriteLine(TokenType.Keyword, "do"); if (Statements.Count > 0) { generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); Statements.ReserveLocals(generator, default(CodeStatementEmitOptions)); Statements.Generate(generator, default(CodeStatementEmitOptions)); generator.EnterLocalScope(); generator.Indent--; generator.WriteMiddleClosingBrace(true); } else { generator.WriteEmptyBlock(true); } generator.Write(TokenType.Keyword, "while"); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, '('); Condition.Generate(generator); generator.WriteLine(TokenType.Punctuation, ");"); }
protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { generator.WriteBlankLineBeforeEnteringBlock(); generator.Write(TokenType.Keyword, "try"); generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); TryStatements.ReserveLocals(generator, default(CodeStatementEmitOptions)); TryStatements.Generate(generator, default(CodeStatementEmitOptions)); generator.ExitLocalScope(); generator.Indent--; foreach (var catchClause in CatchClauses) { generator.WriteMiddleClosingBrace(); generator.Write(TokenType.Keyword, "catch"); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, '('); catchClause.CatchExceptionType.Generate(generator); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.Identifier, catchClause.LocalName); generator.Write(TokenType.Punctuation, ')'); generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); generator.ReserveLocal(catchClause.LocalName); catchClause.Statements.ReserveLocals(generator, default(CodeStatementEmitOptions)); catchClause.Statements.Generate(generator, default(CodeStatementEmitOptions)); generator.ExitLocalScope(); generator.Indent--; } if (FinallyStatements.Count > 0) { generator.WriteMiddleClosingBrace(); generator.Write(TokenType.Keyword, "finally"); generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); FinallyStatements.ReserveLocals(generator, default(CodeStatementEmitOptions)); FinallyStatements.Generate(generator, default(CodeStatementEmitOptions)); generator.ExitLocalScope(); generator.Indent--; } generator.WriteClosingBrace(); }