摘要 | 第1-4页 |
Abstract | 第4-7页 |
第一章 绪论 | 第7-11页 |
·研究背景 | 第7-8页 |
·C/C++程序安全检查工具概述 | 第8-9页 |
·本文工作及内容组织 | 第9-11页 |
第二章 C/C++预处理 | 第11-15页 |
·C/C++预处理器及预处理指令 | 第11-12页 |
·C/C++程序安全检查工具预处理器 | 第12页 |
·预处理中的安全漏洞 | 第12-15页 |
第三章 ANTLR与C/C++程序安全检查工具预处理器 | 第15-23页 |
·分析器自动生成工具ANTLR | 第15-20页 |
·语法分析器 | 第15-17页 |
·分析器自动生成工具ANTLR的特点 | 第17-20页 |
·使用ANTLR设计预处理器 | 第20-23页 |
·C/C++程序安全检查工具预处理器 | 第20-21页 |
·ANTLR在构造预处理器中的作用 | 第21-23页 |
第四章 C/C++安全检查工具预处理器的设计与实现 | 第23-45页 |
·预处理器的整体结构 | 第23-24页 |
·主要数据结构的设计与实现 | 第24-27页 |
·宏定义存储的数据结构 | 第24-25页 |
·宏替换的数据结构 | 第25-26页 |
·词法及语法分析器数据结构 | 第26-27页 |
·预处理指令的分析与实现 | 第27-40页 |
·预处理指令种类 | 第27-28页 |
·宏定义相关预处理指令 | 第28-31页 |
·#define指令 | 第28-30页 |
·#undef指令 | 第30-31页 |
·条件编译相关预处理指令 | 第31-37页 |
·#if、#elif、#else、#endif指令 | 第31-36页 |
·#ifdef、#ifndef指令 | 第36-37页 |
·文件包含预处理指令 | 第37-38页 |
·#include指令 | 第37-38页 |
·其他预处理指令 | 第38-40页 |
·#line指令 | 第38-39页 |
·#error指令 | 第39-40页 |
·安全检查模块的设计 | 第40-45页 |
·预处理的安全分析 | 第40页 |
·预处理器的安全策略 | 第40-42页 |
·预处理器安全模块的设计 | 第42-45页 |
第五章 C/C++程序安全检查工具预处理器构造的关键技术 | 第45-55页 |
·预处理操作符 | 第45-48页 |
·字符串化操作符(#) | 第45-47页 |
·语言符号粘贴操作符(##) | 第47-48页 |
·宏展开的特殊情况 | 第48-53页 |
·宏的多重展开 | 第49-51页 |
·递归宏调用的处理 | 第51-52页 |
·可变参数宏的处理 | 第52-53页 |
·文件和行信息的保留 | 第53-54页 |
·C/C++检查工具的要求 | 第53-54页 |
·各种情况下文件和行信息的处理 | 第54页 |
·各种情况下空白的处理 | 第54-55页 |
第六章 结束语 | 第55-56页 |
致谢 | 第56-57页 |
参考文献 | 第57-59页 |
在校期间研究成果 | 第59-60页 |
附录A 简单计算器完整实现 | 第60-63页 |