(编译原理)C++源代码单词扫描程序(词法分析)
来源:互联网 发布:极乐净土动作数据下载 编辑:程序博客网 时间:2024/05/19 22:07
实验内容
(1)C++源代码扫描程序识别C++记号。 C++语言包含了几种类型的记号:标识符,关键字,数(包括整数、浮点数),字符串、注释、特殊符号(分界符)和运算符号等。
(2)打开一个C++源文件,打印出所有以上的记号。
(3)选作部分:为了提高c++源程序的可读性,C++程序在书写过程中加入了空行、空格、缩进、注释等。假设你想牺牲可读性,以节省磁盘空间,那么你可以存贮一个删除了所有不必要空格和注释的C++源程序的压缩文本。因此,程序中还应该有这样的压缩功能。
(4)选作部分:进一步思考或实现——如何进一步实现减少源文件大小的压缩功能。
(6)应该书写完善的软件文档。
二、实验设备
操作系统:Windows7或者linux
软件:VC6.0、Lex扫描程序生成器
三、实验步骤
1、写出标识符,关键字,数(包括整数、浮点数),字符串、注释、特殊符号(分界符)和运算符号的正则表达式,结果如下:
Letter [a-z|A-Z]//字母
Nat [0-9]+//数字
All ({Letter}|{Number}|{OP}|{String}|{Special}|[])*//包含实验要求的正则表达式
Number {Nat}("."{Nat})?//数(整数、浮点数)
Note"//"{All}|"/*"{All}"*/"//注释
OP"+"|"-"|"*"|%|"/"|"^"|"|"//运算符号
Keyword(include|define|iostream.h|int|float|double|main|if|else|for|while|do|switch|case|static|cin|cout|void|return)//由于C++的关键字太多,这里列举一些常用的关键字
String["]({Letter}|{Nat})*["]//字符串
Identifier {Letter}+//标识符
Special#|<|<[<=>]|>|>[=>]|"["|"]"|"{"|"}"|!|!=|"("|")"|=|==|".";
//由于C++的特殊符号太多,这里列举一些常用的特殊符号
Whitespace \n|[\t]+//换行符号和制表符
2、编写输入文件
Lex输入文件如下:
3.Linux下编译链接运行结果并生成txt文件如下:
4.Windows下使用VC6.0将lex.yy.c文件进行编译链接结果如下:
5.打开txt文件查看压缩功能,基本上实现了删除所有不必要空格和注释的C++源程序的压缩文本功能。
- (编译原理)C++源代码单词扫描程序(词法分析)
- 编译原理(词法分析程序)
- 词法分析(编译原理)
- 编译原理(词法分析)
- 编译原理词法分析程序
- 编译原理词法分析程序
- 编译原理词法分析程序
- 编译原理:词法分析程序
- 编译原理 词法分析程序
- 编译原理-DFA有穷自动机 词法分析应用于O(n)的单词匹配
- 邮箱地址词法分析(编译原理)
- 编译原理(二)词法分析
- 编译原理词法分析(java)
- 编译原理(3):词法分析
- 【编译原理】词法分析(一)
- 【编译原理】词法分析(二)
- 【编译原理】词法分析(三)
- 编译原理----词法分析器实现(C)
- excel Sheet Column Number
- windows7 内部版本7601 此windows副本不是正版 ---解决方案
- Merge Sorted Array
- Linux 任务调度策略
- IFeatureClassManage接口更新图层全图显示时的范围
- (编译原理)C++源代码单词扫描程序(词法分析)
- Remove Duplicates from Sorted List
- #295 (div.2) E.Pluses everywhere
- Climbing Stairs
- Metaio in Unity3d 教学--- 一. 搭建环境,运行官方案例
- R语言做文本挖掘 Part2分词处理
- fullcalendar简单使用
- 2015.03.最新面试题(1)
- C++ Primer学习总结 第4章 表达式