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); })* ;
|
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:
|
||||||
|
@ -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:
|
||||||
|
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user