LEMON語法分析生成器

LEMON語法分析生成器

《LEMON語法分析生成器》是2006年浙江大學出版社出版的圖書,作者是虞森林。

內容簡介

通過解剖分析現成軟體的原始碼來學習計算機的專業課程,是一種行之有效的途徑。本書通過解剖一個LALR(1)語法分析的生成器——LEMON,來達到學習編譯原理中有關LALR(1)語法分析的目的。

本書的結構安排,以LEMON在mmn()主函式中執行流為串聯主線,在分析過程中,按遇見的順序,逐個分析闡述每個函式的工作機制、相關的數據結構,以及它們互相之間發生的有機聯繫。全書分11章。第1章對LEMON進行概略性的介紹。第2章通過一個帶有變數功能、具有可重載函式的桌面計算器的開發實例,介紹如何套用LEMON來開發應用程式。第3章分析LEMON如何對命令行中輸入的參數進行處理。第4章闡述LEMON中的各種數據結構以及它們的初始化過程。第5章為LEMON對語法檔案內容進行詞法掃描,並介紹如何將磁碟上的語法檔案轉換為機器記憶體里的各種數據結構。第6章講述尋得符號Firsr集並建立優先權的過程。第7章討論形成LR(0)分析器的各個狀態和建立各項目的傳播鍊表。第8章為尋找各語法符號的Follow集元素。第9章闡述在已有LR(0)分析器的基礎上,添加先行符從而建立LALR(1)分析器的機理和過程。第10章是本書最重要的部分,討論了LEMON如何與精心設計的lempar.c模板檔案互相配合,最終生成LALR(1)類型語法分析器的C語言版檔案。第11章非常簡要地介紹了語法分析器內函式調用與數組之間的關係、它們的良好封裝性,以及如何刪除調試排錯功能以獲得更小的軟體體積。

本書可作為大學計算機專業高年級學生和研究生的教材或教學參考書,也可作為從事計算機系統研究或套用開發人員的參考書。

目錄

第1章 介紹LEMON
1.1 編譯原理的由來和發展
1.2 LEMON簡介
1.3 命令行中各個選項
1.4 語法分析器的界面和工作過程
1.5 與YACC和BISON的不同之處
1.6 語法檔案的語法
1.7 特殊申明符
1.8 語法分析過程的錯誤恢復策略
第2章 設計計算器
2.1 最簡陋計算器
2.2 使用自定義的數據類型--結構
2.3 語法分析器的狀態和動作
2.4 語法分析的動作記錄
2.5 比較完善的計算器
2.6 如何釋放符號占用的記憶體空間
2.7 具有變數功能的計算器
2.8 具有函式功能的計算器
2.9 添加帶兩個參數的函式功能以及讓函式能夠重載
2.10 計算器的全部原始碼
第3章 處理命令行輸入
3.1 函式調用關係
3.2 內容概述
3.3 如何閱讀分析LEMON源程式
3.4 與命令行有關變數、數組的申明和賦值
3.5 命令行選項錯誤輸入時的處理
3.6 命令行帶參數選項的處理
3.7 提示正確參數輸入形式
第4章 初始化LEMON
4.1 函式調用關係
4.2 內容概述
4.3 LEMON程式的“全局”變數
4.4 啟用“符號之家”的strsafe-init函式
4.5 啟用符號表的Symbol-init函式
4.6 符號(symb01)結構
4.7 啟用狀態表的State-init函式
4.8 狀態(state)數據結構
4.9 項目(config)數據結構
4.10 產生式(rule)數據結構
4.11 動作(action)數據結構
4.12 一些變數的初始化
4.13 裝配和安置符號
4.14 檢測符號的安置
第5章 詞法掃描和語法要素內部表示
5.1 函式調用關係
5.2 內容概述
5-3 詞法處理的主角
5.4 詞法分析專用的數據結構(pstate)
5.5 讀入整個語法檔案
5.6 列印出錯信息函式
5.7 處理條件編譯
5.8 分析字元流和裁成記號流
5.9 記號的語法分析
5.10 文法符號計數、排序
5.11 重現語法檔案
第6章 符號的First集
6.1 函式調用關係
6.2 內容概述
6.3 計算優先權
6.4 找出符號的First集
第7章 計算LR(0)分析器
7.1 函式調用關係
7.2 內容概述
……
第8章 符號的Follow集
第9章 計算LALR(1)分析器
第10章 生成LALR(1)語法分析器
第11章 語法分析器的一些特性
主要參考文獻

熱門詞條

聯絡我們