espressione regolare antlrV3 gettone
-
19-09-2019 - |
Domanda
Posso scrivere una regola in cui il token iniziale è in parte fissa e in parte generica?
rule: ID '=' NUMBER
;
ID: (A.. Z | a.. Z) +
NUMBER: (0 .. 9) +
Ma solo se l'ID token è nella forma var * (var è fisso)
Grazie
Soluzione
Vuoi dire questo?
// 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')+
;
In entrambi i casi : quando possibile, fare non utilizzare una rigorosa grammatica lexer per i vostri messaggi di errore. Essi sono più lento e completamente illeggibile per gli utenti . Si dovrebbe analizzare ID
in una forma rilassata, quindi verificare in seguito se è esattamente nella forma corretta.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow