目錄中的“語法中的歧義”是什麼意思?
如果給定一個輸入字串,存在多個最左推導或多個最右推導或多棵解析樹,則稱該語法是模稜兩可的。
- 如果語法不是模稜兩可的,則稱其為明確的語法。
- 如果語法有歧義,那麼這對編譯器構建是有好處的。
- 沒有辦法可以自動檢測和消除歧義,但是我們可以透過重新編寫整個明確語法來消除歧義。
示例
我們考慮一個具有如下所示的產生規則的語法 -
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”,上述語法可以生成兩棵解析樹,如下所述 -

廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP