日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编译原理:文法及其二义性(判定及消除)

發布時間:2025/3/8 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编译原理:文法及其二义性(判定及消除) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(請先看置頂博文)https://blog.csdn.net/GenuineMonster/article/details/104495419

學編譯原理時,會學到文法,老師在介紹完文法的相關定義后又介紹了文法的二義性,但是沒說到底是如何避免文法的二義性的。

這篇博文就是我的學習結果

文法的二義性:如果文法G中的某個句子存在不只一棵語法樹,則稱該句子是二義性的。如果文法含有二義性的句子,則稱該文法是二義性的。

我舉個例子,來說明文法的二義性及其避免方法:

有下面這個文法:

S - >S and S | S or S | not S | p | q | (S)

那么要是得到 not p and q:

其推導過程如下:都用最左推導

A、S -> not S

? ? ? ? ?-> not S and S

? ? ? ? ?-> not p and S

? ? ? ? ?-> not p and q

B、S -> S and S

? ? ? ? ?-> not S and S

? ? ? ? ?-> not p and S

? ? ? ? ?-> not p and q

顯然這兩個推導過程不同,說明與兩個過程相對應的語法樹也不同,所以,此文法具有二義性

那么怎么修改呢?

這就到了消除二義性的方法了:

1、人為規定其中的“not”,“and”,“or”的優先級

依照此法,可將上述文法修改為:

S -> S or T | T

T -> T and F | F

F -> not F | (E) | p | q

2、第二種方法就是重寫文法

文中的文法例子來源于:https://blog.csdn.net/chunjiekid/article/details/82319161,這個博客是我在尋找方法的時候學習的,但是他寫的沒我的詳細,哈哈!

總結

以上是生活随笔為你收集整理的编译原理:文法及其二义性(判定及消除)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。