Token de expresión regular antlrV3
-
19-09-2019 - |
Pregunta
¿Puedo escribir una regla en la que el token inicial sea en parte fijo y en parte genérico?
rule: ID '=' NUMBER
;
ID: (A.. Z | a.. Z) +
NUMBER: (0 .. 9) +
Pero solo si el ID del token tiene el formato var* (var es fijo)
Gracias
Solución
¿Quieres decir esto?
// 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 cualquier manera:cuando sea posible, hazlo NO Utilice una gramática lexer estricta para sus mensajes de error.Ellos son Más lento y completamente ilegible para los usuarios.Deberías analizar ID
en forma relajada y luego verifique más adelante si está exactamente en la forma correcta.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow