正在加载图片...
4、解析C/C+包含文件 摘要 在这 一章里面将要涉及到处理C/C+的包含宏的解析。也就是说要从一大申 C/C+艹包含文件的声明中提取出文件名,以及相互依赖关系等等。实际上在这 章里面使用的Lex和Yacc技术也是非常重要的,这些都会在本章中进行详细讲 解 我们知道对于C/C++包含文件声明是为程序提供了一些库存的功能,因此存 在 中依赖关系,如果把这种依赖关系表达成为Makefile的形式, 那么就可以 自动生成Makefile。.在这一章里面并不会实现自动生成Makefile的功能,而是 仅仅解析出所有的包含文件名,并记录下来。 1.分析 我们知道C/C+中存在两种形式的包含文件,一种是用“<◇”包含的头文件, 是“”包含的头文件, 这两种不同的形 头文件的不同的搜索方式 另外还需要注意的是:这两种方式包含的都是磁盘上存在的文件名。也就是说 只要是磁盘上存在的文件名都可以包含的,都是合法的,因而C/C+里面存在 的有扩展名的头文件和没有扩展名的头文件都是合法的。并且还需要注意的是 C/C+包含的头文件是可以续行的。 因而总结起来需要做到如下的几件事情: 1.处理“◇”和“”两种包含方式 2.处理文件名 3.处理续行 2.Lex文件 #include"main.pp/在其中保存了记录头文件所需要的所有数据结构 #include"frame.tab.h"/∥由Yacc自动生成的所有标记声明,实际上都是C宏 extern "C"{ int yywrap(void) int yylex(void): x INCLUDE %xINCLUDE_FILE4、解析 C/C++包含文件 摘要 在这一章里面将要涉及到处理 C/C++的包含宏的解析。也就是说要从一大串 C/C++ 包含文件的声明中提取出文件名,以及相互依赖关系等等。实际上在这一 章里面 使用的 Lex 和 Yacc 技术也是非常重要的,这些都会在本章中进行详细讲 解。 我们知道对于 C/C++包含文件声明是为程序提供了一些库存的功能,因此存 在一种依赖关系,如果把这种依赖关系表达成为 Makefile 的形式,那么就可以 自动生成 Makefile。在这一章里面并不会实现自动生成 Makefile 的功能,而是 仅仅解析出所有的包含文件名,并记录下来。 1. 分析 我 们知道 C/C++中存在两种形式的包含文件,一种是用“<>”包含的头文件, 一 种是“""”包含的头文件,这两种不同的形式表达了头文件的不同的搜索方式。 另外还需要注意的是:这两种方式包含的都是磁盘上存在的文件名。也就是说, 只 要是磁盘上存在的文件名都可以包含的,都是合法的,因而 C/C++里面存在 的有扩展 名的头文件和没有扩展名的头文件都是合法的。并且还需要注意的是 C/C++包含的头 文件是可以续行的。 因而总结起来需要做到如下的几件事情: 1. 处理“<>”和“""”两种包含方式 2. 处理文件名 3. 处理续行 2. Lex 文件 %{ #include "main.hpp"// 在其中保存了记录头文件所需要的所有数据结构 #include "frame.tab.h"// 由Yacc自动生成的所有标记声明,实际上都是C宏 extern "C"{ int yywrap(void); int yylex(void); } %} %x _INCLUDE_ %x _INCLUDE_FILE_
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有