删除左递归
E->E+T|E-T|T
T->T*F|T/F|F
对于 + 和 *,我相信它应该是
E->TE'
E'->+TE'|(e) (e) is empty string
T->FT'
T'->*FT'|(e)
但是对于 - 或 /,我不确定如何删除左递归,我想出了以下一个,它是否适合 - 和 /?举个例子,对于加号,a+b = b+a,但对于减号,a - b != b -a。所以如果我们使用下面的右递归,我们会遇到像ab这样的问题吗?
E->TE'
E'->+TE'|-TE'|(e)
T->FT'
T'->*FT'|/FT'|(e)
任何人都知道编译器向我解释?在此先感谢。