每種程序設(shè)計(jì)語言都有描述程序語法結(jié)構(gòu)的規(guī)則。例如,Pascal程序由程序塊(又叫分程序)構(gòu)成,程序塊由語句組成,語句由表達(dá)式組成,表達(dá)式由記號(hào)組成等等。這些規(guī)則可以用上下文無關(guān)文法或BNF范式(Backus-Naur Form)描述。
編譯器常用的文法分析方法有自上而下和自下而上兩種。正如它們的名字所示,自上而下分析器建立分析樹是從根結(jié)點(diǎn)到葉結(jié)點(diǎn),而自下而上分析器恰好反過來。它們的共同點(diǎn)是從左向右地掃描輸入,每次一個(gè)符號(hào)。
最有效的自上而下和自下而上的分析法都只能處理上下文無關(guān)文法的子類。這些子類足以描述程序設(shè)計(jì)語言的大多數(shù)語法結(jié)構(gòu),其中LL文法的分析器通常用手工實(shí)現(xiàn),而LR文法的分析器通常利用自動(dòng)工具構(gòu)造。
本章致力于編譯器采用的典型語法分析方法。我們首先提出有關(guān)上下文無關(guān)文法的基本概念,然后介紹適合于手工實(shí)現(xiàn)的預(yù)測(cè)分析技術(shù),最后給出自動(dòng)工具用的LR分析算法。由于程序員準(zhǔn)備的代碼經(jīng)常會(huì)出現(xiàn)一些語法錯(cuò)誤,因此我們還擴(kuò)展所介紹的分析方法,使之能從常見的錯(cuò)誤中恢復(fù)過來。
3.1 上下文無關(guān)文法 .....
3.4 自下而上分析
3.6 二義文法的應(yīng)用
標(biāo)簽:
程序設(shè)計(jì)語言
程序
上傳時(shí)間:
2013-12-25
上傳用戶:hanli8870