前言
第1章 flex和bison简介
词法分析和语法分析
正则表达式和词法分析
文法与语法分析
二义性文法:并不多见
添加更多的规则
flex和bison与手写的词法分析器和语法分析器的对比
练习
第2章 使用flex
正则表达式
flex词法分析器中的文件i/o操作
读取多个文件
flex词法分析器的i/o结构
起始状态和嵌套输入文件
符号表和重要语汇索引生成器
c语言交叉引用
练习
第3章 使用bison
bison语法分析器如何匹配输入
移进/归约分析
bison语法分析器
基于抽象语法树的改进的计算器
移进/归约冲突和操作符优先级
一个高级计算器
使用高级计算器
练习
第4章 分析sql
sql概述
关系操作
使用sql的三种方法
从sql到逆波兰式(rpn)
词法分析器
语法分析器
sql分析器的makefile
练习
第5章fiex规范参考
flex结构规范
begin
c++词法分析器
上下文相关性
定义(替换)
echo
输入管理
flex库
交互模式和批处理模式的词法分析器-
行号和yylineno
文字块
单一程序中的多重词法分析器
编译词法分析器的选项
flex词法分析器的可移植性
可重入词法分析器
正则表达式语法
reject
从yylex()返回值
起始状态
unput()
yyinput()yyunput()-
yyleng
yyless()
yylex()和yy decl
yymore()
yyrestart()
yy_scan_string和yy_scan_buffer
yy_user action
yywrap()
第6章 bison规范参考
bison语法结构
二义性和冲突
bison程序的问题
c++语法分析器
%code块
结束标记
错误记号和错误恢复
继承属性($0)
词法反馈
文字块
文字记号
位置
%parse-param
bison语法分析器的可移植性
优先级和结合性声明
递归规则
规则
特殊字符
%start声明
符号值
记号
可变语法和多重语法
多重语法分析器
y.output文件
bison库文件
yyabort
yyaccept
yybackup
yyclearin
yydebug和yydebug
yyerror
yyerror()
yyparse()
yyrecovering()
第7章 二义性和冲突
指针模型和冲突
冲突类型
语法分析器状态
name.output的内容
归约/归约冲突
移进/归约冲突
复习name.output中的冲突
常见的冲突例子
if/then/else
你如何解决冲突?
if/then/else(移进/归约冲突)
嵌套循环(移进/归约;中突)
表达式优先级(移进/归约冲突)
总结
练习
第8章 错误报告和恢复
错误报告
错误恢复
bison错误恢复
编译器错误恢复
练习
第9章 flex和bison进阶
纯词法分析器和纯语法分析器
glr分析
c++语法分析器
练习
附录 sql语法分析器文法和交叉引用
术语表
^ 收 起