From b3472021d622399305c6158e6c8b25aacbcc76df Mon Sep 17 00:00:00 2001 From: Kevin Glynn Date: Fri, 10 Dec 2010 18:57:37 +0100 Subject: [PATCH] Shovel out comments in more places --- .../antlr3/src/cs2j/CSharp/JavaPrettyPrint.g | 28 +++++++++++-------- .../src/cs2j/bin/Debug/templates/java.stg | 26 +++++++++++------ 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g index 4819150..6885d05 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g @@ -1141,26 +1141,29 @@ embedded_statement returns [bool isSemi, bool isBraces, bool isIf] StringTemplate someText = null; $isBraces = false; $isIf = false; + List preComments = null; }: block { $isSemi = $block.isSemi; $isBraces = !$block.isSemi;} -> { $block.st } - | ^(IF boolean_expression SEP t=embedded_statement e=else_statement?) { $isIf = true; } - -> if(cond= { $boolean_expression.st }, + | ^(IF boolean_expression { preComments = CollectedComments; } SEP t=embedded_statement e=else_statement?) { $isIf = true; } + -> if_template(comments = { preComments }, cond= { $boolean_expression.st }, then = { $t.st }, thensemi = { $t.isSemi }, thenbraces = { $t.isBraces }, else = { $e.st }, elsesemi = { $e.isSemi }, elsebraces = { $e.isBraces }, elseisif = { $e.isIf }) - | ^('switch' expression s+=switch_section*) -> switch(scrutinee = { $expression.st }, sections = { $s }) + | ^('switch' expression { preComments = CollectedComments; } s+=switch_section*) -> switch(comments = { preComments }, scrutinee = { $expression.st }, sections = { $s }) | iteration_statement -> { $iteration_statement.st } // while, do, for, foreach | jump_statement -> { $jump_statement.st } // break, continue, goto, return, throw - | ^('try' b=block catch_clauses? finally_clause?) -> try(block = {$b.st}, blocksemi = {$b.isSemi}, blockbraces = { !$b.isSemi }, - catches = { $catch_clauses.st }, fin = { $finally_clause.st } ) + | ^('try' { preComments = CollectedComments; } b=block catch_clauses? finally_clause?) + -> try(comments = { preComments }, block = {$b.st}, blocksemi = {$b.isSemi}, blockbraces = { !$b.isSemi }, + catches = { $catch_clauses.st }, fin = { $finally_clause.st } ) | checked_statement | unchecked_statement | lock_statement -> { $lock_statement.st } | using_statement | yield_statement - | ^('unsafe' block { someText = %op(); %{someText}.op="unsafe"; %{someText}.post = $block.st; }) - -> unsupported(reason = {"unsafe blocks are not supported"}, text = { someText } ) + | ^('unsafe' { preComments = CollectedComments; } block { someText = %op(); %{someText}.op="unsafe"; %{someText}.post = $block.st; }) + -> unsupported(comments = { preComments }, reason = {"unsafe blocks are not supported"}, text = { someText } ) | fixed_statement - | expression_statement -> op( pre={ $expression_statement.st }, op={ ";" }) // make an expression a statement, need to terminate with semi + | expression_statement { preComments = CollectedComments; } + -> op(comments = { preComments }, pre={ $expression_statement.st }, op={ ";" }) // make an expression a statement, need to terminate with semi ; fixed_statement: 'fixed' '(' pointer_type fixed_pointer_declarators ')' embedded_statement ; @@ -1173,9 +1176,12 @@ fixed_pointer_initializer: expression; labeled_statement: identifier ':' statement ; -declaration_statement: - (local_variable_declaration -> op(pre = { $local_variable_declaration.st }, op = { ";" }) - | local_constant_declaration -> op(pre = { $local_constant_declaration.st }, op = { ";" }) ) ';' ; +declaration_statement +@init { + List preComments = null; +}: + (local_variable_declaration { preComments = CollectedComments; } -> op(comments = { preComments }, pre = { $local_variable_declaration.st }, op = { ";" }) + | local_constant_declaration { preComments = CollectedComments; } -> op(comments = { preComments }, pre = { $local_constant_declaration.st }, op = { ";" }) ) ';' ; local_variable_declaration: local_variable_type local_variable_declarators -> local_variable_declaration(type={ $local_variable_type.st }, decs = { $local_variable_declarators.st } ); local_variable_type: diff --git a/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg b/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg index 28e03fe..464b2cc 100644 --- a/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg +++ b/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg @@ -121,7 +121,8 @@ extends(types) ::= "extends " imps(types) ::= "implements " // ******* STATEMENTS ******* -if(cond,then,thensemi, thenbraces,else, elseisif, elsesemi,elsebraces) ::= << +if_template(comments, cond,then,thensemi, thenbraces,else, elseisif, elsesemi,elsebraces) ::= << + if () @@ -132,22 +133,26 @@ else >> -while(cond,block,blocksemi, blockbraces) ::= << +while(comments,cond,block,blocksemi, blockbraces) ::= << + while () >> -for(init,cond,iter,block,blocksemi, blockbraces) ::= << +for(comments,init,cond,iter,block,blocksemi, blockbraces) ::= << + for (;;) >> -foreach(type,loopid,fromexp,block,blocksemi, blockbraces) ::= << +foreach(comments,type,loopid,fromexp,block,blocksemi, blockbraces) ::= << + for ( : ) >> -try(block,blocksemi, blockbraces, catches, fin) ::= << +try(comments,block,blocksemi, blockbraces, catches, fin) ::= << + try @@ -165,7 +170,8 @@ finally >> -switch(scrutinee, sections) ::= << +switch(comments,scrutinee, sections) ::= << + switch() >> @@ -184,7 +190,8 @@ default_template() ::= << default: >> -lock(exp,block,blocksemi, blockbraces) ::= << +lock(comments,exp,block,blocksemi, blockbraces) ::= << + lock() >> @@ -221,7 +228,10 @@ void() ::= "void" optparens(parens, e) ::= "()" parens(e) ::= "()" rank_specifiers(rs) ::= "" -op(pre,op,post,mkparen,space) ::= "(
)"
+op(comments,pre,op,post,mkparen,space) ::= <<
+
+(
)
+>>
 assign(lhs,lhsparen,assign,rhs,rhsparen) ::= "()  ()"
 generic_args(args) ::= "\<\>"
 parameter(annotation,param) ::=  "/*  */ "