我一直在尝试为以下语法生成解析器表:
S-> LP; ë
LP-> LP; num | NUM
E-> num | var |有趣(E)
消除左递归的必要性是显而易见的,所以最终:
S-> LP; ë
LP-> num LP'
LP' - > ; num LP'| λ
E-> num | var |有趣(E)
问题出现在为LP和LP'寻找第一和随后,其中:
First(LP)= num
关注(LP)=;
First(LP')=; λ
关注(LP')=;
由于LP'首先使用λ,这意味着在创建解析表期间,我将从LP'中获取;是:
LP' - > ; num LP'
LP' - > λ
因此造成歧义。有什么方法可以解决这个问题吗?我已经研究过以前的问题,并且提到了消除λ,但是我没有能够以消除歧义的方式这样做。
提前感谢任何帮助。