这几天我一直在学习ANTLR。我学习它的目标是我能够生成解析器和词法分析器,然后亲自将它们从 Java 手动翻译成我的目标语言(C/C++/Java/C#/Python,没有工具支持它)。我之所以选择 ANTLR,是因为它的 About 页面:ANTLR 被广泛使用是因为它易于理解、强大、灵活、生成人类可读的输出 [...]
在学习这个工具时,我决定从一个简单语法的简单词法分析器开始:JSON。然而,一旦我使用 ANTLR4 为这个词法分析器生成了 .java 文件,我就大吃一惊了。我得到了一大堆远非人类可读的序列化代码,然后是:
public static final ATN _ATN =
ATNSimulator.deserialize(_serializedATN.toCharArray());
static {
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
}
一些 Google 搜索无法为我提供禁用此行为的方法。
有没有办法禁用这种行为并生成人类可读的代码,或者我将不得不为这种目标编程语言手写我的词法分析器和解析器?