- 浏览: 263758 次
- 性别:
- 来自: 济南
文章分类
最新评论
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
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
发表评论
-
unity基础开发----物体位移和旋转实用代码
2013-11-21 22:46 1222using UnityEngine; using Syst ... -
Android中View绘制优化之一---- 优化布局层次
2012-09-04 23:00 968... -
Android中View绘制优化二一---- 使用<include />标签复用布局文件
2012-09-08 13:54 971... -
Android中View绘制优化之三---- 优化View
2012-09-13 21:00 1044... -
兰林任务管理应用程序雏形版以及概要说明
2012-09-15 21:54 827... -
Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
2012-10-10 18:14 1066... -
Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
2012-10-17 20:05 809... -
Android中文件选择器的实现
2012-11-30 08:59 1079... -
【编译原理】正则表达式
2012-07-21 21:49 213408年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【OpenCV】访问Mat图像中每个像素的值
2012-07-22 07:10 1093今天百度搜资料还搜到了自己的。。。《访问图像中每个像素的值 ... -
【编译原理】用Yacc做语法分析
2012-07-23 05:47 169508年9月入学,12年7月毕 ... -
【UML】UML几种图的绘制
2012-07-24 09:49 93908年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【OpenCV】邻域滤波:方框、高斯、中值、双边滤波
2012-07-26 10:52 1408邻域滤波(卷积) 邻域算子值利用给定像素 ... -
【数据结构】排序算法:希尔、归并、快速、堆排序
2012-07-28 06:15 93808年9月入学,12年7月毕 ... -
【OpenCV】角点检测:Harris角点及Shi-Tomasi角点检测
2012-07-31 13:25 1491角点 特征检测与匹配 ... -
【UML】案例分析:机场运作系统
2012-08-01 17:22 292408年9月入学,12年7月毕 ... -
【OpenCV】边缘检测:Sobel、拉普拉斯算子
2012-08-04 13:41 1468边缘 边缘(edge)是指图像局部强度变化最显著的部分。主要 ... -
【OpenCV】Canny 边缘检测
2012-08-08 10:17 1936Canny 边缘检测算法 1986 ... -
【UML】案例分析:新型超市购物自助系统
2012-08-19 01:13 125608年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【数据结构】二叉树、AVL树
2012-08-21 00:30 103708年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ...
相关推荐
这是个完整的LEX程序,在此上传,只用于学习交流使用。
* 如何在lex/yacc中使用C++和STL库,用extern "C"声明那些lex/yacc生成的、要链接的C函数,如yylex(), yywrap(), yyerror()。 * 重定义YYSTYPE/yylval为复杂类型。 * 用%token方式声明yacc记号。 * 用%type方式声明...
题目:c--语言编译器设计与实现(请为自己的编译器命名) 源语言定义:或采用教材中Decaf语言,或采用C语言(或C++语言或C#语言或JAVA语言)部分关键语法规则。源语言要求至少包含的语言成分如下: 数据类型至少包括...
编译原理四次实验——词法分析器与语法分析器(C/C++/Lex语言) 词法分析器实验一 请根据书本第二章第二节中表2.1和图2-5,用C语言编写一个简单词法分析器,能够读入C的源程序,然后输出识别的单词和对应的种类以及...
词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地...词法分析程序可以使用Lex等工具自动生成。 PL/0语言是Pascal语言的子集,它具备一般高级程序设计语言的典型特点。
编译原理课程设计:用高级语言(c++)实现词法分析器、用lex实现词法分析器、LL1实现语法分析。附加完整实验报告(已排版,可直接打印)
可将C语言的裴波纳契和pi.c的翻译为汇编语言。满分7分。 上机大作业——简化C编译器实现 总体要求 一、要求实现的语言特性 1. 基本要求 1数据类型:int,char 2语句:赋值(=),if,while,for;赋值 循环 条件判断 ...
只能实现斐波那契数列,没有实现pi.c,得分五分 ...3编译器演示程序,可将C语言子集测试程序编译为目标代码——汇编程序,用汇编器转换为二进制程序后运行无误,如斐波那契数列程序,应能翻译为正确的汇编程序。
编译原理课程设计,C++的词法分析器,做的是较完善的,老师给的是A+,呵呵,希望喜欢。
gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户...
编译原理词法分析实验,C语言编写,代码500+行。包含源代码、实验报告、状态迁移图、输入输出文档,最终成绩90+。 题目:C语言词法分析程序的设计与实现 实验内容及要求: 1. 可以识别出用C语言编写的源程序...
1、 关键字、标识符、数字等: 1.begin 2.if 3.then 4.while 5.do 6.end 10.标识符 11.数字 13.+ 14.- 15.* 16./ 17.: 18.:= 20.< 21.<> 22.<= 23.> 24.>= 25.= 26.;...
C++语言的语法分析器,代码借助yacc和lex,实现了语法书的生成及展示
编译原理的上机作业的总体要求 1 C语言子集的描述:...3 编译器演示程序,可将C语言子集测试程序编译为目标代码——汇编程序,用汇编器转换为二进制程序后运行无误,如斐波那契数列程序,应能翻译为正确的汇编程序。
用编译器编写工具LEX/YACC提供的方式规定绘图语言的词法和语法,用C/C++语言编写解释器的语义。实验使用的操作系统是WIN10,实现软件是microft visual studio community 2017版本。任务划分为三个部分,分别是词法...
文件包含Lex代码及编译的Linux下的可执行文件。编译及使用见Readme。 C注释的类型如下 // /* // * "C-style block comment be removed // * C-style block comment be removed" // * C-style block comment be ...
手工构造Tiny语言的词法分析器(C/C++语言) 1、熟悉Tiny语言词法; 2、构造DFA; 3、设计数据类型、数据结构; 4、用C++实现Tiny语言的词法分析器 。
编译原理课程设计:用高级语言(c++)实现词法分析器、用lex实现词法分析器、LL1实现语法分析。前两个是我自己写的,也测试过,正常;LL1不是我写的,也没经过测试...大家慎重使用LL1
编译原理课程实践 旨在学习该课程的人体会词法分析中正规表达式的作用,熟悉lex工具的使用。这里我们在Linux环境下用flex... 建立Linux环境,能用gcc编译通过C/C++程序 在Linux下安装flex软件包,能在终端里调用
使用yacc和lex编写文本分析器(IBM DeveloperWorks).相信对学习编译原理和yacc lex的朋友很有帮助。