ANTLR4基础设计语法
写在之前
对于ANTLR的.g4文件来说,它的格式一般如下:
//xx.g4
grammar xx
文法1:
文法2:
文法...
词法规则
词法1:
词法2:
...
注意的几点:
文件名
和grammar关键字后跟的语法名
应该一致。- 文法规则和词法规则可以同时存在一个文件中,但文法以
小写
开头,词法以大写
开头。 - 我们在构建一个语法文件时,一般是先考虑文法,再考虑词法。就像是我们造句,先会考虑句子的结构,再往里面填词。但是实际语法分析的过程是:
输入流
先经过词法分析器
生成匹配的词法符号流
,词法符号流经过语法分析器
生成匹配的语法结构
。
语言模式
我们首先介绍之前的例子中已经接触到的4种语言模式:序列、选择、词法符号依赖、嵌套。
随后介绍ANTLR4如何处理优先级、左递归、结合性问题。
序列
在编程语言中,常常出现一列元素的指令,下面一个例子再经典不过:
- file文法规则中,我们采用了
\n
作为这条序列规则的终止符
。 - row文法规则中,我们采用了
,
作为这条序列规则的分隔符
。 - 这种
标识符 : ...;
的方式就是经典的文法序列。