我试图解决一个实践问题,但当我试图将样本答案与我的比较时,我遇到了一个问题。这是转换前的语法:
E-> S*
S-> SD
S-> D
D-> [D]
D-> x
起始符号为E
,其他非终结符号为S
和D
。
我的回答是:
E-> S*
S-> DS'
S'-> DS'
S'->
D-> [D]
D-> x
在示例答案中,他们没有S-> DS'
,而E变为E-> DS'*
。由于本书中用于删除左递归的方法,
A -> Aa
A -> b
=> A -> bA'
A' -> aA'
A' ->
应该有一个S-> DS'
。我现在对此感到困惑,也许我只是不明白这种方法。谁能给我任何关于此的提示?还有,请你告诉我这里的星座符号*
的含义吗?非常感谢!
答案 0 :(得分:0)
你的回答没有错。样本答案只是简化了转换后的语法。
E -> S*
S -> DS'
给定S'
和D
的规则,并假设S
和E
在其他制作中没有出现,这部分语法相当于
E -> DS'*
第一个作品中的S
只是被DS'
取代,正如第二个作品中所定义的那样被剥夺了。
*
符号可能是Kleene star。这意味着S
可以发生任意次数(包括零)。但是没有背景,很难说,而且它也可能意味着别的东西。