編譯原理一

編譯原理

  1. 正規(guī)式或NFA到DFA最小化
  2. 四元式DAG圖的優(yōu)化,根據(jù)要求寫(xiě)出優(yōu)化結(jié)果翻譯到目標(biāo)代碼
  3. 給你文法,給你句型,讓你寫(xiě)出最左推導(dǎo)和最右推導(dǎo),或者讓你畫(huà)出語(yǔ)法樹(shù),說(shuō)出素短語(yǔ),直接短語(yǔ)等(之類的東西)
  4. 給文法求firstvt lastvt first follow的過(guò)程
  • 目標(biāo)代碼三種形式:絕對(duì)指令代碼,可重定位指令代碼,匯編指令代碼。
  • 編譯程序開(kāi)發(fā)技術(shù):自編譯,交叉編譯,自展,移植

詞法分析

子程序大綱:把詞法分析作為語(yǔ)法分析的子程序

詞法分析器設(shè)計(jì)方法

  1. 通常分為五種:保留字,標(biāo)識(shí)符,常數(shù),運(yùn)算符,界符
  2. 詞法分析單詞的輸入輸出形式:輸入源程序字符串,輸出單詞符號(hào)序列,通常是二元式:(單詞種別,單詞自身的值)
  3. 關(guān)于單詞種別:保留字全體一種或者一字一種(更方便),標(biāo)識(shí)符統(tǒng)一一種,常數(shù)可以歸為一種,也可以按類型分類。運(yùn)算符一符一種或一種。單詞自身值:一符一種種就是值。
  4. 狀態(tài)轉(zhuǎn)換圖:p11有標(biāo)識(shí)符,無(wú)符號(hào)數(shù)和無(wú)符號(hào)整數(shù)的狀態(tài)轉(zhuǎn)換圖。終態(tài)有*代表多余的字符回退。

簡(jiǎn)單詞法分析器的示例

正規(guī)表達(dá)式和有限自動(dòng)機(jī)

  1. 正規(guī)表達(dá)式與正規(guī)集:對(duì)于給定的字母表(segema),正規(guī)式和正規(guī)集遞歸定義如下:
    1. \varepsilon\Phi都是\Sigma上的正規(guī)式,它們所表示的正規(guī)集分別為{\varepsilon}和\Phi
    2. 對(duì)任何一個(gè)a\epsilon \Sigma,a是\Sigma上的一個(gè)正規(guī)式,它所表示的正規(guī)集為{a}。
    3. R和S是\Sigma上的正規(guī)式,它所表示的正規(guī)集為L(zhǎng)(R)和L(S),則:
      1. R|S(或運(yùn)算)是\Sigma上的正規(guī)式,它所表示的正規(guī)集為L(zhǎng)(R)\cupL(S)
      2. R\centerdotS.............L(R)L(S)
      3. (R)*\Sigma上的正規(guī)式,他的正規(guī)集為(L(R))*
      4. R..................L(R)(L就是語(yǔ)言)
    4. 有限次使用上述規(guī)則 得到\Sigma上的正規(guī)式與正規(guī)集
  2. 關(guān)于上述規(guī)則的一系列說(shuō)明:
    • 運(yùn)算順序中,*(閉包)大于\centerdot\centerdot大于|
    • 關(guān)于閉包運(yùn)算 R0={\varepsilon},并令R*=R0\cupR1\cup......
    • R+=RR*,R+被稱為R的正則閉包,不含\varepsilon
    • 正規(guī)式的正規(guī)集相等,正規(guī)式等價(jià)R=S,包括交換律:R|S=S|R,結(jié)合律:R|(S|T)=(R|S)|T;R(ST)=(RS)T,分配律(不贅述),同一律:\varepsilonR=R\varepsilon=R
    • 簡(jiǎn)單就是L(R|S)=L(R)\cupL(S),其他同理

簡(jiǎn)單的舉例:\Sigma = { a,b },求\Sigma上正規(guī)式R = a(a|b)*的正規(guī)集
方法:一層一層展開(kāi):L(a)L((a|b)*)=L(a)(L(a|b))*=L(a)(L(a)\cupL(b))*={a}({a}\cup{b})*={a}{a,b}*={a}{\epsilon,a,b,aa,ab,ba,bb,aaa,……}={a,aa,……}

  1. 判斷正規(guī)式等價(jià)只需看正規(guī)集是否等價(jià)
  2. 有限自動(dòng)機(jī):更一般化的狀態(tài)轉(zhuǎn)換圖,分為確定有限自動(dòng)機(jī)DFA以及非有限自動(dòng)機(jī)NFA。
  3. DFA:是一個(gè)五元組Md = (S,\Sigma,f,s_ {0},Z}
    • s是有限狀態(tài)集,每個(gè)元素是一個(gè)狀態(tài)
    • \Sigma是有窮輸入字母表,每個(gè)元素都是一個(gè)輸入字符
    • f是S\times\Sigma到S的單值映射,即f(si,a)=sj,si,si\epsilonS,a\epsilon \Sigma
    • s0\epsilonS,是唯一的初態(tài)
    • Z\epsilonS,是一個(gè)終態(tài)集
  4. NFA:也是五元組Mn=(S,\Sigma,f,Q,Z),S,\Sigma,Z與DFA意義相同,f是S\times\Sigma*到S子集的映射(可以多值以及\varepsilon),Q\subsetS,是一個(gè)非空初態(tài)集。
  5. DFA到狀態(tài)矩陣,很簡(jiǎn)單(這里不填了),NFA一樣,只不過(guò)填狀態(tài)集,或者空集(NFA從初始態(tài)到終止態(tài)的通路,有向邊上字符連接的串為FAM識(shí)別的語(yǔ)言,字符串集為L(zhǎng)(M),可以根據(jù)L(M)判斷兩個(gè)有限自動(dòng)機(jī)是否等價(jià))(DFA與NFA本質(zhì)相同可以互相轉(zhuǎn)化)
狀態(tài)\字符 a b
S0 這里填的是S幾(狀態(tài))
S1
S2
  1. 正規(guī)式到NFA的構(gòu)造(根據(jù)這規(guī)則)


    轉(zhuǎn)換規(guī)則.jpg

例子:


轉(zhuǎn)換例子.jpg
  1. NFA確定化(到DFA)

解讀例子


nfatodfa.jpg

方法:1. 先求初態(tài)\varepsilon閉包(所有經(jīng)\varepsilon可達(dá)的都算,\varepsilon不限,因?yàn)橐粋€(gè)\varepsilon和多個(gè)一樣),當(dāng)然必須包括自己。之后求其經(jīng)a,b可達(dá)狀態(tài)集,(比如求a先到a之后再找新集合的\varepsilon閉包得到新集合),重復(fù)之前操作,直到不再有新集合出現(xiàn)為止。

  1. DFA的化簡(jiǎn)

這是例題:
dfa.jpg
  • 首先分為終態(tài)集和非終態(tài)集(包含原初態(tài)為初態(tài),包含原終態(tài)為終態(tài)),之后經(jīng)過(guò)a,b是否 落在一個(gè)集合,不落則分開(kāi),經(jīng)過(guò)多次重復(fù)得到最終結(jié)果。(得到新的狀態(tài)轉(zhuǎn)換矩陣,不可達(dá)用橫杠代替)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 詞法分析的問(wèn)題 術(shù)語(yǔ) 模式(pattern):產(chǎn)生和識(shí)別元素的規(guī)則 記號(hào)(token): 按照某個(gè)模式(或規(guī)則)識(shí)...
    有苦向瓜訴說(shuō)閱讀 2,085評(píng)論 0 0
  • 詞法分析的幾個(gè)問(wèn)題 術(shù)語(yǔ) 模式(pattern):產(chǎn)生和識(shí)別元素的規(guī)則 記號(hào)(token): 按照某個(gè)模式(或規(guī)則...
    有苦向瓜訴說(shuō)閱讀 1,656評(píng)論 0 4
  • 詞法分析器的作用 詞素(Lexeme)詞法單元(Token): Token-name + Attribute-va...
    Song3016閱讀 604評(píng)論 0 0
  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚(yú)閱讀 9,049評(píng)論 0 13
  • 語(yǔ)言處理器術(shù)語(yǔ)解釋:源語(yǔ)言:等待被轉(zhuǎn)換的語(yǔ)言.目標(biāo)語(yǔ)言:轉(zhuǎn)換后輸出的語(yǔ)言.編譯器:一次將所有源語(yǔ)言轉(zhuǎn)換成目標(biāo)語(yǔ)言的...
    卡布奇洛貓閱讀 1,129評(píng)論 0 0