lex 與 yacc 是設計編譯程式與解譯程式設計者的常用工具。 只要是在輸入中搜尋樣式 (pattern),或是需要在命令列中處理輸入的程式,都會用到 lex 和 yacc 。
和傳統 UNIX 其他工具一樣,lex 和 yacc 的功能強大,操作變化多端,包含許多抽象的用法,本書利用 lex 與 yacc 產生許多範例,甚至包括一個 SQL 語言的解析程式。同時,本書包含所有常用的版本如 AT&T lex & yacc, Berkey/Gnu flex, Gnu bison, MKS lex & yacc, Abraxas PCYACC ...等等。
目錄
出版記事
出版序
序
譯序
第一章 lex 與 yacc
一個最簡單的 lex 程式
利用 lex 認識英文單字
語法
執行 lex 與 yacc
比較 lex 與自己寫的字彙分析器
習題
第二章 lex
常規表示法
計算字數的程式
解析命令列
C 的程式碼分析器
本章摘要
習題
第三章 yacc
語法
解析時的移動與簡化
一個 yacc 解析器
字彙分析器
數學式與其分歧性
變數與 token 型態
符號表
函數與保留字
用 make 來產生解析器
摘要
習題
第四章 選單產生器的語言
MGL 簡介
MGL 的設計
螢幕處理
結束部分的處理
MGL 的範例程式碼
習題
第五章 解析 SQL
SQL 簡介
句法檢查程式
解析器
嵌入式 SQL
習題
第六章 lex 的規格
lex 規格的結構
BEGIN
有一些問題(Bugs)
字元翻譯
參考前後文
替換
ECHO
引入檔案
從字串讀取資料
Input()
內部表格(%N)
lex 函示庫
行數與 yylineno
文字區塊
如何在一個程式中使用多個字彙分析器
output()
lex 產生的字彙分析器的可攜性
常規表示法
REJECT
yylex()
開始狀態
unput()
yyinput()、yyoutput() 與 yyunput()
yyleng
yyless()
yylex()
yymore()
yytext
yywrap()
第七章 yacc 的語法
yacc 語法的結構
動作程式碼
分歧性與衝突
yacc 的錯誤
結束記號
error token 與錯誤修護
%ident 宣言
繼承屬性($0)
字彙回饋
文字區塊
文字 token
yacc 解析器的可攜性
優先順序、關連鍵與運算原宣告
遞回規則
規則
特殊字元
%start宣言
符號值
Token
%type 宣言
%union 宣言
其他變形與多重語法
y.output 檔
yacc 函示庫
YYABORT
YYACCEPT
YYBACKUP
yyclearin
yydebug 與 YYDEBUG
yyerrok
YYERROR
yyerror()
yyparse
YYRECOVERING()
第八章 yacc 的分歧性與衝突
指標模型與衝突
一般衝突的情形
如何解決衝突
摘要
習題
第九章 錯誤訊息與回復
產生錯誤訊息
錯誤回復
習題
附錄 A 「AT&T 版的 lex」
附錄 B 「AT&T 版的 yacc」
附錄 C 「Berkeley 版的 yacc」
附錄 D 「GNU bison」
附錄 E 「flex」
附錄 F 「MKS 版的 lex 與 yacc」
附錄 G 「Abraxas 版的 lex 與 yacc」
附錄 H 「POSIX 標準的 lex 與 yacc」
附錄 I 「MGL 編譯器程式碼」
附錄 J 「SQL 解析器程式碼」
「名詞解釋」
「參考書目」
出版記事
出版序
序
譯序
第一章 lex 與 yacc
一個最簡單的 lex 程式
利用 lex 認識英文單字
語法
執行 lex 與 yacc
比較 lex 與自己寫的字彙分析器
習題
第二章 lex
常規表示法
計算字數的程式
解析命令列
C 的程式碼分析器
本章摘要
習題
第三章 yacc
語法
解析時的移動與簡化
一個 yacc 解析器
字彙分析器
數學式與其分歧性
變數與 token 型態
符號表
函數與保留字
用 make 來產生解析器
摘要
習題
第四章 選單產生器的語言
...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。