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); })* ;
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:

View File

@ -351,28 +351,21 @@ type
List<string> stars = new List<string>();
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:

View File

@ -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: