通過解剖分析現成軟件的源代碼來學習計算機的專業(yè)課程,是一種行之有效的途徑。本書通過解剖一個LALR(1)語法分析的生成器——LEMON,來達到學習編譯原理中有關LALR(1)語法分析的目的。.本書的結構安排,以LEMON在mmn()主函數中執(zhí)行流為串聯(lián)主線,在分析過程中,按遇見的順序,逐個分析闡述每個函數的工作機制、相關的數據結構,以及它們互相之間發(fā)生的有機聯(lián)系。全書分11章。第1章對LEMON進行概略性的介紹。第2章通過一個帶有變量功能、具有可重載函數的桌面計算器的開發(fā)實例,介紹如何應用LEMON來開發(fā)應用程序。第3章分析LEMON如何對命令行中輸入的參數進行處理。第4章闡述LEMON中的各種數據結構以及它們的初始化過程。第5章為LEMON對語法文件內容進行詞法掃描,并介紹如何將磁盤上的語法文件轉換為機器內存里的各種數據結構。第6章講述尋得符號Firsr集并建立優(yōu)先級的過程。第7章討論形成LR(0)分析器的各個狀態(tài)和建立各項目的傳播鏈表。第8章為尋找各語法符號的Follow集元素。第9章闡述在已有LR(0)分析器的基礎上,添加先行符從而建立LALR(1)分析器的機理和過程。第10章是本書最重要的部分,討論了LEMON如何與精心設計的lempar.c模板文件互相配合,最終生成LALR(1)類型語法分析器的C語言版文件。第11章非常簡要地介紹了語法分析器內函數調用與數組之間的關系、它們的良好封裝性,以及如何刪除調試排錯功能以獲得更小的軟件體積。..本書可作為大學計算機專業(yè)高年級學生和研究生的教材或教學參考書,也可作為從事計算機系統(tǒng)研究或應用開發(fā)人員的參考書。...