| 摘要 | 第1-4页 |
| ABSTRACT | 第4-7页 |
| 第一章 绪论 | 第7-13页 |
| ·研究背景 | 第7-9页 |
| ·程序分析和安全检查 | 第7-8页 |
| ·相关工作 | 第8-9页 |
| ·软件安全检查工具概述 | 第9-11页 |
| ·本文工作及内容组织 | 第11-13页 |
| 第二章 ANTLR与软件安全检查工具前端 | 第13-23页 |
| ·词法分析器 | 第13页 |
| ·语法分析器 | 第13-14页 |
| ·分析器自动生成工具ANTLR概述 | 第14-16页 |
| ·使用ANTLR设计软件安全检查工具前端 | 第16-18页 |
| ·设计和实现软件安全检查工具前端的意义 | 第17页 |
| ·ANTLR在构造前端中的作用 | 第17-18页 |
| ·ANTLR提供的C/C++语言文法 | 第18-21页 |
| ·文法和产生式 | 第18-19页 |
| ·语法分析规则 | 第19-21页 |
| ·本章小结 | 第21-23页 |
| 第三章 符号表的建立 | 第23-45页 |
| ·符号表概述 | 第23-24页 |
| ·C、C++语言非模板部分符号表的建立 | 第24-36页 |
| ·external_declaration与member declaration语义处理相似的部分 | 第24-30页 |
| ·external_declaration语义处理独有的部分 | 第30-34页 |
| ·member_declaration语义处理独有的部分 | 第34-36页 |
| ·C++语言模板部分符号表的建立 | 第36-44页 |
| ·模板头的处理 | 第36-38页 |
| ·函数模板符号表的建立 | 第38-40页 |
| ·类模板符号表的建立 | 第40-44页 |
| ·本章小结 | 第44-45页 |
| 第四章 抽象语法树的生成 | 第45-49页 |
| ·ANTLR中的抽象语法树概述 | 第45-47页 |
| ·ANTLR中的抽象语法树的表示方法 | 第45-46页 |
| ·ANTLR中的抽象语法树的结构框架 | 第46-47页 |
| ·ANTLR中的抽象语法树的生成 | 第47-48页 |
| ·本章小结 | 第48-49页 |
| 第五章 与内存资源相关的安全漏洞检查 | 第49-61页 |
| ·与内存资源相关的安全漏洞表现形式 | 第49-52页 |
| ·释放未指向堆空间的指针 | 第49-50页 |
| ·重复释放指针指向的空间 | 第50-51页 |
| ·申请与释放资源的操作未配对使用 | 第51-52页 |
| ·与内存资源相关的安全漏洞检查方法 | 第52-58页 |
| ·在抽象语法树规则中添加语义动作 | 第53-57页 |
| ·在语法分析规则中添加语义动作 | 第57-58页 |
| ·在符号表模块文件中的处理 | 第58页 |
| ·综合实例分析 | 第58-60页 |
| ·本章小结 | 第60-61页 |
| 第六章 结束语 | 第61-63页 |
| 致谢 | 第63-65页 |
| 参考文献 | 第65-67页 |
| 在校期间研究成果 | 第67页 |