Есть ли список зарезервированных слов в грамматиках ANTLR? - PullRequest
4 голосов
/ 30 ноября 2009

Я недавно создал правило синтаксического анализатора ANTLR3

options : foo bar;

, который не компилировался, и мне потребовалось некоторое время, чтобы обнаружить, что options было зарезервированным словом (AntlrWorks указал на ошибку, но не почему). Есть ли в ANTLR список зарезервированных слов и есть ли лучшие практики в правилах именования (которые могут помочь избежать этого)?

Ответы [ 2 ]

6 голосов
/ 30 ноября 2009

Зарезервированные слова ANTLR v3:

    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)

См .: https://web.archive.org/web/20120314155217/http://www.antlr.org/wiki/display/ANTLR3/ANTLR+Cheat+Sheet (в конце страницы)

Не знаю о «соглашении об именах» w.r.t. правила синтаксического анализатора (кроме тех, которые должны начинаться со строчных букв, что, конечно, не является соглашением ...).

3 голосов
/ 17 декабря 2009

Использование зарезервированных слов вашего целевого языка также может вызвать проблемы.

Я потратил день, пытаясь понять, почему моя грамматика не сработает, только чтобы понять, что она испорчена правилом enum в моей грамматике, которую я назвал enum.

Это может быть, а может и не быть проблемой, в зависимости от целевого языка. Я использовал цель Java по умолчанию, и это, безусловно, было так, поэтому в этом случае вам следует проверить список зарезервированных ключевых слов и для вашего целевого языка.

...