我偶然发现了许多不同的算法(CYK和Earley),以检查字符串是否是提供CFG的CFL的一部分。我正在寻找易于理解和实施的东西。我需要知道的是字符串是否在CFG中。 CFG通常以
的形式给出S->S1 S2
S1->S1 a | a
S2->S2 b | b
该解决方案也应该接受epsilon转换,例如S1-> a | ë
任何想法?
答案 0 :(得分:2)
我在这个项目中找到了一个非常直接的方法
https://code.google.com/p/cykparser/downloads/list
与其他经过不必要的语法验证的CYK解析器不同。这个解析器是一个非常好的概念证明,它只是用基本语法实现了CYK算法。
代码在python中。