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