antlrV3 jeton d'expression régulière
-
19-09-2019 - |
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
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