什麼是TOC中的無歧義語法?
如果語法不包含歧義,則該語法可以是無歧義的。這意味著如果它不包含多個最左推導(LMD)或多個最右推導(RMD)或給定輸入字串的多個語法樹,則它是一個無歧義的語法。
規則
為了將歧義語法轉換為無歧義語法,我們應用以下規則:
規則 1 - 如果在產生式規則中使用左結合運算子(+、-、*、/),則在產生式規則中應用左遞迴。左遞迴就是右側最左邊的符號與左側的非終結符相同。
X->Xa
規則 2 - 如果在產生式規則中使用右結合運算子(^),則在產生式規則中應用右遞迴。
右遞迴就是左側最右邊的符號與右側的非終結符相同。例如,X->aX
考慮上面提到的規則的一個例子。
檢查語法是否模糊。
A->AA
A->(A)
A->a
對於字串“a(a)aa”,上述語法可以生成兩棵語法樹,如下所示

由於存在兩棵語法樹,因此語法是模糊的。
考慮另一個語法
S->S+S
S->S*S
S->2
假設語法樹為 2+2*2
語法樹如下所示:

給定的語法是模糊的語法。因此,透過應用關聯規則將模糊語法轉換為無歧義語法,如下所述:
S->S+T
S->T
T->T*F
T->F
F->2
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP