08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/details/7747205
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的文件,用浏览器打开:
分享到:
相关推荐
这是个完整的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 ...
编译原理课程设计:用高级语言(c++)实现词法分析器、用lex实现词法分析器、LL1实现语法分析。前两个是我自己写的,也测试过,正常;LL1不是我写的,也没经过测试...大家慎重使用LL1
编译原理课程实践 旨在学习该课程的人体会词法分析中正规表达式的作用,熟悉lex工具的使用。这里我们在Linux环境下用flex... 建立Linux环境,能用gcc编译通过C/C++程序 在Linux下安装flex软件包,能在终端里调用
使用yacc和lex编写文本分析器(IBM DeveloperWorks).相信对学习编译原理和yacc lex的朋友很有帮助。
手工构造Tiny语言的词法分析器(C/C++语言) 1、熟悉Tiny语言词法; 2、构造DFA; 3、设计数据类型、数据结构; 4、用C++实现Tiny语言的词法分析器 。