2022年编译原理实验一词法分析程序开发 .pdf

上传人:H****o 文档编号:40165982 上传时间:2022-09-08 格式:PDF 页数:11 大小:237.45KB
返回 下载 相关 举报
2022年编译原理实验一词法分析程序开发 .pdf_第1页
第1页 / 共11页
2022年编译原理实验一词法分析程序开发 .pdf_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《2022年编译原理实验一词法分析程序开发 .pdf》由会员分享,可在线阅读,更多相关《2022年编译原理实验一词法分析程序开发 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、集美大学计算机工程学院实验报告课程名称:编译原理指导教师:付永钢实验成绩:实验编号:实验一实验名称:词法分析程序开发班级:计算 1214姓名:学号:上机实践日期:2014.11上机实践时间:4 学时一、实验目的1、深入理解有限自动机及其应用;2、掌握词法分析程序的开发。;3、掌握根据语言的词法规则构造识别其单词的有限自动机的方法;4、深入理解词法分析程序自动生成原理。二、实验环境Windows7 x64、VC6.0 三、实验原理词法分析是编译过程的第一阶段。它的任务就是对输入的字符串形式的源程序按顺序进行扫描,根据源程序的词法规则识别具有独立意义的单词(符号),并输出与其等价的 Token 序

2、列。有限自动机是描述程序设计语言单词构成的工具,而状态转换图是有限自动机的比较直观的描述方法。我们使用确定的有限状态自动机,简记为DFA。PL/0 的语言的词法分析器将要完成以下工作:(1)跳过分隔符(如空格,回车,制表符);(2)识别诸如 begin,end,if,while 等保留字;(3)识别非保留字的一般标识符,此标识符值(字符序列)赋给全局量id,而全局量 sym 赋值为 SYM_IDENTIFIER。(4)识别数字序列,当前值赋给全局量NUM,sym 则置为 SYM_NUMBER;(5)识别:=,=之类的特殊符号,全局量sym则分别被赋值SYM_BECOMES,SYM_LEQ,SY

3、M_GEQ 等。相关过程(函数)有getsym(),getch(),其中 getch()为获取单个字符的过程,除此之外,它还完成:(1)识别且跳过行结束符;(2)将输入源文件复写到输出文件;(3)产生一份程序列表,输出相应行号或指令计数器的值。下面给出能够识别PL0 语言中各类单词的DFA:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -入口出错识别 PL0 单词的 DFA 表示其他S 字母标识符状态,INID 数字数字状态,INNUM 数字=,:=,=,printf(8,%sn,yytext);printf(9,%sn,yytext);printf(10,%sn,y

4、ytext);=printf(12,%sn,yytext);(printf(13,%sn,yytext);)printf(14,%sn,yytext);printf(15,%sn,yytext);printf(16,%sn,yytext);printf(17,%sn,yytext);,printf(18,%sn,yytext);printf(19,%sn,yytext);:=printf(20,%sn,yytext);%#include int main()yylex();return 0;yywrap()return 1;2、C 程序#include stdio.h#include coni

5、o.h#include string.h 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 11 页 -void main()int i=0,j;int k1=0,k2=0;char table1010=var,if,then,else,while,for,begin,writeln,procedure,end;char c;char t20=0;/缓冲,用于存放临时串学习相关编译原理第一部分实验内容 Cin.txt,r,stdin);c=getchar();while(c!=EOF)if(c=|c=n|c=t)c=getchar();else if(c=a&c=A&c=a&c=A

6、&c=0&c=9)ti+=c;c=getchar();if(c=|c=n|c=t|c=;)for(j=0;j10;j+)if(strcmp(t,tablej)=0)printf(%d,%sn,j+21,t);k1=1;/不是保留字标志break;if(k1=0)printf(1,%sn,t);/标识符if(c=;)printf(17,;n);c=getchar();else printf(100,errorn);for(j=0;j=0&c=0&c=9)ti+=c;c=getchar();if(c=|c=n|c=t|c=;)printf(2,%sn,t);if(c=;)printf(17,;n)

7、;for(j=0;j)c=getchar();if(c=|c=n|c=t)printf(8,n);else if(c=)c=getchar();if(c=|c=n|c=t)printf(12,=n);else printf(100,errorn);else printf(100,errorn);else if(c=)c=getchar();if(c=|c=n|c=t)printf(9,|c=)if(c=)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 11 页 -k2=1;c=getchar();if(c=|c=n|c=t)if(k1=0)printf(10,n);else pr

8、intf(11,=n);else printf(100,errorn);else printf(100,errorn);else if(c=+)c=getchar();if(c=|c=n|c=t)printf(3,+n);else printf(100,errorn);else if(c=-)c=getchar();if(c=|c=n|c=t)printf(4,-n);else printf(100,errorn);else if(c=*)c=getchar();if(c=|c=n|c=t)printf(5,*n);else printf(100,errorn);名师资料总结-精品资料欢迎下载

9、-名师精心整理-第 8 页,共 11 页 -else if(c=/)c=getchar();if(c=|c=n|c=t)printf(6,/n);else printf(100,errorn);else if(c=)c=getchar();if(c=|c=n|c=t)printf(7,=n);else printf(100,errorn);else if(c=()c=getchar();if(c=|c=n|c=t)printf(13,(n);else printf(100,errorn);else if(c=)c=getchar();if(c=|c=n|c=t)printf(14,)n);el

10、se printf(100,errorn);else if(c=)c=getchar();if(c=|c=n|c=t)printf(15,n);名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 11 页 -else printf(100,errorn);else if(c=)c=getchar();if(c=|c=n|c=t)printf(16,n);else printf(100,errorn);else if(c=;)c=getchar();if(c=|c=n|c=t)printf(17,;n);else printf(100,errorn);else if(c=)c=getc

11、har();if(c=|c=n|c=t)printf(18,n);else printf(100,errorn);else if(c=)c=getchar();if(c=|c=n|c=t)printf(19,n);else printf(100,errorn);名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 11 页 -else if(c=:)c=getchar();if(c=)c=getchar();if(c=|c=n|c=t)printf(20,:=n);else printf(100,errorn);else printf(100,errorn);else printf(100,errorn);c=getchar();fclose(stdin);/关闭文件 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 11 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁