自底向上語法分析
基本概念:
短語若s==*>αaδ,且a==+>β,則稱β是句型αβδ相對於非終結符號a的短語。
直接短語
若s=>* αaδ 且 a=> β,則稱β是句型αβδ 相對於非終結符號a的直接短語。
控制代碼 乙個句型的最左直接短語
素短語(1)是乙個短語
(2)至少包含乙個終結符
(3)且除自身外不再包含其它素短語
算符優先文法:根據算符之間的關係來選擇移進或者是規約。
需構造算符優先表
算符優先關係的計算:
確定算符的優先關係,構造文法的算符優先表
若有a→…ab…或 a→…apb…,則a=b
若有a→…ap…,對任意b∈ firstvt(p),則ab
關於文法g中的每個非終結符p:
firstvt(p)=
含義:由p往下推導所有可能出現的首個終結符
例如:有f→(e)|i ,則(,i∈firstvt(f)
有e→e+t,則ee+t,+∈firstvt(e)
定義:如果文法g中不存在 p→…qr…的產生式,其中q,r∈vn ,則稱g為算符文法
特點:文法g中任一產生式右部不含兩個非終結符相鄰的情況
舉例g1(e):
e→eae|(e)|i
a→+|*
不是 og
改造為g1』(e):
e→e+e|e*e|(e)|i
是 og
判斷是否是算符優先文法(opg)
終結符之間的優先關係是唯一的,或稱g[s]的算符優先關係矩陣不含多重入口,因此,g[s]是乙個算符優先文法
規範推導——最右推導
規範句型——如果文法g無二義性,由規範推導所得的句型(也稱為右句型)
規範歸約——規範推導的逆過程,即最左歸約
規範歸約的實質——在移進過程中,當發現棧頂呈現控制代碼時就用相應產生式的左部符號進行替換
對於規範句型來說,控制代碼的後面不會出現非終結符,只能出現終結符
(先構造語法樹,更容易檢視控制代碼)
區別:算符優先文法在歸約過程中只考慮終結符之間的優先關係從而確定可歸約串,而與非終結符無關,只需知道把當前可歸約串歸約為某乙個非終結符,不必知道該非終結符的名字是什麼,因此去掉了單非終結符的歸約。
規範歸約的可歸約串是控制代碼,並且必須準確寫出可歸約串歸約為哪個非終結符。
編譯原理學習筆記 語法
高階程式語言可分為 1.強制性語言 2.作用時語言 3.基於規則的語言 4.物件導向的語言 程式語言主要由語法,語義,語用 語用 有關程式設計和語言成分的使用方法,它使語言的基本概念與外界的語言 如數學概念或計算機的物件和操作 聯絡起來。語法 語法是指這樣的一組規則,用它可以形成和產生乙個合式的程式...
編譯原理自底向上語法分析
lr 0 不允許移入規約衝突和歸約歸約衝突 slr 1 允許lr 0 移入規約衝突,只要歸約專案箭頭左邊字母的follow集和移入項的移入字母交集為空 也允許歸約歸約衝突,只要該狀態所有歸約專案箭頭左邊字母的follow集交集為空 lr 1 只要各個歸約專案的展望符不相交,且各個歸約專案的展望符和移...
編譯原理學習筆記(二)
1 字母表 字母表 符號 字母 數字 標點符號 例 二進位制字母表,ascii字元表 unicode字符集 2 字母表上的運算 1 字母表的乘積 sigma1 sigma2的乘積 sigma1 sigma2 例 2 字母表的冪運算 字母表的n次冪運算是常速為n的符號串構成的集合 sigma的0次冪 ...