Compiler construction 在ANTLR中,自动生成的DFA字符串(如EOT、eofS)的含义是什么?它们是如何生成的

Compiler construction 在ANTLR中,自动生成的DFA字符串(如EOT、eofS)的含义是什么?它们是如何生成的,compiler-construction,antlr,lex,antlr3,dfa,Compiler Construction,Antlr,Lex,Antlr3,Dfa,当我从语法文件生成一个带有antlr的lexer时,我注意到它生成了一系列十六进制格式的字符串 DFA利用这些字符串来预测我的下一个令牌 这些字符串是什么意思?它们是如何生成的 我引用的字符串将出现在生成的lexer中,如下所示(a并传递给构造函数中的DFA): 编辑: 我将开始回答自己的问题,让我们开始 acceptS[i]=一个数组,其中包含可能的令牌的标识符(我不知道为什么它包含许多-1值)DFA_minS,DFA_maxS我认为它指的是在状态表中移动时可以介于之间的字符范围 DFA_转换

当我从语法文件生成一个带有antlr的lexer时,我注意到它生成了一系列十六进制格式的字符串

DFA利用这些字符串来预测我的下一个令牌

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

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

编辑:

我将开始回答自己的问题,让我们开始


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

DFA_minS,DFA_maxS我认为它指的是在状态表中移动时可以介于之间的字符范围

DFA_转换。我想这是状态表

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

DFA_acceptS似乎是开关中的一组大小写值,指定DFA接受哪个令牌


注意:我仍然想知道这些是否正确,以及它们是如何生成的,我认为它们指的是在状态表中移动时可以介于之间的字符范围

DFA_转换。我想这是状态表

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

DFA_acceptS似乎是开关中的一组大小写值,指定DFA接受哪个令牌


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

不确定您确切的意思是什么字符串,但您是出于好奇而问的,还是您在试图解决实际问题?我昨天确实在编辑中提交了字符串,但它们没有显示,我正在重试,但仍然失败(请求的页面未找到).但是,你是出于好奇才这样问的吗,“还是你在试图解决一个实际问题?”巴特·基尔斯-很抱歉我有更多的回应,但由于某种原因,sof一直把我排除在外question@BartKiers-我正在考虑为antlr创建一个DFA,它使用levenshtein分布来预测令牌,因为我不能保证我所有的令牌都正确拼写。你对此有什么建议吗?上周我问了这个问题(Prob没有帮助),但我在解决AntlR的问题方面取得了一些不错的进展。我不知道你到底指的是什么字符串,但你问这个问题是出于好奇,还是想解决一个实际问题?我昨天在编辑中提交了字符串,但它们没有出现,我正在重试,但仍然失败(请求的页面未找到)。但是,您是否出于好奇而询问,“还是你在试图解决一个实际问题?”巴特·基尔斯-很抱歉我有更多的回应,但由于某种原因,sof一直把我排除在外question@BartKiers-我正在考虑为antlr创建一个DFA,它使用levenshtein分布来预测令牌,因为我不能保证我所有的令牌都正确拼写。你对此有什么建议吗?上周我问了这个问题(Prob没有帮助),但我在涉及antlr的解决方案方面取得了一些不错的进展
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 = ....