diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/TemplateExtracter.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/TemplateExtracter.g index 6e60eca..bbad2e8 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/TemplateExtracter.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/TemplateExtracter.g @@ -221,7 +221,7 @@ primary_expression: primary_expression_start: predefined_type - | (identifier '<') => identifier generic_argument_list + | (identifier generic_argument_list) => identifier generic_argument_list | identifier ('::' identifier)? | 'this' | 'base' @@ -968,9 +968,10 @@ interface_property_declaration [string returnType]: ((InterfaceRepTemplate)$NSContext::currentTypeRep).Properties.Add(propRep); } ; interface_method_declaration [string returnType]: - identifier generic_argument_list? + identifier gal=generic_argument_list? '(' fpl=formal_parameter_list? ')' - { ((InterfaceRepTemplate)$NSContext::currentTypeRep).Methods.Add(new MethodRepTemplate($returnType, $identifier.text, ($generic_argument_list.tyargs.ToArray()), $fpl.paramlist)); } + { MethodRepTemplate meth = new MethodRepTemplate($returnType, $identifier.text, (gal == null ? null : $gal.tyargs.ToArray()), $fpl.paramlist); + ((InterfaceRepTemplate)$NSContext::currentTypeRep).Methods.Add(meth); } type_parameter_constraints_clauses? ';' ; interface_event_declaration: //attributes? 'new'? diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g index 54f421e..95c0e1c 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g @@ -135,7 +135,7 @@ primary_expression: primary_expression_start: predefined_type - | (identifier '<') => identifier generic_argument_list + | (identifier generic_argument_list) => identifier generic_argument_list | identifier ('::' identifier)? | 'this' | 'base' @@ -1142,7 +1142,7 @@ IDENTIFIER: IdentifierStart IdentifierPart* ; Pragma: // ignore everything after the pragma since the escape's in strings etc. are different - '#' ('pragma' | 'region' | 'endregion' | 'line' | 'warning' | 'error') ~('\n'|'\r')* ('\r' | '\n')+ + '#' TS* ('pragma' | 'region' | 'endregion' | 'line' | 'warning' | 'error') ~('\n'|'\r')* ('\r' | '\n')+ { Skip(); } ; PREPROCESSOR_DIRECTIVE: | PP_CONDITIONAL;