出版記事
出版序
序
譯序
第一章 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 解析器程式碼」
「名詞解釋」
「參考書目」