語法分析包括詞法分析和句法分析。
句法分析有中心詞分析法和層次分析法,
此外還有語義分析和語用分析。
語義分析包括語義指向分析、語義特徵分析和語義成分分析。
⑵ 編譯的語法分析
編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。編譯程序的語法規則可用上下文無關文法來刻畫。
語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發,向下推導,推出句子。而自下而上分析法採用的是移進歸約法,基本思想是:用一個寄存符號的先進後出棧,把輸入符號一個一個地移進棧里,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號。
⑶ 語法分析最常用的兩類方法
LL分析法和LR分析法。
1、自上而下語法分析方法(LL分析法)
給定文法G和源程序串r。從G的開始符號S出發,通過反復使用產生式對句型中的非終結符進行替換(推導),逐步推導出r 。 是一種產生的方法,面向目標的方法。分析的主旨為選擇產生式的合適的侯選式進行推導,逐步使推導結果與r匹配。
2、自下而上語法分析方法(LR分析法)
從給定的輸入串r開始,不斷尋找子串與文法G中某個產生式P的候選式進行匹配,並用P的左部代替(歸約)之,逐步歸約到開始符號S。是一種辨認的方法,基於目標的方法。分析的主旨為尋找合適的子串與P的侯選式進行匹配,直到歸約到G的S為止 。
(3)語法分析方法的分類基本思想擴展閱讀
LALR分析器可以對上下無關文法進行語法分析。LALR即「Look-AheadLR」。其中,Look-Ahead為「向前看」,L代表對輸入進行從左到右的檢查,R代表反向構造出最右推導序列。
LALR分析器可以根據一種程序設計語言的正式語法的產生式而對一段文本程序輸入進行語法分析,從而在語法層面上判斷輸入程序是否合法。
實際應用中的LALR分析器並不是由人手工寫成的,而是由類似於yacc和GNU Bison之類的LALR語法分析器生成工具構成。由機器自動生成的代碼相比較於程序員手工的代碼,擁有更好的運行效率而且減少了程序員的工作量。
⑷ 簡述自下而上語法分析的基本思想,基本過程和基本操作。
【答案】:自下而上語法分析的基本思想是從待分析的終結符號串出發,反向使用產生式規則,將產生式規則右部的符號串歸約為左部的非終結符。通過一系列這樣的歸約,最終能歸約出文法的起始符號,則證明待分析的終結符號串是合法的句子。
其分析過程是用堆棧來實現的。開始時堆棧中壓入「#」這個特殊的符號,同時也在輸入串的末尾加上「#」。分析過程有4種基本動作:
· 移進:當前堆棧棧頂還沒有出現可歸約串,採取移進動作。所謂移進,是把緩沖區指針當前指向的符號壓入堆棧,緩沖區指針後移。
· 歸約:當前棧頂已經出現可歸約串,採取歸約動作,即把棧頂的可歸約串彈出,把歸約出的文法非終結符壓入堆棧。
· 接受:如果歸約出了文法起始符號,並且緩沖區的指針已經移到了輸入串的末尾,此時意味著分析成功,應該結束分析過程。
· 出錯:發現待分析的符號串有語法錯誤,此時應該調用出錯處理程序。