From 80d4d0685df5b61d8d0de3b08f589e205841807c Mon Sep 17 00:00:00 2001 From: Kevin Glynn Date: Wed, 24 Nov 2010 10:28:54 +0100 Subject: [PATCH] wrap types --- .../antlr3/src/cs2j/CSharp/JavaMaker.g | 22 +++++++--------- .../antlr3/src/cs2j/CSharp/JavaPrettyPrint.g | 26 +++++++------------ .../antlr3/src/cs2j/CSharp/NetMaker.g | 16 +++--------- 3 files changed, 22 insertions(+), 42 deletions(-) diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g index 032db1c..d29bf0b 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g @@ -439,18 +439,15 @@ type_arguments returns [List tyargs] t1=type { $tyargs.Add($t1.thetext); } (',' tn=type { $tyargs.Add($tn.thetext); })* ; type returns [string thetext]: - ((predefined_type | type_name) rank_specifiers) => (p1=predefined_type { $thetext = $p1.thetext; } | tn1=type_name { $thetext = $tn1.thetext; }) rs=rank_specifiers { $thetext += $rs.text; } ('*' { $thetext += "*"; })* - | ((predefined_type | type_name) ('*'+ | '?')) => (p2=predefined_type { $thetext = $p2.thetext; } | tn2=type_name { $thetext = $tn2.thetext; }) (('*' { $thetext += "*"; })+ | '?' { $thetext += "?"; }) - | (p3=predefined_type { $thetext = $p3.thetext; } | tn3=type_name { $thetext = $tn3.thetext; }) - | 'void' { $thetext = "System.Void"; } ('*' { $thetext += "*"; })+ - ; + ((predefined_type | type_name) rank_specifiers) => (p1=predefined_type { $thetext = $p1.thetext; } | tn1=type_name { $thetext = $tn1.thetext; }) rs=rank_specifiers { $thetext += $rs.text; } (s1+='*' { $thetext += "*"; })* -> ^(TYPE $p1? $tn1? $rs $s1*) + | ((predefined_type | type_name) ('*'+ | '?')) => (p2=predefined_type { $thetext = $p2.thetext; } | tn2=type_name { $thetext = $tn2.thetext; }) ((s2+='*' { $thetext += "*"; })+ | o2='?' { $thetext += "?"; }) -> ^(TYPE $p2? $tn2? $s2* $o2?) + | (p3=predefined_type { $thetext = $p3.thetext; } | tn3=type_name { $thetext = $tn3.thetext; }) -> ^(TYPE $p3? $tn3?) + | v='void' { $thetext = "System.Void"; } (s+='*' { $thetext += "*"; })+ -> ^(TYPE $v $s+) + ; non_nullable_type: - (predefined_type | type_name) - ( rank_specifiers '*'* - | ('*'+)? - ) - | 'void' '*'+ ; - + type + ; + non_array_type: type; array_type: @@ -857,7 +854,7 @@ constructor_constraint: 'new' '(' ')' ; return_type: type - | 'void'; + | v='void' -> ^(TYPE $v); formal_parameter_list: formal_parameter (',' formal_parameter)* ; formal_parameter: @@ -1106,6 +1103,7 @@ selection_statement: | switch_statement ; if_statement: // else goes with closest if + // i='if' '(' boolean_expression ')' embedded_statement (('else') => else_statement)? -> ^(IF[$i.Token] boolean_expression embedded_statement else_statement?) 'if' '(' boolean_expression ')' embedded_statement (('else') => else_statement)? ; else_statement: diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g index 2d5f354..9f65886 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g @@ -351,28 +351,21 @@ type List stars = new List(); string opt = null; }: - ((predefined_type | type_name) rank_specifiers) => (t1p=predefined_type {nm=$t1p.st;} | t1t=type_name {nm=$t1t.st;} ) rank_specifiers ('*' { stars.Add("*"); })* -> type(name={ nm }, stars={ stars }, rs={ $rank_specifiers.st }) - | ((predefined_type | type_name) ('*'+ | '?')) => (t2p=predefined_type {nm=$t2p.st;} | t2t=type_name {nm=$t2t.st;} ) (('*' { stars.Add("*"); })+ | '?' { opt = "?"; }) -> type(name={ nm }, stars={ stars }, opt={ opt }) - | (t3p=predefined_type {nm=$t3p.st;} | t3t=type_name {nm=$t3t.st;} ) -> type(name={ nm }) - | 'void' ('*' { stars.Add("*"); })+ -> type(name={ "void" }, stars={ stars }) + ^(TYPE (tp=predefined_type {nm=$tp.st;} | tn=type_name {nm=$tn.st;}) rank_specifiers ('*' { stars.Add("*");})* ('?' { opt = "?";} )?) -> type(name={ nm }, stars={ stars }, rs={ $rank_specifiers.st }, opt={ opt }) ; non_nullable_type: - (predefined_type | type_name) - ( rank_specifiers '*'* - | ('*'+)? - ) - | 'void' '*'+ ; + type -> { $type.st } ; non_array_type: - type; + type -> { $type.st } ; array_type: - type; + type -> { $type.st } ; unmanaged_type: - type; + type -> { $type.st } ; class_type: - type; + type -> { $type.st } ; pointer_type: - type; + type -> { $type.st } ; /////////////////////////////////////////////////////// @@ -711,8 +704,7 @@ type_variable_name: //constructor_constraint: // 'new' '(' ')' ; return_type: - type -> { $type.st } - | 'void' -> string(payload={"void"}); + type -> { $type.st } ; formal_parameter_list: formal_parameter (',' formal_parameter)* ; formal_parameter: @@ -936,7 +928,7 @@ local_variable_declaration: local_variable_type: ('var') => 'var' | ('dynamic') => 'dynamic' - | type ; + | type -> { $type.st } ; local_variable_declarators: local_variable_declarator (',' local_variable_declarator)* ; local_variable_declarator: diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g index 47eef45..60abe50 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g @@ -290,18 +290,9 @@ type_arguments: type (',' type)* ; type: - ((predefined_type | type_name) rank_specifiers) => (predefined_type | type_name) rank_specifiers '*'* - | ((predefined_type | type_name) ('*'+ | '?')) => (predefined_type | type_name) ('*'+ | '?') - | (predefined_type | type_name) - | 'void' '*'+ - ; + ^(TYPE (predefined_type | type_name) rank_specifiers '*'* '?'?); non_nullable_type: - (predefined_type | type_name) - ( rank_specifiers '*'* - | ('*'+)? - ) - | 'void' '*'+ ; - + type; non_array_type: type; array_type: @@ -667,8 +658,7 @@ type_variable_name: constructor_constraint: 'new' '(' ')' ; return_type: - type - | 'void'; + type ; formal_parameter_list: formal_parameter (',' formal_parameter)* ; formal_parameter: