目錄
- 文法爲什麼出現 ?
- 文法的表示形式
- 文法的分類
- BB...BBC類型文法
- ABB...BBC類型文法
- 文法的二義性
- 例題一:" 後綴表達式的文法二義性"
- 例題二:"嵌套的括號文法二義性"
- ---------------------------
- 語言是什麼?
- 語言的表示
- 等價文法
- 已知文法求語言
- 已知語言求文法(典型)
- ---------------------------
- 推導與語法樹(例題)
- ---------------------------
- 句型的分析
- 爲什麼要進行句型分析 ?
- 如何證明一個符號串是某文法的句型?
- 自上而下分析法
- 自下而上分析法
- 可歸約串與"句柄"概念的引出
- 測試:尋找短語、直接短語與句柄
<一> 文法
1> 文法爲什麼出現?
使用文法作爲工具,可以嚴格定義句子的結構並且可以用適當條數的規則將語言全部描述出來;
文法是以有窮集合刻畫無窮集合的一個工具;
2> 文法的表示形式
3> 文法的分類
0/1/2/3型文法,實際上是對產生式(規則)逐步進行更加嚴格的限制;
4> BB...BBC類型文法
☞ 允許0開頭的偶正整數集合:
5> ABB...BBC類型文法
☞ 不允許0開頭的偶正整數集合:
6> 文法的二義性
☞ 對於一個句子,使用該文法存在兩個不同的最右推導、或可以構造兩棵不同的語法樹
☞ 例題一:" 後綴表達式的文法二義性 "
☞ 例題二:"嵌套的括號文法二義性"
<二> 語言
1> 語言是什麼?
2> 語言的表示:L(G)
3> 等價文法:L(G1) = L(G2)
4> 已知文法求語言
5> 已知語言求文法(典型)
<三> 推導及語法樹
1> i + ( i + i )
2> i + i * i
☞ 注意:最右推導 => 右句型/正規句型 => 只有右句型存在句柄!
<四> 句型的分析
1> 爲什麼要進行句型分析?
判斷給定的符號串是某文法的句型(符合某文法);
2> 如何證明一個符號串是某文法的句型?
☞ 存在推導序列/語法樹;
3> 自上而下分析法
從文法的開始符號S開始,逐步使用各種產生式,尋找匹配符號串的推導(例題三)
4> 自下而上分析法
使用輸入符號串來構造語法樹,逐步下上規約(如何確定可歸約串?)
5> 可歸約串與"句柄"概念的引出
☞ 一個右句型的唯一句柄是所有直接短語中最左邊的那個( 無二義性文法句柄唯一 )
6> 測試:尋找短語、直接短語與句柄