我知道ANTLR3有一个ANTLR3语法,在我看来,ANTLR4分布包含用ANTLR3编写的ANTLR4语法,但ANTLR4本身是否有ANTLR4的语法?
目前没有官方语法,但有一种语法可以作为ANTLRWorks 2的一部分提供 . 这种语法肯定缺少官方语法中的一些错误报告功能,并且行为可能略有不同 .
GrammarLexer.g4:这是词法分析器语法 . 语法使用 abstract=true 选项,该选项已从官方ANTLR版本中删除,因此语法仅适用于项目分支中的特殊4.1-opt版本 .
abstract=true
GrammarLexer.java:这扩展了生成的 AbstractGrammarLexer.java ,并提供了 emit() 和 handleBeginArgAction() 的必要实现 .
AbstractGrammarLexer.java
emit()
handleBeginArgAction()
GrammarParser.g4:这是解析器语法 . 它也标记为抽象,但目前不使用任何需要此选项的功能,因此可以将其删除 . 我将它包含在与为词法分析器生成的代码的一致性中 .
GitHub上还有一个由Terence Parr亲自撰写 .
https://github.com/antlr/grammars-v4/tree/master/antlr4
2 回答
目前没有官方语法,但有一种语法可以作为ANTLRWorks 2的一部分提供 . 这种语法肯定缺少官方语法中的一些错误报告功能,并且行为可能略有不同 .
GrammarLexer.g4:这是词法分析器语法 . 语法使用
abstract=true
选项,该选项已从官方ANTLR版本中删除,因此语法仅适用于项目分支中的特殊4.1-opt版本 .GrammarLexer.java:这扩展了生成的
AbstractGrammarLexer.java
,并提供了emit()
和handleBeginArgAction()
的必要实现 .GrammarParser.g4:这是解析器语法 . 它也标记为抽象,但目前不使用任何需要此选项的功能,因此可以将其删除 . 我将它包含在与为词法分析器生成的代码的一致性中 .
GitHub上还有一个由Terence Parr亲自撰写 .
https://github.com/antlr/grammars-v4/tree/master/antlr4