2010-06-10 46 views

回答

4

IIRC;一般来说,不是因为某些语言有ll(k)个语法,但没有ll(1)个语法。所以除非我弄错了,否则ll(1)的所有ll(k)都可以被转换。但是,这并没有说明这样一种工具的可能性,它可以处理可以完成的情况。


左保规则是:

A := A B | 
    A C | 
    D | 
    E ; 

变为:

A := (D | E) (B | C)* 

,或者如果你不允许()组和*

A := D A' 
    E A' 

A' := B A' | 
     C A' | 
     nul ; 

诀窍是mes如何处理行动规则的翻译;如果你的语言支持它,lambda可以在那里很方便。

+0

实际上,我正在寻找一段代码来实现左递归处理器和Left-Factoring.i只是想要一个非常简单的语法的简单示例。 – Mahdi 2010-06-10 17:39:12