flex与bison
flex与bison
John Levine
陆军 译
出版时间:2011年01月
页数:266
如果你需要分析或处理Linux或Unix中的文本数据,这本有用的书籍就向你讲解了如何使用flex和bison迅速解决问题。《flex与bison》被期待已久,是经典O’Reilly系列书籍《lex & yacc》的续篇。在原书出版以来的近20年中,flex和bison已被证明比原来的Unix工具更可靠、更强大。
《flex与bison》一书涵盖了Linux和Unix程序开发中相同的重要核心功能,以及一些重要的新主题。你会找到适用于新手的修订教程和适用于高级用户的参考资料,以及对每个程序的基本用法的解释,并且运用它们创建简单、独立的应用程序。有了《flex与bison》,你会发现这些灵活的工具提供的广泛用途。

包括的主题有:
· 正则表达式工具无法处理的地址语法挤压(address syntax crunching)
· 生成编译器和解释器,并运用大范围的文本处理功能
· 解释代码、配置文件或任何其他结构化的格式
· 学习关键编程技术,包括抽象语法树和符号表
· 用完整的示例代码实现一个完善的SQL语法
使用新的功能,如纯(可重入)词法分析器(lexer)和· 语法分析器(parser)、功能强大的GLR分析器和C++的接口

“我很高兴看到John彻底详尽地重写这本经典书。他更新的示例和说明能够帮助老用户和新手摆脱模仿那些已经根深蒂固的旧lex和yacc。”
——Joel E. Denny
bison维护人员

John Levine, Taughannock Networks的创始人,著有20余本技术书籍,其中包括《lex & yacc》和《qmail》,均为O’Reilly出版。

(建议有Unix/Linux编程经验者阅读。)

  1. 前言
  2. 第1章 Flex和Bison简介
  3. 词法分析和语法分析
  4. 正则表达式和词法分析
  5. 文法与语法分析
  6. 二义性文法:并不多见
  7. 添加更多的规则
  8. Flex和Bison与手写的词法分析器和语法分析器的对比
  9. 练习
  10. 第2章 使用Flex
  11. 正则表达式
  12. Flex词法分析器中的文件I/O操作
  13. 读取多个文件
  14. Flex词法分析器的I/O结构
  15. 起始状态和嵌套输入文件
  16. 符号表和重要语汇索引生成器
  17. C语言交叉引用
  18. 练习
  19. 第3章 使用Bison
  20. Bison语法分析器如何匹配输入
  21. 移进/归约分析
  22. Bison语法分析器
  23. 基于抽象语法树的改进的计算器
  24. 移进/归约冲突和操作符优先级
  25. 一个高级计算器
  26. 使用高级计算器
  27. 练习
  28. 第4章 分析SQL
  29. SQL概述
  30. 关系操作
  31. 使用SQL的三种方法
  32. 从SQL到逆波兰式(RPN)
  33. 词法分析器
  34. 语法分析器
  35. SQL分析器的Makefile
  36. 练习
  37. 第5章 Flex规范参考
  38. Flex结构规范
  39. BEGIN
  40. C++词法分析器
  41. 上下文相关性
  42. 定义(替换)
  43. ECHO
  44. 输入管理
  45. Flex库
  46. 交互模式和批处理模式的词法分析器
  47. 行号和yylineno
  48. 文字块
  49. 单一程序中的多重词法分析器
  50. 编译词法分析器的选项
  51. Flex词法分析器的可移植性
  52. 可重入词法分析器
  53. 正则表达式语法
  54. REJECT
  55. 从yylex()返回值
  56. 起始状态
  57. unput()
  58. yyinput() yyunput()
  59. yyleng
  60. yyless()
  61. yylex()和YY_DECL
  62. yymore()
  63. yyrestart()
  64. yy_scan_string和yy_scan_buffer
  65. YY_USER_ACTION
  66. yywrap()
  67. 第6章 Bison规范参考
  68. Bison语法结构
  69. 二义性和冲突
  70. Bison程序的问题
  71. C++语法分析器
  72. %code块
  73. 结束标记
  74. 错误记号和错误恢复
  75. 继承属性($0)
  76. 词法反馈
  77. 文字块
  78. 文字记号
  79. 位置
  80. %parse-param
  81. Bison语法分析器的可移植性
  82. 优先级和结合性声明
  83. 递归规则
  84. 规则
  85. 特殊字符
  86. %start声明
  87. 符号值
  88. 记号
  89. 可变语法和多重语法
  90. 多重语法分析器
  91. y.output文件
  92. Bison库文件
  93. YYABORT
  94. YYACCEPT
  95. YYBACKUP
  96. yyclearin
  97. yydebug和YYDEBUG
  98. YYERROR
  99. yyerror()
  100. yyparse()
  101. YYRECOVERING()
  102. 第7章 二义性和冲突
  103. 指针模型和冲突
  104. 冲突类型
  105. 语法分析器状态
  106. name.output的内容
  107. 归约/归约冲突
  108. 移进/归约冲突
  109. 复习name.output中的冲突
  110. 常见的冲突例子
  111. IF/THEN/ELSE
  112. 你如何解决冲突?
  113. IF/THEN/ELSE(移进/归约冲突)
  114. 嵌套循环(移进/归约冲突)
  115. 表达式优先级(移进/归约冲突)
  116. 总结
  117. 练习
  118. 第8章 错误报告和恢复
  119. 错误报告
  120. 错误恢复
  121. Bison错误恢复
  122. 编译器错误恢复
  123. 练习
  124. 第9章 Flex和Bison进阶
  125. 纯词法分析器和纯语法分析器
  126. GLR分析
  127. C++语法分析器
  128. 练习
  129. 附录 SQL语法分析器文法和交叉引用
  130. 术语表
书名:flex与bison
作者:John Levine
译者:陆军 译
国内出版社:东南大学出版社
出版时间:2011年01月
页数:266
书号:978-7-5641-2605-6
原版书书名:flex & bison
原版书出版商:O'Reilly Media
John Levine
 
John R. Levine is the author of several dozen books, including lex and yacc and
qmail published by O’Reilly, and The Internet for Dummies. He writes, consults, and
lectures on computer software, network and email security, and policy topics.
 
 
“flex与bison”封面上的动物是绿蓑鸽(尼柯巴鸠)(拉丁学名Caloenas nicobarica,英文名Nicobar Pigeon)。这种具有灰色,黄色和翠绿色羽毛的大鸟(体长40cm左右)生活在从孟加拉和马来西亚直到新几内亚湾之间的岛屿上。DNA分析表明它是现存最接近渡渡鸟(拉丁学名Raphus cucullatus,英文名Dodo)的物种。