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)?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top