創(chuàng)建門戶網(wǎng)站網(wǎng)絡(luò)營銷的特點(diǎn)有哪些
語法分析的雙重含義:
- 語法規(guī)則:上下文無關(guān)文法(子集:LL文法或LR文法)
- 語法分析:下推自動(dòng)機(jī)(LL或LR分析器)、自上而下分析、自下而上分析
一、語法分析的若干問題
許多編譯器,特別是由自動(dòng)生成工具構(gòu)造的編譯器,往往其前端的中心部件就是語法分析器
(1)語法分析器的作用
根據(jù)詞法分析器提供的記號(hào)流,為語法正確的輸入構(gòu)造分析樹(或語法樹)
檢查輸入中的語法(可能包括詞法)錯(cuò)誤,并調(diào)用出錯(cuò)處理器進(jìn)行適
當(dāng)處理。
(2)語法錯(cuò)誤的處理原則
源程序中可能出現(xiàn)的錯(cuò)誤:語法(包括詞法)錯(cuò)誤和語義錯(cuò)誤(靜態(tài)語義錯(cuò)誤和動(dòng)態(tài)語義錯(cuò)誤)
詞法錯(cuò)誤:指非法字符或拼寫錯(cuò)關(guān)鍵字、標(biāo)識(shí)符等
語法錯(cuò)誤:指語法結(jié)構(gòu)出錯(cuò),如少分號(hào)、括號(hào)不匹配、begin/end不配對(duì)等
靜態(tài)語義錯(cuò)誤:如類型不一致、參數(shù)不匹配等
動(dòng)態(tài)語義錯(cuò)誤(邏輯錯(cuò)誤):如死循環(huán)、變量為零時(shí)作除數(shù)等
二、上下文無關(guān)文法(CFG)/2型文法
CFG是一個(gè)四元組G =(N,T,P,S),其中
(1) N是非終結(jié)符(Nonterminals)的有限集合;
(2) T是終結(jié)符(Terminals)的有限集合,且N∩T=Φ;
(3) P是產(chǎn)生式(Productions)的有限集合,A→α,其中A∈N(左部),α∈(N∪T)*(右部),若α=ε,則稱A→ε為空產(chǎn)生式(也可以記為A →);
(4) S是非終結(jié)符,稱為文法的開始符號(hào)(Start symbol)注: S ∈ N , N可以出現(xiàn)在產(chǎn)生式左邊和右邊,**T絕不出現(xiàn)在產(chǎn)生式左邊**.
三、自上而下語法分析:遞歸下降分析法、預(yù)測分析法
基本思想:對(duì)任何一個(gè)輸入序列ω,從S開始進(jìn)行最左推導(dǎo),直到得到一個(gè)合法的句子或發(fā)現(xiàn)一個(gè)非法結(jié)構(gòu)。整個(gè)自上而下分析是一個(gè)試探的過程,是反復(fù)使用不同產(chǎn)生式謀求與輸入序列匹配的過程。
提前準(zhǔn)備-重寫文法:
- 消除左遞歸,以避免陷入死循環(huán);
- 提取左因子,以避免回溯.
(1)消除左遞歸
定義:若文法G中的非終結(jié)符A,對(duì)某個(gè)文法符號(hào)序列α存在推導(dǎo)A =+> Aα,則稱G是左遞歸的。若G中有形如A→Aα的產(chǎn)生式,則稱該產(chǎn)生式對(duì)A直接左遞歸。
<1> 消除文法的直接左遞歸:把左遞歸轉(zhuǎn)換為右遞歸
<2> 消除文法的間接左遞歸
核心思想:將無直接左遞歸的非終結(jié)符展開到其他產(chǎn)生式,然后消除其他產(chǎn)生式中的直接左遞歸(如果有的話