0
所以我写一个小语言,我使用antlrv4作为我的工具。当你编译你的语法文件(.g4)时,Antlr自动生成词法分析器和解析器文件。我正在使用javac btw。我想我的语言没有分号,我想这样做的方式是:如果在一行中有一个标识符或“)”作为最后一个标记,词法分析器会自动输入分号(类似于“go”语言一样)。我将如何处理这样的事情?在词法分析器文件中还有其他的东西,比如ATN(我认为是扩充的转换网络)和dfa(我认为它是确定性有限自动机),我不明白它们与lexing过程之间的关系。任何帮助表示赞赏。 (顺便说一句,我仍然在研究语法文件,所以我没有完全完成)。修改ANTLR v4自动生成的词法分析器?
我不想要分号,因为我相信它们主要是针对解析器的吗?我想到了你的建议,使得它在解析器语法中是可选的,但分号也标记了行或语句的结尾。例如:假设我有print p5abc并且比下一行有打印10.分析器如何知道下一行中的print 10不是第一行中的字符串的一部分。即字符串isnt p5abcprint10?通过自动添加分号,我可以省略它们在程序中的使用,同时仍然保留分号的功能?我希望这是有道理的。 :( – vaish