目录

1. 前言 2

2. 基本概念 3

2.1. IDL 3

2.2. 代理(Proxy) 3

2.3. 存根(Stub) 4

3. 三要素 4

3.1. 网络通讯 4

3.2. 消息编解码 5

3.3. IDL编译器 5

4. flex和bison 5

4.1. 准备概念 5

4.1.1. 正则表达式(regex/regexp) 6

4.1.2. 符号∈ 6

4.1.3. 终结符/非终结符/产生式 6

4.1.4. 记号(Token) 6

4.1.5. 形式文法 7

4.1.6. 上下文无关文法(CFG) 7

4.1.7. BNF 8

4.1.8. 推导 8

4.1.9. 语法树 8

4.1.10. LL(k) 9

4.1.11. LR(k) 9

4.1.12. LALR(k) 9

4.1.13. GLR 9

4.1.14. 移进/归约 9

4.2. flex和bison文件格式 9

4.2.1. 定义部分 10

4.2.2. 规则部分 10

4.2.3. 用户子例程部分 10

4.3. flex基础 10

4.3.1. flex文件格式 11

4.3.2. 选项 11

4.3.3. 名字定义 11

4.3.4. 词法规则 12

4.3.5. 匹配规则 12

4.3.6. %option 13

4.3.7. 全局变量yytext 13

4.3.8. 全局变量yyval 13

4.3.9. 全局变量yyleng 13

4.3.10. 全局函数yylex 13

4.3.11. 全局函数yywrap 13

4.4. bison基础 14

4.4.1. bison文件格式 14

4.4.2. %union 14

4.4.3. %token 15

4.4.4. 全局函数yyerror() 15

4.4.5. 全局函数yyparse() 15

4.5. 例1:单词计数 15

4.5.1. 目的 15

4.5.2. flex词法文件wc.l 16

4.5.3. Makefile 16

4.6. 例2:表达式 17

4.6.1. 目的 17

4.6.2. flex词法exp.l 17

4.6.3. bison语法exp.y 17

4.6.4. Makefile 19

4.6.5. 代码集成 19

4.7. 例3:函数 20

4.7.1. 目的 20

4.7.2. func.h 20

4.7.3. func.c 21

4.7.4. IDL代码func.idl 22

4.7.5. flex词法func.l 22

4.7.6. bison语法func.y 24

4.7.7. Makefile 27

5. 进阶 27

5.1. 客户端函数实现 27

5.2. 服务端函数实现 28

5.2.1. Stub部分实现 28

5.2.2. 用户部分实现 29

6. 参考资料 29