g4文件概览
在深入介绍之前,有必要先给大家了解一下g4文件的结构,以便对如何编写语法规则文件有个全局的认识,我想这是大有禆益的。因为这样我们就可以很清晰地知道需要的东西写在哪里,或者哪些东西是无法加到antlr中的。
grammar Name;
options {...}
import ...;
tokens {...}
@actionName {...}
<<rule1>>
...
<<rule2>>
这是一个完整的antlr语法规则文件,下面一一做出简要声明:
- grammar Name 这是词法跟语法都在同一个文件声明的写法,称之为combined。若要分开,可以使用lexer grammar Name和parser grammar Name。
options 可以是如下四个选项。
superClass:用于生成xxxLexer.java、xxxParser.java的父类
language:目标语句,如java
tokenVocab:toekn词库
TokenLabelType:默认的是antlr的Token类型,这里可以使用自定义的token类,如MyToken。需要配合TokenFactory使用- import 可以导入各个独立的lexer、parser文件,只能用于combined写法。