2013-09-12 2 views
0

Я знаю, что для ANTLR3 существует ANTLR3-грамматика, и мне кажется, что дистрибутив ANTLR4 содержит грамматику ANTLR4, написанную в ANTLR3, но есть ли грамматика для ANTLR4, написанная в ANTLR4 сама?Есть ли ANTLR4 грамматика для ANTLR4

ответ

1

В настоящее время официальной грамматики нет, но в рамках ANTLRWorks 2. В этой грамматике определенно отсутствуют некоторые функции отчетности об ошибках, которые находятся в официальной грамматике, и могут незначительно отличаться в поведении.

  • GrammarLexer.g4: Это лексерская грамматика. В грамматике используется опция abstract=true, которая была удалена из официального релиза ANTLR, поэтому грамматика работает только со специальным выпуском 4.1-opt в моей вилке проекта.
  • GrammarLexer.java: Это расширяет сгенерированный AbstractGrammarLexer.java и обеспечивает необходимые реализации emit() и handleBeginArgAction().
  • GrammarParser.g4: Это грамматика синтаксического анализатора. Он также отмечен абстрактом, но в настоящее время не использует никаких функций, которые требует этот вариант, чтобы его можно было удалить. Я включил его для согласованности с кодом, созданным для lexer.
+0

Блестящий, именно то, что мне нужно. Большое спасибо. –

+0

Просто начал играть с грамматиками, и похоже, что после последнего токена в разделе «токенов» есть дополнительный символ запятой (,) как в GrammarLexer.g4, так и в GrammarParser.g4. После удаления этих ANTLR генерируются java-файлы. –

+0

@TorokBalint 4.1-opt release позволяет эту запятую, и я предпочитаю хранить ее, когда у меня есть списки с разделителями, организованные с одним элементом в строке. –

Смежные вопросы