`
tempsitegoogle
  • 浏览: 864239 次
文章分类
社区版块
存档分类
最新评论

【编译原理】使用Lex将C/C++文件输出为HTML文件

 
阅读更多

08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/details/7747205


Lex进阶实验


结合 实验:用Lex工具进行词法分析,完成如下要求:
输入一个C/C++源文件,输出一个HTML文件,语法高亮显示C/C++源文件。

【实验步骤】

1、实验环境配置

安装Parser Generator,并编译lex和yacc函数库
使用向导配置时,用的VS2010,属性设置如下(有些库是用的VC++6.0)
Compiler Bin Directory C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 10.0\VC\BIN
Compiler Bin Directory(2) C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 10.0\COMMON7\IDE
Compiler Include Directory C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 10.0\VC\INCLUDE
Compiler Include Directory(2) C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\INCLUDE
Compiler Library Directory C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO 10.0\VC\LIB
Compiler Library Directory(2) C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\LIB

2、编写Lex程序



Keys	   int|double|float|char|void|#include|else|case|struct|return
thekey     {Keys}/[ \t]+
这两行定义的是一些关键字,注意关键字必须跟有空白符。输出时在关键字两次加<font color=Blue></font>即用蓝色输出
keyif      if/\(.*\)
keyswitch  switch/\(.*\)
分别定义关键字if 和 switch,考虑到他们特殊的附加信息,要跟有()
str        \".*\"
定义在双引号(“”)中的串,用红色输出。
comments1  \/\/.*
comments2  \/\*(.|\n)*\*\/
分别定义//风格与/**/风格的字串,用绿色输出。
\n           {fputs("<br/>",yyout);}
这里是将换行符用<br/>代替——即HTML中的换行符

【实验结果】

读入input.c的C文件如下:


运行程序后,会生成output.html的文件,用浏览器打开:


转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7760927




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics