我有以下問題。這個語法是不明確的:使語法明確嗎?
stmt - > if expr then stmt stmt'| a
stmt' - > else stmt | EPSILON
EXPR - >乙
我試圖修改它,我的結果是:
語句 - >如果expr然後stmt是」 | a
stmt'' - > stmt |語句」
語句」 - > b,否則語句
EXPR - >乙
但這並不產生相同的語言。
有人可以幫我修改含糊不清的語法,使其明確無誤且接受相同的語言嗎?
我有以下問題。這個語法是不明確的:使語法明確嗎?
stmt - > if expr then stmt stmt'| a
stmt' - > else stmt | EPSILON
EXPR - >乙
我試圖修改它,我的結果是:
語句 - >如果expr然後stmt是」 | a
stmt'' - > stmt |語句」
語句」 - > b,否則語句
EXPR - >乙
但這並不產生相同的語言。
有人可以幫我修改含糊不清的語法,使其明確無誤且接受相同的語言嗎?
使用給定的語法,字符串if b then if b then a else a
有兩個最左派生如下。
推導1:
if expr then stmt stmt'
if b then stmt stmt'
if b then if expr then stmt stmt' stmt'
if b then if b then stmt stmt' stmt'
if b then if b then a stmt' stmt'
if b then if b then a stmt'
if b then if b then a else stmt
if b then if b then a else a
推導2:
if expr then stmt stmt'
if b then stmt stmt'
if b then if expr then stmt stmt' stmt'
if b then if b then stmt stmt' stmt'
if b then if b then a stmt' stmt'
if b then if b then a else stmt stmt'
if b then if b then a else a stmt'
if b then if b then a else a
的語法分析樹保持爲相同大部分。但是在導出if b then if b then a stmt' stmt'
之後,節點的順序發生變化,從而影響樹的結構。因此,給定的語法是不明確的。
雖然upvoted,但是,OP要求消除語法的歧義。我有一段艱難的時期,甚至證明了模棱兩可。感謝精彩的努力。 –
您還沒有在第二個語法中定義B. –