是否有ll(k)到ll(1)转换器的任何实现?
答案 0 :(得分:4)
IIRC;一般来说,不是因为某些语言有ll(k)语法但没有ll(1)语法。因此,除非我弄错了,否则并非所有ll(k)都可以转换为ll(1)。但是,这并没有说明这种工具是否可以用于可以完成的情况。
左分解的规则是:
A := A B |
A C |
D |
E ;
变成:
A := (D | E) (B | C)*
或者如果您不允许()
组和*
:
A := D A'
E A'
A' := B A' |
C A' |
nul ;
技巧变成了如何处理动作规则的翻译;如果你的语言支持它,lambdas在那里可以派上用场。