lex与yacc(第二版)
lex与yacc(第二版)
John R. Levine, Tony Mason, Doug Brown
杨作梅, 张旭东, 等 译
出版时间:2003年01月
页数:392
《lex与yacc》(第二版)是惟一一本专门介绍这两个重要的UNIX编程工具的书。这本新版本是完全的修订版,并以很多新的扩充示例代替了旧的示例。几个介绍性章节已经完全重写,还有一章专门介绍实现SQL语法,给出了有经验的程序员希望看到的各种细节。
本书对lex和yacc的重要主题提供了详尽的参考。对所有主要的lex和yacc的MS-DOS和UNIX版本,本书都进行了介绍,包括AT&T lex和yacc、Berkeley yacc、Berkeley/Gnu flex、Gnu bison、MKS lex和yacc、Abraxas PCYACC等等。
“太棒了!我已经读完《lex与yacc》的第二版……总而言之,这是一件伟大的作品 —— 这本书比第一版充实很多,详实而透彻。阅读的过程中,我经历了无数次的惊喜,心里总想‘可惜了,他们已经错过了也许是细微而精妙的地方,我先做个注释’,然而随后在下一个句子或段落就看到对该问题的阐释。”
“[John Levine]做了大量的工作来完善这本书。我很高兴最终有一本好书推荐给人们。”
——Vern Paxson,flex的开发者
  1. 前言
  2. 第一章 lex和yacc
  3. 最简单的lex程序
  4. 用lex识别单词
  5. 语法
  6. 运行lex和yacc
  7. lex和手写的词法分析程序
  8. 练习
  9. 第二章 使用lex
  10. 正则表达式
  11. 单词计数程序
  12. 分析命令行
  13. C源代码分析程序
  14. 小结
  15. 练习
  16. 第三章 使用yacc
  17. 语法
  18. 移进/归约分析
  19. yacc语法分析程序
  20. 词法分析程序
  21. 算术表达式和歧义性
  22. 变量和有类型的标记
  23. 符号表
  24. 函数和保留字
  25. 用make构建语法分析程序
  26. 小结
  27. 练习
  28. 第四章 菜单生成语言
  29. MGL的概述
  30. 开发MGL
  31. 构建MGL
  32. 屏幕处理
  33. 结束
  34. MGL代码示例
  35. 练习
  36. 第五章 分析SQL
  37. SQL的要点概述
  38. 语法检查程序
  39. 语法分析程序
  40. 嵌入式SQL
  41. 练习
  42. 第六章 lex规范参考
  43. lex规范的结构
  44. BEGIN
  45. 程序错误
  46. 字符变换
  47. 上下文相关
  48. 定义(替换)
  49. ECHO
  50. 包含操作(文件的逻辑嵌套)
  51. 从字符串中输入
  52. input()
  53. 内部表(%N声明)
  54. lex库
  55. 行号和yylineno
  56. 文字块
  57. 一个程序中的多个词法分析程序
  58. output()
  59. lex 词法分析程序的可移植性
  60. 正则表达式语法
  61. REJECT
  62. 从yylex()中返回值
  63. 起始状态
  64. unput()
  65. yyinput()、yyoutput()、yyunput()
  66. yyleng
  67. yyless()
  68. yylex()
  69. yymore()
  70. yytext
  71. yywrap()
  72. 第七章 yacc语法参考
  73. yacc语法的结构
  74. 动作
  75. 歧义和冲突
  76. yacc中的程序错误
  77. 结束标记
  78. 错误标记和错误恢复
  79. %ident 声明
  80. 继承的属性($0)
  81. 词汇的反馈
  82. 文字块
  83. 文字标记
  84. yacc语法分析程序的可移植性
  85. 优先级、结合性和操作符声明
  86. 递归规则
  87. 规则
  88. 特殊字符
  89. 开始声明
  90. 符号值
  91. 标记
  92. %type声明
  93. %union声明
  94. 变体和多重语法
  95. y.output文件
  96. yacc库
  97. YYABORT
  98. YYACCEPT
  99. YYBACKUP
  100. yyclearin
  101. yydebug和YYDEBUG
  102. yyerrok
  103. YYERROR
  104. yyerror()
  105. yyparse()
  106. YYRECOVERING()
  107. 第八章 yacc歧义和冲突
  108. 指针模型和冲突
  109. 冲突的普通示例
  110. 如何修复冲突
  111. 小结
  112. 练习
  113. 第九章 错误报告和恢复
  114. 错误报告
  115. 错误恢复
  116. 练习
  117. 附录一 AT&T lex
  118. 附录二 AT&T yacc
  119. 附录三 Berkeley yacc
  120. 附录四 GNU bison
  121. 附录五 flex
  122. 附录六 MKS lex和yacc
  123. 附录七 Abraxas lex和yacc
  124. 附录八 POSIX lex和yacc
  125. 附录九 MGL编译程序代码
  126. 附录十 SQL分析程序代码
  127. 参考文献
  128. 词汇表
书名:lex与yacc(第二版)
译者:杨作梅, 张旭东, 等 译
国内出版社:机械工业出版社
出版时间:2003年01月
页数:392
书号:7-111-10721-7
原版书出版商:O'Reilly Media
John R. Levine
 
John R. Levine编著、演讲和咨询过许多有关UNIX和编译程序的主题。他主持了Usenet上的在线comp.compilers.discussion组,从事Lotus 1-2-3的UNIX版本以及Norton实用程序的设计工作,并且是IMB RT PC的AIX设计者之一。1984年他获得了耶鲁大学计算机科学博士学位。
 
 
Tony Mason
 
Tony Mason目前是Transarc 公司AFS开发组成员,创办投资的这个小公司专攻分布式系统软件。以前,他工作于斯坦福大学的分布式操作系统和数据通信领域的Distributed Systems Group。1987年他在芝加哥大学获得数学理学学士学位。
 
 
Doug Brown
 
Doug Brown是俄勒冈州的一位咨询人员。他自1977年开始从事电路仿真、合成和测试工作。他是O'Reilly & Associates, Inc.出版的《lex & yacc》一书的作者之一。他1976年毕业于Illinois大学Urbana-Champaign分校,获得了电气工程硕士学位。








Doug Brown是Beaverton、Oregon的顾问和承包商。自1977年以来他一直在开发电路模拟、合成和测试的软件。Doug与人合著了《C++:The Core Language》—— 它是O'Reilly & Associates公司出版的另一本技术手册。1976年他在伊利诺斯州大学厄巴纳-尚佩恩分校获得电气工程理学硕士学位。
 
 
lex & yacc封面上的动物特征是维多利亚王冠鸽 —— 鸽子家族中最大的成员之一。与其他鸟类不同,有王冠的鸽子喝水时是把喙嘴浸入吸吮。蛋的孵化(一般有两个蛋)由一雌一雄共同分担,雄鸟白天孵化,雌鸟夜里孵化。
维多利亚王冠鸽的羽毛明亮,深蓝色并带有紫色的斑纹,带有花边的扇状头冠,淡蓝色的羽毛。虽然它们在其产地新几内亚岛受法律保护,但是它们仍然成为一些觊觎其羽毛的偷猎者的目标,它们正处于濒临灭绝的危险之中。