目錄中的“語法中的歧義”是什麼意思?


如果給定一個輸入字串,存在多個最左推導或多個最右推導或多棵解析樹,則稱該語法是模稜兩可的。

  • 如果語法不是模稜兩可的,則稱其為明確的語法。
  • 如果語法有歧義,那麼這對編譯器構建是有好處的。
  • 沒有辦法可以自動檢測和消除歧義,但是我們可以透過重新編寫整個明確語法來消除歧義。

示例

我們考慮一個具有如下所示的產生規則的語法 -

E = I

E = E+E

E = E*E

E = (E)

E = ε|0|1|2|3...9

讓我們考慮一個字串“3*2+5”

如果上述語法透過使用最左推導(LMD)生成兩棵分析樹,那麼我們可以說給定的語法是有歧義的語法。

由於一個字串有兩個解析樹,因此我們可以說給定的語法是有歧義的語法。

考慮另一個例子

檢查語法是否有歧義。

A->AA

A->(A)

A->a

對於字串“a(a)(a)a”,上述語法可以生成兩棵解析樹,如下所述 -

更新於:2021-06-12

超過 20,000 次瀏覽

開啟你的 職業 生涯

完成課程,獲得認證

開始
廣告
© . All rights reserved.