¿Hay una lista de palabras reservadas en las gramáticas ANTLR?
-
10-07-2019 - |
Pregunta
Recientemente creé una regla de analizador ANTLR3
options : foo bar;
que no se compiló y me llevó un tiempo descubrir que options
era una palabra reservada (AntlrWorks indicó un error, pero no por qué). ¿Hay una lista de palabras reservadas en ANTLR y hay mejores prácticas en las reglas de nombres (que podrían ayudar a evitar esto)?
Solución
Las palabras reservadas de ANTLR v3 son:
Keyword | Description ---------+-------------------------------------------------------- scope | Dynamically-scoped attribute fragment | lexer rule is a helper rule, not real token for parser lexer | grammar type tree | grammar type parser | grammar type grammar | grammar header returns | rule return value(s) throws | rule throws exception(s) catch | catch rule exceptions finally | do this no matter what options | grammar or rule options tokens | can add tokens with this; usually imaginary tokens import | import grammar(s)
Ver: https://web.archive.org/web/20120314155217/http://www.antlr.org/wiki/display/ANTLR3/ANTLR+Cheat+Sheet (al final de la página)
No sé de una convención de nomenclatura w.r.t. reglas del analizador (aparte de que deberían comenzar con una minúscula, lo cual no es una convención, por supuesto ...).
Otros consejos
Usar las palabras reservadas de su idioma de destino también puede causar problemas.
Pasé un día tratando de descubrir por qué mi gramática no funcionaría solo para darme cuenta de que estaba enredado por el " enum " regla en mi gramática que había llamado " enum " ;.
Esto puede o no ser un problema dependiendo del idioma de destino. Estaba usando el objetivo de Java predeterminado, y ciertamente lo era, así que si ese es el caso, también debería consultar la lista de palabras clave reservadas para su idioma de destino.