1

当我从语法文件中生成带有 antlr 的词法分析器时,我注意到它会生成一系列十六进制格式的字符串。

DFA 使用这些字符串来预测我的下一个标记。

这些字符串是什么意思以及它们是如何生成的。

我引用的字符串出现在生成的词法分析器中,如下所示(a 并在构造函数中传递给 DFA):

static final String DFA1_eotS = ....

static final String DFA1_eofS = ....

static final String DFA1_minS = ....

static final String DFA1_maxS = ....

static final String DFA1_acceptS = ....

static final String DFA1_specialS = ....                                                

static final String[] DFA1_transitionS = ....

编辑:

我将开始回答自己的问题以帮助我们开始

acceptS[i] = 一个包含可能标记的标识符的数组(我不知道为什么它包含许多 -1 值)

4

1 回答 1

1

DFA_minS, DFA_maxS我认为是指当它在状态表中移动时它可以落入的字符范围

DFA_transitionS。我认为是状态表

DFA_specialsS我认为与将语义谓词添加到规则和

DFA_acceptS似乎是开关中的一组案例值,用于指定 DFA 正在接受哪个令牌

注意:我仍然想知道这些是否正确以及它们是如何生成的

于 2011-04-06T16:14:39.490 回答