CKY用于解析编程语言

时间:2012-04-29 17:42:55

标签: parsing syntax

使用CKY图表解析算法解析编程语言的语法是否是一个好主意(知道它主要用于解析自然语言的语法)?

1 个答案:

答案 0 :(得分:3)

CKY可以解析任何无上下文的语言,但与替代方案相比,时间复杂度并不高。 CKY要求语法采用乔姆斯基范式,这可能会破坏语法的大小并损害运行时间。对于快速而肮脏的解析器来说,这是一个很好的方法,但是当你尝试扩展到更大的输入或复杂的语法时,你会遇到问题。

如果您正在寻找一种相对简单易懂的可理解的解析算法,请查看解析表达式语法(PEG)。他们可以识别大量无上下文语言,以及一些上下文敏感度有限的语言。一旦你有了一个工作的PEG解析器,就可以很容易地添加memoization,它会为你提供一个在线性时间内运行的Packrat Parser。关于允许左递归语法的PEGsPackratthis extension的学术论文都是可以理解的。