J'ai cette grammaire simple pour une syntaxe C#. Je n'arrive pas à trouver un moyen de séparer les champs et les méthodes. Tous les exemples que j'ai vus pour l'analyse de C# combinent des champs et des méthodes dans la même règle. Je voudrais les séparer car mon synatx est assez simple.antlr grammaire plusieurs alternatives
grammar test;
options
{
language =CSharp2;
k = 3;
output = AST;
}
SEMI : ';' ;
LCURLY : '{' ;
RCURLY : '}' ;
LPAREN : '(' ;
RPAREN : ')' ;
DOT :'.';
IDENTIFIER
: ('a'..'z' | 'A'..'Z' | '_')
('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*
;
namespaceName
: IDENTIFIER (DOT IDENTIFIER)*
;
classDecl
: 'class' IDENTIFIER LCURLY (fieldDecl | methodDecl)* RCURLY
;
fieldDecl
: namespaceName IDENTIFIER SEMI;
methodDecl
: namespaceName IDENTIFIER LPAREN RPAREN SEMI;
Je finis toujours par l'esprit cet avertissement
Decision can match input such as "IDENTIFIER DOT IDENTIFIER" using multiple alternatives: 1, 2
Je ne connais pas très bien C#, et la description "syntaxe C# like" n'est pas très précise. Pourriez-vous poster quelques exemples de sources que vous allez analyser? –