修改ANTLR v4自动生成的词法分析器?

时间:2017-04-17 19:52:36

标签: antlr javac lexer

所以我正在写一个小语言,我使用antlrv4作为我的工具。当您编译语法文件(.g4)时,Antlr会自动生成词法分析器和解析器文件。我正在使用javac btw。我希望我的语言没有分号,我想这样做的方式是:如果有一个标识符或“)”作为一行中的最后一个标记,词法分析器将自动输出分号(类似于“go”语言一样)。我怎么会接近这样的事情?还有其他的东西,比如ATN(我认为是增强过渡网络)和dfa(我认为是确定性有限自动机)在lexer文件中我不明白或者它们与lexing过程有什么关系?任何帮助表示赞赏。 (顺便说一句,我还在处理语法文件,所以我没有完全完成)。

1 个答案:

答案 0 :(得分:0)

这里有几点:ATN和DFA是解析器+词法分析器的内部结构,而不是用来改变解析行为的东西。另外,我不清楚为什么你想让词法分析器在某个时候插入分号。你究竟想要完成什么(不要说:在解析器中使分号成为可选的,我的意思是潜在的原因)。

如果你想接受没有尾随分号的命令,你可以选择:

assignment: simpleAssignment | complexAssignment SEMI?;

无论是否存在尾随分号,解析器都会为您提供分配规则的内容。这就是你想要的吗?