《C语言小子集的词法分析程序》由会员分享,可在线阅读,更多相关《C语言小子集的词法分析程序(10页珍藏版)》请在人人文库网上搜索。

1、沈阳航空航天大学上 机 实 验 报 告实验名称:编译方法实验题目:C语言小子集的词法分析程序院(系):计算机学院专 业:计算机科学与技术班 级: 班级学 号: 学号姓 名: 姓名指导教师: 老师1 实验问题:设计一个程序,输入C语言小子集的程序片段,输出单词序列,实现语言小子集程序的词法分析功能。2 实验要求:1. 设计单词属性字,2. 设计各类表格(表示符表、常量表、单词符号及机内表示)3. 画出总控流程图,确定各个子程序的功能并画出控制流程图4. 编码实现词法分析程序5. 设计3-5个测试实例,要求覆盖上述功能,并完成测试3 实验的定义表:在本程序中为设计程序中的保留字、整数、标示符等在机。

2、内的表示,通过唯一一个符号对应唯一的一个种别码来实现符号在机内表示,如表1.表1 C语言小子集的定义表种别码符号种别码符号种别码符号0#11=221标示符12=23;2整数13!=24,3+14&25void4-15|26int5*16=27float6/17(28char7%18)29if82132do33return四课程设计思路:词法分析所能分辨的符号有,常数,字符,关键字,界符,运算符等类型,设计的程序要求可以分辨各种不同的类型,可以运用C语言文件操作的功能,导入一个已经存在的文本文件,对文本文件的内容进行此法分析,并且把分析结果导入到另外一个文件当中。五主要变量说明: 运用C语言的宏。

3、定义功能,具体变量看实验的定义表,分1到33个数字,定义一个长度为30的数组,用来存放标示符和常量。设置指向固定文件的指针write和read,用来进行对文件的操作。六算法描述:A. 设置一个字符串匹配函数looksame,对于以字母开头的字符串,对其进行与关键字的匹配,如果对于匹配关键字的字符串,则将字符串识别为关键字。B. 设置一个字符类型和字符串输出函数out,把从文件中读出的字符串,以及它预定义的类型输出,同时将词法分析的一段结果输入到指定文件中,同时输出到命令窗口。C. 设置一个报错函数error,对于文件中未能够识别的字符进行报错处理,输入报错信息“书写格式错误,未被识别”。D. 。

4、设置功能函数function,进行具体的词法分析功能,不断对文件中的字符进行读出,按照字符串类型进判断分类,调用字符串匹配函数用来识别关键字,调用out函数,用来识别普通的常量以及标示符,同时对于界符和运算符进行识别,同时输出到指定的文件中。在本函数中还设置了屏蔽注释内容的功能,因为注释并不实际参与程序的运行,设置屏蔽注释内容夫人功能,不把它反映在在此法分析的结果中。E.运用主函数,对上面设置的函数进行调用,完成具体的词法分析功能。七调试程序:文件说明,程序中运用的两个文件存放在E盘中,文件名为a和b。文件a的内容为:程序运行的结果为:文件b在执行后的内容变为:八实验心得体会:这次课程设计频繁。

5、的使用了C语言中的文件操作函数,对这方面的知识有了更加深刻的了解,在设计过程中,对各种函数的使用也更加熟练,与此同时对编译原理中词法分析的功能有了更加深刻的了解和认识。由于自己时间的原因,没有画流程图,在设计的过程中体会到了克服困难所带来的喜悦,如果再有类似的设计题目一定会好好的进行研究,肯定会使自己受益无穷,这次实验设计使我深深的认识到只要肯努力就没有克服不了的难关,希望自己以后不论是学习还是生活,都用这种不服输的态度去面对。9 程序代码:/*该语言的关键字 :begin end if then else for do while and or not */*该语言的界符: ; , : , 。

6、( , ) , , 等/*该语言的运算符:+,?=,-,*,=,#include #include #include #define ID 12#define INT 13#define JF 14#define YSF 15#define N 30char TOKENN;FILE *write;int looksame(char *a)int i;Char*key22=begin,end,if,then,else,for,do,while,and,or,not,BEGIN,END,IF,THEN,ELSE,FOR,DO,WHILE,AND,OR,NOT;for(i = 0;i )out(YS。

7、F,:ch = fgetc(fp);if(ch = =)out(YSF,=);printf(运算符n);elsefseek(fp,-1,1);out(YSF,);printf(运算符n);break;case:ch = fgetc(fp);if(ch = =)out(YSF,:=);printf(运算符n);elsefseek(fp,-1,1);out(JF,:);printf(界符n);break;case/:ch = fgetc(fp);if(ch = *)out(JF,/*);printf(界符n);while(1) / 注释的内容不反应在词法分析中/ while(ch != /)ch 。

8、= fgetc(fp);fseek(fp, -2, 1);ch = fgetc(fp);if(ch = *)fseek(fp, 1, 1);break;elsefseek(fp, 2, 1);ch = fgetc(fp);fseek(fp, -2, 1);elsefseek(fp,-1,1);out(JF,/);printf(界符n);break;case*:ch = fgetc(fp);if(ch = /)out(JF,*/);printf(界符n);elsefseek(fp,-1,1);out(YSF,*);printf(运算符n);break;case EOF:break;default:error();break;int main()FILE *read;read = fopen(E:a.txt,r);write = fopen(E:b.txt,a+);if(read = NULL)printf(FILE OPEN FAIL!);/exit(0); printf(=n);printf(=词法分析程序=n);printf(=该分析程序的文件存放在D:a.txt目录下=n);printf(=该程序的分析结果存放在D:b.txt目录下=n);printf(=n);function(read);fclose(read);system(pause);return 0。

c语言小子集,C语言小子集的词法分析程序相关推荐

  1. 使用c语言测试大端和小端,C语言*符号使用及大端法小端法测试

    工具:Microsoft Visual C++ 6.0 例子: int a = 1; int* b = &a; C语言规定a表示存储单元中的数据,&a表示存储单元的地址,b存储的就是a ...

  2. sdut-1118 C语言实验——从大到小输出a、b、c(选择结构)

    点击打开链接 C语言实验--从大到小输出a.b.c(选择结构) Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Pr ...

  3. c语言小饭店等位就餐程序,C语言程序设计 C语言程序设计 3.C语言程序设计教案全部.doc...

    C语言程序设计教案 PAGE PAGE 2 C语言程序设计教案 C语言程序设计教案 编写:宋铁桥 计算机技术系 二〇一七年三月整理 河北工业职业技术学院 <C语言程序设计>课程教案首页 授 ...

  4. c语言自动按键脚本,C语言键盘控制走迷宫小游戏

    本文实例为大家分享了C语言键盘控制走迷宫小游戏的具体代码,供大家参考,具体内容如下 在看了<啊哈C语言>之后想写一个游戏demo 游戏的截图 首先是启动界面 然后是初始化 接下来是键盘操控 ...

  5. 配合理lcd的c语言小游戏,C语言源程序LCD.doc

    C语言源程序LCD C语言源程序 //******** 小波电子工作室 All rights reserved******//******** 个人主页:/niejinbo ** //******** ...

  6. C语言编写简单朗读发音小工具!!

    各位,今天给大家带来C语言结合VBS脚本写的一个简单的朗读小工具,做一个能够发音的C语言程序(保证简单,人人都能学会). 具备的知识体系: C语言基本框架 C语言输入输出 C语言文件操作 C语言sys ...

  7. c语言设置一个选择数字的程序,C语言编一个数字益智小游戏

    程序功能及运行情况 设计的程序是一个数字益智游戏,旨在培养小朋友玩家的数学思维,提高玩家的数学能力.游戏共设有四个不同的小游戏,分别是一位数四则运算.两位数四则运算.找最值游戏.排序游戏.程序能实现产 ...

  8. c语言程序设计单元小测,C语言程序设计单元小测2.doc

    C语言程序设计单元小测2 C语言程序设计单元小测2 考试形式 闭 卷 答题时间 60 分钟 考试性质 单元测试 一.选择题:(本大题共8小题,每小题5分,共40分) 1.能正确表示逻辑关系:" ...

  9. 小C语言程序----词法分析程序输出单词

    7-2 小C语言–词法分析程序 (30 分) 小C语言文法 <程序>→(){<声明序列><语句序列>} <声明序列>→<声明序列><声 ...

最新文章

  1. 使用百度webuploader上传组件直接上传到七牛云表单上传
  2. linux nice线程,linux nice 线程
  3. CentOS6.5最小化安装+自定义安装包
  4. java gzip 多个文件_Java Zip多文件压缩和 GZIP压缩
  5. div 背景图 居中
  6. Apollo进阶课程㉛丨Apollo ROS概述
  7. spike 序列matlab,SPKtool1.0.1 神经信号spike 分类及处理 工具包 matlab 238万源代码下载- www.pudn.com...
  8. 计算机对民间音乐,《中国民间歌曲》
  9. 蓝桥杯 ADV-145 算法提高 铺地毯
  10. [转载] Python字符串常用操作命令
  11. 远程团队开发10个热门的项目管理软件
  12. java 设置压缩文件大小不变_为什么把文件压缩后,文件大小却不变呢?
  13. 基于SOA的设备智能维护系统架构设计及实现
  14. aliyun-freeSSL证书生成、下载、配置到apache httpd
  15. 如何利用云服务器快速部署一个静态网页
  16. Eclipse Maven 依赖包找不到源代码及javadoc
  17. 我的生活(小兵,班长,连长....大将)
  18. 蓝桥杯入门即劝退(二十)快乐数(我不快乐了)
  19. java request reponse 乱码的问题解决
  20. php多线程原子操作,C语言线程互斥和原子操作

热门文章

  1. 视频教程-【吴刚】电商广告设计标准视频教程-UI
  2. SQL查询语句-练习02+答案(含截图)
  3. Python花呗分析模型温馨提醒:支出不规范,收入两行泪
  4. http://blog.csdn.net/david_lv/archive/2008/06/16/2554085.aspx
  5. JAVA高考加油_高考加油发朋友圈配文 2018高考加油的励志句子短语
  6. codevs 1154 能量项链
  7. 利用Python搞定女朋友的小情绪~
  8. 微信设置特殊昵称,太上头啦•ɷ•~
  9. 如何才能快速准确地获得客户资源?
  10. 怎么找服装行业客户 找服装客户的方法