




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编写原理课程设计报告实验1:用Lex设计的词汇分析器1目的:学习如何用lex设计词法分析器。实验内容:用lex为下面的语法语言写一个词法分析器。实验要求:输入用这种语言编写的源程序文件;输出是令牌序列,每个令牌显示为二进制组(令牌名称、令牌属性值)。输出可以在屏幕上,也可以在文件中。不需要符号表。在cygwin下,flex和gcc工具用于调试实验,并且可以通过示例parser0中testcases目录下test1.p测试用例的测试。参考:exam1.l和exam2.l。语言语法:程序标识符;子程序子程序变量描述BEGIN语句表END。变量描述变量描述表;变量描述表变量表:类型|变量表:类型;变量描述表键入整数|实数变量表语句表语句|语句;语句表语句赋值语句|条件语句|复合语句赋值语句变量:=算术表达式条件语句IF关系表达式THEN语句ELSE语句而关系表达式DO语句复合语句开始语句表结束算术表达式项目|算术表达式项目|算术表达式-项目项目因素因子变量|常数|(算术表达式)关系表达式算术表达式关系运算符算术表达式变量标识符标识符字母|标识符数字|字母常数整数整数浮点数。整数|整数。整数关系|=|=| |=| |字母A | B | | X | Y | Z | a | b | | x | y | z数字0|1|2|9程序代码:%#包括#定义LT1#定义元素2#定义GT3#定义4#定义Q5#定义NE6#定义程序7#定义END13#定义VAR9#定义IF10#定义THEN 11#定义ELSE 12#定义时间18#定义19#定义识别码20#定义数字21#定义RELOP 22#定义NEWLINE 23#定义ERRORCHAR 24%delim t nwsdelim字母A-Za-z数字0-9id _ | letter ( letter | digit )*数字digit (。digit)?(东 -?digit)?int1 digit|digitint1*/%s COMMENT%/* BEGIN COmment;欧共体人道处;*/ BEGIN INitial;欧共体人道处;。| n ECHO/* ECHO是一个相当于fprintf的宏(yyout、“%s”、yytext)*/ ws while 返回(WHILE);返回;程序返回(程序);结束返回(结束);增值收益;如果返回(IF);然后返回(然后);else 返回(ELSE); ID return(ID); NUMBER return(NUMBER);“ return(RELOP)”;= return(RELOP);= return(RELOP);“ return(RELOP)”;“ return(RELOP)”;= return(RELOP);“ return(RELOP)”;-“ return(RELOP)”;* return(RELOP);/ return(RELOP);:= return(RELOP);”返回(RELOP); 返回(RELOP);“” return(RELOP);。 return ERRORCHAR%int yyy wrap()返回1;void writeout(int c)开关(c)case ERRORCHAR : fprintf(YY out,(ERRORRCHAR, %s ),YY text);休息;case RELOP: fprintf(yyout,(RELOP, %s ),YY text);休息;case WHILE: fprintf(yyout,(WHILE, %s ),YY text);休息;判例DO: fprintf(yyout,(DO, %s ),YY text);休息;case NUMBER: fprintf(yyout),(NUM, %s ),YY text);休息;案例ID: fprintf(yyout),(ID, %s ),YY text);休息;case NEWLINE: fprintf(yyout, n );休息;case PROGRAMME : fprintf(YY out),(PROGRAMME, %s ),YY text);休息;case END: fprintf(yyout,(END, %s ),YY text);休息;case VAR: fprintf(yyout,(VAR, %s ),YY text);休息;case IF: fprintf(yyout,(IF, %s ),YY text);休息;case THEN: fprintf(yyout,(THEN, %s ),YY text);休息;判例ELSE: fprintf(yyout,(ELSE, %s ),YY text);休息;默认值: break;返回;int main (int argc,char * argv)int c,j=0;if (argc=2)if (yyin=fopen(argv1), r )=NULL)printf(“无法打开文件%sn”,argv1);返回1;if (argc=3)yyout=fopen(argv2,w);而(c=yylex()注销(c);j;如果(j%5=0)写出(NEWLINE);if(argc=2)fc lose(yyin);if(argc=3)f close(YY out);返回0;测试文件是Test1.p:程序测试;VAR i,j,k: INTEGER。f0: REAL开始I :=1;j :=1;k :=0;f0 :=3.2当k=100 DO时开始如果j 20,那么开始j :=I;k :=k 1;f0 :=f0*0.2目标其他开始j :=k;k :=k-2;f0 :=f0/.2目标目标结束。运行结果:实验2:用Lex设计的词汇分析器2实验的目的是学习如何用lex设计词法分析器,并考虑它与后续分析器的联系。实验内容:修改最后一个实验1的词法分析器,以满足以下要求。实验要求:1.只需要一个令牌);每次调用词法分析函数yylex时返回;2.为标记选择适当的属性值,并在每个词法分析函数返回标记之前将标记的属性值存储到全局变量yylval中。(yylval可以将自己定义为全局变量);3.令牌属性值的选择:标识符的属性是标识符的名称字符串(例如,标识符名称1的属性是字符串“name1”),整数的属性是整数值,浮点数的属性是浮点值。其他令牌属性值可以自己选择。关键字可以省略属性。4.注意:由于属性值需要存储在yylval中,并且令牌属性值有多种类型(可能是字符串、整数、浮点数等)。),yylval必须能够同时存储各种类型的值(提示:将yylval设置为联合类型)。5.在cygwin下使用flex和gcc工具调试实验,并通过示例parser0中testcases目录下test1.p测试用例的测试。实验三:熟悉雅卡实验目的:熟悉语法分析器生成工具Yacc的用法,并学会在cygwin下用bison工具编译Yacc语法规范文件。学习如何使用lex和yacc进行语法分析。实验内容:根据给定的计算器示例(计算器0、计算器1、计算器2、计算器3),完成以下主题:用lex和yacc编写一个计算器来计算布尔表达式的真值。实验要求:输入是以换行符结束的布尔表达式。输出是该布尔表达式的真值(真或假)。它必须通过使用歧义语法来实现。布尔表达式歧义语法是:ss或s | s和s | nots | (s) | true | false,其中优先级或与非,或与左组合,而不是右组合。使用非歧义语法实现作为可选内容。请参考表达非歧义语法自己写非歧义语法。在cygwin下,使用flex、bison和gcc工具来调试实验,并编写测试用例来测试正确性。实验参考:计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中山市中石油2025秋招笔试模拟题含答案市场营销与国际贸易岗
- 中国联通深圳市2025秋招技术岗专业追问清单及参考回答
- 阿克苏市中石油2025秋招面试半结构化模拟题及答案安全环保与HSE岗
- 大唐电力绵阳市2025秋招面试专业追问及参考综合管理岗位
- 大唐电力通化市2025秋招笔试题库含答案
- 临汾市中石油2025秋招面试半结构化模拟题及答案法律与合规岗
- 滁州市中石化2025秋招面试半结构化模拟题及答案市场营销与国际贸易岗
- 毕节市中石油2025秋招面试半结构化模拟题及答案炼油设备技术岗
- 大唐电力大兴安岭地区2025秋招能源与动力工程专业面试追问及参考回答
- 保山市中石油2025秋招笔试模拟题含答案法律与合规岗
- 购车没过户协议书
- 转让店铺欠款协议书
- 《建筑电气安装》课件
- 《山东省房屋市政施工安全监督要点》及《安全监督“二十要”》2025
- 2025年湖南环境生物职业技术学院单招职业技能考试题库带答案
- 生物安全管理体系文件
- 河道疏浚外运施工方案
- 银行职业介绍课件
- 辽宁省盘锦市大洼区田家学校2024-2025学年九年级上学期第四次质量检测语文试卷
- 砖砌围墙施工方案
- 《人工智能导论》(第2版)高职全套教学课件
评论
0/150
提交评论