1
0
mirror of https://github.com/twiglet/cs2j.git synced 2025-01-18 13:15:17 +01:00

wrap types

This commit is contained in:
Kevin Glynn 2010-11-24 10:28:54 +01:00
parent 1884447120
commit 80d4d0685d
3 changed files with 22 additions and 42 deletions

View File

@ -439,18 +439,15 @@ type_arguments returns [List<string> tyargs]
t1=type { $tyargs.Add($t1.thetext); } (',' tn=type { $tyargs.Add($tn.thetext); })* ; t1=type { $tyargs.Add($t1.thetext); } (',' tn=type { $tyargs.Add($tn.thetext); })* ;
type returns [string 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) 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; }) (('*' { $thetext += "*"; })+ | '?' { $thetext += "?"; }) | ((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; }) | (p3=predefined_type { $thetext = $p3.thetext; } | tn3=type_name { $thetext = $tn3.thetext; }) -> ^(TYPE $p3? $tn3?)
| 'void' { $thetext = "System.Void"; } ('*' { $thetext += "*"; })+ | v='void' { $thetext = "System.Void"; } (s+='*' { $thetext += "*"; })+ -> ^(TYPE $v $s+)
; ;
non_nullable_type: non_nullable_type:
(predefined_type | type_name) type
( rank_specifiers '*'* ;
| ('*'+)?
)
| 'void' '*'+ ;
non_array_type: non_array_type:
type; type;
array_type: array_type:
@ -857,7 +854,7 @@ constructor_constraint:
'new' '(' ')' ; 'new' '(' ')' ;
return_type: return_type:
type type
| 'void'; | v='void' -> ^(TYPE $v);
formal_parameter_list: formal_parameter_list:
formal_parameter (',' formal_parameter)* ; formal_parameter (',' formal_parameter)* ;
formal_parameter: formal_parameter:
@ -1106,6 +1103,7 @@ selection_statement:
| switch_statement ; | switch_statement ;
if_statement: if_statement:
// else goes with closest if // 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)? 'if' '(' boolean_expression ')' embedded_statement (('else') => else_statement)?
; ;
else_statement: else_statement:

View File

@ -351,28 +351,21 @@ type
List<string> stars = new List<string>(); List<string> stars = new List<string>();
string opt = null; 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 }) ^(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 })
| ((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 })
; ;
non_nullable_type: non_nullable_type:
(predefined_type | type_name) type -> { $type.st } ;
( rank_specifiers '*'*
| ('*'+)?
)
| 'void' '*'+ ;
non_array_type: non_array_type:
type; type -> { $type.st } ;
array_type: array_type:
type; type -> { $type.st } ;
unmanaged_type: unmanaged_type:
type; type -> { $type.st } ;
class_type: class_type:
type; type -> { $type.st } ;
pointer_type: pointer_type:
type; type -> { $type.st } ;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
@ -711,8 +704,7 @@ type_variable_name:
//constructor_constraint: //constructor_constraint:
// 'new' '(' ')' ; // 'new' '(' ')' ;
return_type: return_type:
type -> { $type.st } type -> { $type.st } ;
| 'void' -> string(payload={"void"});
formal_parameter_list: formal_parameter_list:
formal_parameter (',' formal_parameter)* ; formal_parameter (',' formal_parameter)* ;
formal_parameter: formal_parameter:
@ -936,7 +928,7 @@ local_variable_declaration:
local_variable_type: local_variable_type:
('var') => 'var' ('var') => 'var'
| ('dynamic') => 'dynamic' | ('dynamic') => 'dynamic'
| type ; | type -> { $type.st } ;
local_variable_declarators: local_variable_declarators:
local_variable_declarator (',' local_variable_declarator)* ; local_variable_declarator (',' local_variable_declarator)* ;
local_variable_declarator: local_variable_declarator:

View File

@ -290,18 +290,9 @@ type_arguments:
type (',' type)* ; type (',' type)* ;
type: type:
((predefined_type | type_name) rank_specifiers) => (predefined_type | type_name) rank_specifiers '*'* ^(TYPE (predefined_type | type_name) rank_specifiers '*'* '?'?);
| ((predefined_type | type_name) ('*'+ | '?')) => (predefined_type | type_name) ('*'+ | '?')
| (predefined_type | type_name)
| 'void' '*'+
;
non_nullable_type: non_nullable_type:
(predefined_type | type_name) type;
( rank_specifiers '*'*
| ('*'+)?
)
| 'void' '*'+ ;
non_array_type: non_array_type:
type; type;
array_type: array_type:
@ -667,8 +658,7 @@ type_variable_name:
constructor_constraint: constructor_constraint:
'new' '(' ')' ; 'new' '(' ')' ;
return_type: return_type:
type type ;
| 'void';
formal_parameter_list: formal_parameter_list:
formal_parameter (',' formal_parameter)* ; formal_parameter (',' formal_parameter)* ;
formal_parameter: formal_parameter: