From 81c3d13cf242c6e1bae6d5842d73f3d8054d382f Mon Sep 17 00:00:00 2001 From: Kevin Glynn Date: Mon, 6 Dec 2010 19:56:10 +0100 Subject: [PATCH] emit braces for method bodies when appropriate --- .../antlr3/src/cs2j/CSharp/JavaPrettyPrint.g | 16 ++++++++++------ .../antlr3/src/cs2j/bin/Debug/templates/java.stg | 10 +++++++--- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g index d6886f4..6e78298 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g @@ -145,7 +145,7 @@ class_member_declaration: ^(CONST attributes? modifiers? type constant_declarators) | ^(EVENT attributes? modifiers? event_declaration) | ^(METHOD attributes? modifiers? type member_name type_parameter_constraints_clauses? type_parameter_list[$type_parameter_constraints_clauses.tpConstraints]? formal_parameter_list? method_body) - -> method(modifiers={$modifiers.st}, type={$type.st}, name={ $member_name.st }, typeparams = { $type_parameter_list.st }, params={ $formal_parameter_list.st }, body={ $method_body.st }) + -> method(modifiers={$modifiers.st}, type={$type.st}, name={ $member_name.st }, typeparams = { $type_parameter_list.st }, params={ $formal_parameter_list.st }, bodyIsSemi = { $method_body.isSemi }, body={ $method_body.st }) // | ^(METHOD attributes? modifiers? type method_declaration) -> method(modifiers={$modifiers.st}, type={$type.st}, method={$method_declaration.st}) | ^(INTERFACE attributes? modifiers? interface_declaration[$modifiers.st]) | ^(CLASS attributes? modifiers? class_declaration[$modifiers.st]) @@ -467,9 +467,13 @@ pointer_type: /////////////////////////////////////////////////////// // Statement Section /////////////////////////////////////////////////////// -block: - ';' - | '{' statement_list? '}'; +block returns [bool isSemi] +@init { + $isSemi = false; +}: + ';' { $isSemi = true; } -> + | '{' s+=statement* '}' -> statement_list(statements = { $s }); + statement_list: statement+ ; @@ -722,8 +726,8 @@ variable_declarator: //method_header: // ^(METHOD_HEADER member_name type_parameter_constraints_clauses? type_parameter_list[$type_parameter_constraints_clauses.tpConstraints]? formal_parameter_list?) // -> method_header(name={ $member_name.st }, typeparams = { $type_parameter_list.st }, params={ $formal_parameter_list.st }); -method_body: - block -> { $block.st }; +method_body returns [bool isSemi]: + block { $isSemi = $block.isSemi; } -> { $block.st }; member_name: t+=type_or_generic ('.' t+=type_or_generic)* -> dotlist(items = { $t }) ; diff --git a/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg b/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg index 79094b5..67dc750 100644 --- a/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg +++ b/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg @@ -53,10 +53,10 @@ class_member(comments, member) ::= << >> -method(modifiers, typeparams, type, name, params, exception="Throwable", body) ::= << - () throws {; +method(modifiers, typeparams, type, name, params, exception="Throwable", bodyIsSemi, body) ::= << + () throws {; -} +} >> field(modifiers, type, field, comments, init) ::= " ;" @@ -74,6 +74,10 @@ fixed_parameter(mod,type,name,def) ::= << identifier(id, id2) ::= "::" +statement_list(statements) ::= << + +>> + // ******* ENUMS *********** enum(modifiers,comments, attributes, name, body) ::= <<