我一直在学习ANTLR几天。我的学习目标是能够生成解析器和词法分析器,然后将它们从Java手动转换为我的目标语言(C/C++/Java/C#/ Python,没有任何工具支持它)。我选择了ANTLR因为其关于页:ANTLR被广泛使用,因为它很容易理解的,强大的,灵活的,产生人类可读输出[...]“人类可读的”ANTLR生成的代码?
在学习这个工具,我决定开始用一个简单的语法简单的词法分析器:JSON。然而,一旦我使用ANTLR4为这个词法分析器生成.java文件,我就被广泛地忽视了。我有一个巨大的混乱远从人类可读的序列化代码,依次为:
public static final ATN _ATN =
ATNSimulator.deserialize(_serializedATN.toCharArray());
static {
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
}
一些谷歌搜索无法为我提供一种方法来禁用此行为。
有没有一种方法来禁用此行为而产生人类可读的代码,还是我将不得不手工写我的词法分析器和解析器为这个目标编程语言?
看看flex/Bison,还是生成的代码同样不可读? – Zac 2013-05-03 17:34:02
我认为随着版本的增加,人类可读性一直在下降,这导致了更快的解析器和词法分析器。在Antlr 2中,即使是词法分析器也相当清晰。 – 2013-05-03 19:13:15
@Zac我对flex的使用经验是,它生成的代码也不是人类可读的。 – 2013-05-03 19:14:34