mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
method headers, elide virtual and override keywords
This commit is contained in:
parent
cdecbce4c0
commit
4b761a4410
@ -177,7 +177,7 @@ modifiers:
|
|||||||
modifier+ ;
|
modifier+ ;
|
||||||
modifier:
|
modifier:
|
||||||
'new' | 'public' | 'protected' | 'private' | 'internal' -> /* translate to package-private */| 'unsafe' -> | 'abstract' | 'sealed' -> FINAL["final"] | 'static'
|
'new' | 'public' | 'protected' | 'private' | 'internal' -> /* translate to package-private */| 'unsafe' -> | 'abstract' | 'sealed' -> FINAL["final"] | 'static'
|
||||||
| 'readonly' -> /* no equivalent in C# (this is like a const that can be initialized separately in the constructor) */ | 'volatile' | 'extern' | 'virtual' | 'override';
|
| 'readonly' -> /* no equivalent in C# (this is like a const that can be initialized separately in the constructor) */ | 'volatile' | 'extern' | 'virtual' -> | 'override' -> /* not in Java,maybe convert to override annotation */;
|
||||||
|
|
||||||
class_member_declaration:
|
class_member_declaration:
|
||||||
a=attributes?
|
a=attributes?
|
||||||
@ -734,10 +734,16 @@ variable_declarator:
|
|||||||
method_declaration:
|
method_declaration:
|
||||||
method_header method_body ;
|
method_header method_body ;
|
||||||
method_header:
|
method_header:
|
||||||
member_name '(' formal_parameter_list? ')' type_parameter_constraints_clauses? ;
|
member_name type_parameter_list? '(' formal_parameter_list? ')' type_parameter_constraints_clauses?
|
||||||
|
-> ^(METHOD_HEADER member_name type_parameter_constraints_clauses? type_parameter_list? formal_parameter_list?);
|
||||||
method_body:
|
method_body:
|
||||||
block ;
|
block ;
|
||||||
member_name returns [string name, List<String> tyargs]:
|
member_name :
|
||||||
|
type_or_generic ('.' type_or_generic)*
|
||||||
|
// keving [interface_type.identifier] | type_name '.' identifier
|
||||||
|
;
|
||||||
|
|
||||||
|
member_name_orig returns [string name, List<String> tyargs]:
|
||||||
qid { $name = $qid.name; $tyargs = $qid.tyargs; } ; // IInterface<int>.Method logic added.
|
qid { $name = $qid.name; $tyargs = $qid.tyargs; } ; // IInterface<int>.Method logic added.
|
||||||
|
|
||||||
///////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////
|
||||||
@ -876,7 +882,7 @@ return_type:
|
|||||||
type
|
type
|
||||||
| v='void' -> ^(TYPE[$v.token, "TYPE"] $v);
|
| v='void' -> ^(TYPE[$v.token, "TYPE"] $v);
|
||||||
formal_parameter_list:
|
formal_parameter_list:
|
||||||
formal_parameter (',' formal_parameter)* ;
|
formal_parameter (',' formal_parameter)* -> ^(PARAMS formal_parameter+);
|
||||||
formal_parameter:
|
formal_parameter:
|
||||||
attributes? (fixed_parameter | parameter_array)
|
attributes? (fixed_parameter | parameter_array)
|
||||||
| '__arglist'; // __arglist is undocumented, see google
|
| '__arglist'; // __arglist is undocumented, see google
|
||||||
|
@ -144,7 +144,7 @@ modifier
|
|||||||
class_member_declaration:
|
class_member_declaration:
|
||||||
^(CONST attributes? modifiers? type constant_declarators)
|
^(CONST attributes? modifiers? type constant_declarators)
|
||||||
| ^(EVENT attributes? modifiers? event_declaration)
|
| ^(EVENT attributes? modifiers? event_declaration)
|
||||||
| ^(METHOD attributes? modifiers? type method_declaration)
|
| ^(METHOD attributes? modifiers? type method_declaration) -> method(modifiers={$modifiers.st}, type={$type.st}, method={$method_declaration.st})
|
||||||
| ^(INTERFACE attributes? modifiers? interface_declaration[$modifiers.st])
|
| ^(INTERFACE attributes? modifiers? interface_declaration[$modifiers.st])
|
||||||
| ^(CLASS attributes? modifiers? class_declaration[$modifiers.st])
|
| ^(CLASS attributes? modifiers? class_declaration[$modifiers.st])
|
||||||
| ^(PROPERTY attributes? modifiers? type property_declaration)
|
| ^(PROPERTY attributes? modifiers? type property_declaration)
|
||||||
@ -421,12 +421,12 @@ qid: // qualified_identifier v2
|
|||||||
| qid_start -> { $qid_start.st }
|
| qid_start -> { $qid_start.st }
|
||||||
;
|
;
|
||||||
qid_start:
|
qid_start:
|
||||||
predefined_type
|
predefined_type -> { $predefined_type.st }
|
||||||
| (identifier generic_argument_list) => identifier generic_argument_list
|
| (identifier generic_argument_list) => identifier generic_argument_list -> template(id={ $identifier.st }, args={ $generic_argument_list.st }) "<id><args>"
|
||||||
// | 'this'
|
// | 'this'
|
||||||
// | 'base'
|
// | 'base'
|
||||||
| identifier ('::' identifier)?
|
| i1=identifier ('::' i2=identifier)? -> identifier(id={ $i1.st }, id2={ $i2.st })
|
||||||
| literal
|
| literal -> { $literal.st }
|
||||||
; // 0.ToString() is legal
|
; // 0.ToString() is legal
|
||||||
|
|
||||||
|
|
||||||
@ -715,13 +715,19 @@ variable_declarator:
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////
|
||||||
method_declaration:
|
method_declaration:
|
||||||
method_header method_body ;
|
method_header method_body -> method_declaration(header={$method_header.st}, body={$method_body.st}) ;
|
||||||
method_header:
|
method_header:
|
||||||
member_name '(' formal_parameter_list? ')' type_parameter_constraints_clauses? ;
|
^(METHOD_HEADER member_name type_parameter_constraints_clauses? type_parameter_list[$type_parameter_constraints_clauses.tpConstraints]? formal_parameter_list?)
|
||||||
|
-> method_header(name={ $member_name.st }, typeparams = { $type_parameter_constraints_clauses.st }, params={ $formal_parameter_list.st });
|
||||||
method_body:
|
method_body:
|
||||||
block ;
|
block -> { $block.st };
|
||||||
member_name:
|
member_name:
|
||||||
qid ; // IInterface<int>.Method logic added.
|
t+=type_or_generic ('.' t+=type_or_generic)* -> template(items = { $t }) "<items; separator=\".\">"
|
||||||
|
;
|
||||||
|
// keving: missing interface_type.identifier
|
||||||
|
// identifier -> { $identifier.st }; // IInterface<int>.Method logic added.
|
||||||
|
//member_name:
|
||||||
|
// qid -> { $qid.st }; // IInterface<int>.Method logic added.
|
||||||
|
|
||||||
///////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////
|
||||||
property_declaration:
|
property_declaration:
|
||||||
@ -811,7 +817,7 @@ type_variable_name:
|
|||||||
return_type:
|
return_type:
|
||||||
type -> { $type.st } ;
|
type -> { $type.st } ;
|
||||||
formal_parameter_list:
|
formal_parameter_list:
|
||||||
formal_parameter (',' formal_parameter)* ;
|
^(PARAMS formal_parameter+) ;
|
||||||
formal_parameter:
|
formal_parameter:
|
||||||
attributes? (fixed_parameter | parameter_array)
|
attributes? (fixed_parameter | parameter_array)
|
||||||
| '__arglist'; // __arglist is undocumented, see google
|
| '__arglist'; // __arglist is undocumented, see google
|
||||||
|
@ -597,11 +597,14 @@ variable_declarator:
|
|||||||
method_declaration:
|
method_declaration:
|
||||||
method_header method_body ;
|
method_header method_body ;
|
||||||
method_header:
|
method_header:
|
||||||
member_name '(' formal_parameter_list? ')' type_parameter_constraints_clauses? ;
|
^(METHOD_HEADER member_name type_parameter_constraints_clauses? type_parameter_list? formal_parameter_list?);
|
||||||
method_body:
|
method_body:
|
||||||
block ;
|
block ;
|
||||||
member_name:
|
member_name:
|
||||||
qid ; // IInterface<int>.Method logic added.
|
type_or_generic ('.' type_or_generic)*
|
||||||
|
;
|
||||||
|
// keving: missing interface_type.identifier
|
||||||
|
//identifier ; // IInterface<int>.Method logic added.
|
||||||
|
|
||||||
///////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////
|
||||||
property_declaration:
|
property_declaration:
|
||||||
@ -682,7 +685,7 @@ constructor_constraint:
|
|||||||
return_type:
|
return_type:
|
||||||
type ;
|
type ;
|
||||||
formal_parameter_list:
|
formal_parameter_list:
|
||||||
formal_parameter (',' formal_parameter)* ;
|
^(PARAMS formal_parameter+) ;
|
||||||
formal_parameter:
|
formal_parameter:
|
||||||
attributes? (fixed_parameter | parameter_array)
|
attributes? (fixed_parameter | parameter_array)
|
||||||
| '__arglist'; // __arglist is undocumented, see google
|
| '__arglist'; // __arglist is undocumented, see google
|
||||||
|
@ -27,6 +27,8 @@ tokens {
|
|||||||
CONVERSION_OPERATOR;
|
CONVERSION_OPERATOR;
|
||||||
CONSTRUCTOR;
|
CONSTRUCTOR;
|
||||||
DESTRUCTOR;
|
DESTRUCTOR;
|
||||||
|
METHOD_HEADER;
|
||||||
|
PARAMS;
|
||||||
|
|
||||||
MONOPLUS;
|
MONOPLUS;
|
||||||
MONOMINUS;
|
MONOMINUS;
|
||||||
|
@ -53,7 +53,26 @@ class_member(comments, member) ::= <<
|
|||||||
<member>
|
<member>
|
||||||
>>
|
>>
|
||||||
|
|
||||||
field(modifiers, type, field, comments, init) ::= "<comments><modifiers(modifiers)><type> <field><if(init)> = <init><endif>;"
|
method(modifiers, type, field, comments) ::= "<comments><modifiers(modifiers)><type> <method>"
|
||||||
|
|
||||||
|
method_header(name, typeparams, params, exception="Throwable") ::= <<
|
||||||
|
<name><typeparams>(<params; separator=", ">) throws <exception>
|
||||||
|
>>
|
||||||
|
|
||||||
|
method_declaration(header, body) ::= <<
|
||||||
|
<header><if(body)> {<else>;<endif>
|
||||||
|
<body>
|
||||||
|
<if(body)>}<endif>
|
||||||
|
>>
|
||||||
|
|
||||||
|
method_body(body) ::= <<
|
||||||
|
{
|
||||||
|
<body>
|
||||||
|
}
|
||||||
|
>>
|
||||||
|
|
||||||
|
field(modifiers, type, field, comments, init) ::= "<comments><modifiers(modifiers)><type> <field>;"
|
||||||
|
|
||||||
variable_declarators(varinits) ::= "<varinits; separator=\", \">"
|
variable_declarators(varinits) ::= "<varinits; separator=\", \">"
|
||||||
variable_declarator(typename,init) ::= "<typename><if(init)> = <init><endif>"
|
variable_declarator(typename,init) ::= "<typename><if(init)> = <init><endif>"
|
||||||
|
|
||||||
@ -61,6 +80,8 @@ primary_expression_start_parts(start,follows) ::= "<start><follows>"
|
|||||||
|
|
||||||
type_param_constraint(param, constraints) ::= "<param> extends <constraints; separator=\" & \">"
|
type_param_constraint(param, constraints) ::= "<param> extends <constraints; separator=\" & \">"
|
||||||
|
|
||||||
|
identifier(id, id2) ::= "<id><if(id2)>::<id2><endif>"
|
||||||
|
|
||||||
// ******* ENUMS ***********
|
// ******* ENUMS ***********
|
||||||
|
|
||||||
enum(modifiers,comments, attributes, name, body) ::= <<
|
enum(modifiers,comments, attributes, name, body) ::= <<
|
||||||
@ -95,4 +116,4 @@ string(payload) ::= "<payload>"
|
|||||||
|
|
||||||
verbatim_string(payload) ::= <<
|
verbatim_string(payload) ::= <<
|
||||||
"<payload; separator="\" + \n\"">"
|
"<payload; separator="\" + \n\"">"
|
||||||
>>
|
>>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user