2022年编译原理实验—词法分析 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年编译原理实验—词法分析 .pdf》由会员分享,可在线阅读,更多相关《2022年编译原理实验—词法分析 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验一词法分析有如下算术运算文法:1)E-E+T 2)E-E-T 3)E-T 4)T-T*F 5)T-T/F 6)T-F 7)F-(E)8)F-I 9)I-十进制实数|十进制整数|十六进制实数|十六进制整数|八进制实数|八进制整数10)十进制实数-(0|(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*).(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*11)八进制实数-0(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*.(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*12)十六进
2、制实数-0 x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*.(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*13)十进制整数-名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -0|(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*14)八进制整数-0(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*15)十六进制整数-0 x(0|1|2|3|4|
3、5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*单词分类:运算符:+-*/()常数:十进制实数十进制整数十六进制实数十六进制整数八进制实数八进制整数1.实验目的实现一个词法分析程序,将输入字符串流分解成单词流供语法分析使用。2.实验要求输入算术运算式,输出分解后的单词流,例如:输入(0124.3+0 x35a.4f)*12输出:名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -运算符(八进制实数0124.3 运算符+十六进制实数0 x35a.4f 运算符)运算符*十进制整数12 注意:输入可以是键盘输入,也
4、可以是文件输入如果单词输入错误,必须有提示,例如:输入 12a+45*013468-0 x23a3 输出错误数据 12a 运算符+十进制整数45 运算符*错误数据0123468 运算符-十六进制整数0 x23a3/如(0124.3+0 x35a.4f)*12/如a+45*013468-0 x23a3 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -#include#include/#include stdafx.h union chars /联合,可存储字符串,整型和浮点型char pro_char15;int pro_number;float real;struct
5、 data /将每个单元用一个结构来存储,其内容包括:类型,所属的具体类型,以及属性值char kind7;int id;union chars pro;int scan(char *a);/对每个用空格打断的单元进行进一步的分析,对其进行进一步的分类void Prints(char a15,int id,int a_long);/将分析后的每个token 输出void save(char *a,int id,int x);/将分析后的结果保存到一个结构数组中char nowChar15;/临时的存储单元,用来存储被空格打断以后单元char kinds118=,INT10,INT8,INT16
6、,IDN,REAL10,REAL8,REAL16;/单词的不同种别struct data link100;/用来存放词法分析以后的结果的结构数组int link_long=0;/全局变量int scan(char *a)/int id;int a_long=0;int doc=0;while(*a!=NULL)nowChar0=0;a_long=0;doc=0;/对数值的判断及处理if(0=*a&*a=9)/如果第一个字符为数值nowChara_long=*a;*a+;a_long+;/对十六进制的判断及处理if(nowChar0=0&(*a=x|*a=X)/如果第一个字符为0,且第二个字符为
7、x,则为十六进制数nowChara_long=*a;*a+;a_long+;while(*a!=NULL&(0=*a&*a=9)|(a=*a&*a=f)|(A=*a&*a=F)|*a=.)nowChara_long=*a;/一直将此十六进制数完全读入,若为浮点型的,则加以标记if(*a=.)doc=1;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -*a+;a_long+;nowChara_long=0;/判断输入的十六进制数是否合法if(a_long=2)/输入的只有 x,则输入错误Prints(nowChar,7,a_long);return 0;if(doc)/
8、输入的十六进制数是浮点型的Prints(nowChar,10,a_long);/则将其具体的类型属性定为else/输入的十六进制数是整型的Prints(nowChar,3,a_long);/则将其具体的类型属性定义为continue;/对八进制的判断及处理if(nowChar0=0&0=*a&*a=7)/如果第一个字符为0,且第二个字符,07,则为八进制数nowChara_long=*a;*a+;a_long+;while(*a!=NULL&(0=*a&*a=7)|*a=.)nowChara_long=*a;/一直将此八进制数完全读入,若为浮点型的,则加以标记if(*a=.)doc=1;*a+
9、;a_long+;nowChara_long=0;if(doc)/输入的八进制数是浮点型的Prints(nowChar,9,a_long);/则将其具体的类型属性定为else/输入的十六进制数是整型的Prints(nowChar,2,a_long);/则将其具体的类型属性定义为continue;/对十进制数的判断及处理else while(*a!=NULL&(0=*a&*a=9)|*a=.)nowChara_long=*a;/一直将此十进制数完全读入,若为浮点型的,则加以标记if(*a=.)doc=1;*a+;a_long+;nowChara_long=0;名师资料总结-精品资料欢迎下载-名师
10、精心整理-第 5 页,共 10 页 -if(doc)/输入的十进制数是浮点型的Prints(nowChar,8,a_long);/则将其具体的类型属性定为else/输入的十进制数是整型的Prints(nowChar,1,a_long);/则将其具体的类型属性定义为continue;/完成了对数值的判断及处理 /对字符的判断及处理else nowChara_long=*a;*a+;a_long+;/判断输入的字符是否为运算符或其他的分隔符switch(nowChar0)case+:case-:case*:case/:case:case(:case):case=:case;:nowChara_lo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年编译原理实验词法分析 2022 编译 原理 实验 词法 分析
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内