Question

Puis-je écrire une règle où le jeton initial est en partie fixe et en partie générique?

rule: ID '=' NUMBER
      ;

ID: (A.. Z | a.. Z) +

NUMBER: (0 .. 9) +

Mais seulement si l'ID de jeton est sous la forme var * (var est fixé)

Merci

Était-ce utile?

La solution

Voulez-vous dire cela?

// Use this instead of ID in all parser rules that take either token
identifier
    :   VAR_ID | ID
    ;

VAR_ID
    :   'var' ('A'..'Z' | 'a'..'z')*
    ;

ID
    :   ('A'..'Z' | 'a'..'z')+
    ;

De toute façon : lorsque cela est possible, faire PAS utiliser une grammaire lexer stricte pour vos messages d'erreur. Ils sont plus lent et complètement illisible pour les utilisateurs . Vous devez analyser ID sous une forme détendue, puis vérifier plus tard si elle est précisément la forme correcte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top