mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
wrap types
This commit is contained in:
parent
1884447120
commit
80d4d0685d
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user