




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 词法分析器的设计一、实验目的 (1)学会针对转换图实现相应的高级语言源程序。 (2)深刻领会状态转换图的含义,逐步理解有限自动机。二、实验内容 (1)某计算机语言的编译程序的词法分析部分实现。 (2)从左到右扫描每行该语言源程序的符号,拼成单词,换成统一的内部表示(token),送给语法分析程序。三、实现原理程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码形式的编码,用以区分之。pl/0语言的ebnf表示:=;:=|;:=+|-:=*|/:=|#|=:=a|b|x|y|z:=0|1|2|8|9四、设计过程1 关键字:void,main,if,
2、then,break,int,char,float,include,for,while,printfscanf 并为小写。 2+”;”-”;”*”;”/”;”:=“;”:”;”“;”“;”=“;”“;”=“;”(“;”)”;”;”;”#”为运算符。3 其他标记 如字符串,表示以字母开头的标识符。 4 空格符跳过。 5 各符号对应种别码 关键字分别对应1-13运算符分别对应401-418,501-513。字符串对应100常量对应200结束符#五、心得体会其实匹配并不困难,主要是c+知识要求相对较高,只要把握住指针就好了。附源程序:#include#include#include #include
3、int i,j,k,flag,number,status;/*status which is use to judge the string is keywords or not!*/char ch;char words10 = ;char program500;int scan(char program) char *keywords13 = void,main,if,then,break,int, char,float,include,for,while,printf, scanf;number = 0;status = 0;j = 0;ch = programi+; /* to hand
4、le the lettle space ands tab*/ /*handle letters*/if (ch = a) & (ch = a) & (ch = z )wordsj+=ch;ch=programi+; i-; wordsj+ = 0; for (k = 0; k = 0) & (ch = 0 ) & (ch : if (ch = ) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; flag = 403; else i-; flag = 404; break;case:
5、if (ch = ) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; flag = 405; else i-; flag = 406; break;case!: if (ch = !) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; flag = 407; else i-; flag = 408; break;case+: if (ch = +) wordsj+ = ch;
6、 wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; flag = 409; else if (ch = +) wordsj+ = ch; wordsj = 0; flag = 410; else i-;flag = 411; break;case-: if (ch = -) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch;wordsj = 0;flag = 412; else if( ch = -) wordsj+ = ch;w
7、ordsj = 0;flag = 413; else i-;flag = 414; break;case*: if (ch = *) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; flag = 415; else i-; flag = 416; break; case/: if (ch = /) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; flag = 417; el
8、se i-; flag = 418; break;case;: wordsj = ch; wordsj+1 = 0; flag = 501; break; case(: wordsj = ch; wordsj+1 = 0; flag = 502; break; case): wordsj = ch; wordsj+1 = 0; flag = 503; break;case: wordsj = ch; wordsj+1 = 0; flag = 504; break; case: wordsj = ch; wordsj+1 = 0; flag = 505; break; case: wordsj
9、= ch; wordsj+1 = 0; flag = 506; break; case: wordsj = ch; wordsj+1 = 0; flag = 507; break; case: wordsj = ch; wordsj+1 = 0; flag = 508; break;case: wordsj = ch; wordsj+1 = 0; flag = 509; break;case%: if (ch = %) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; flag = 5
10、10; else i-; flag = 511; break;case,: wordsj = ch; wordsj+1 = 0; flag = 512; break;case#: wordsj = ch; wordsj+1 = 0; flag = 513; break;case: wordsj = #; flag = 0; break;default: flag = -1; break;return flag;main()i=0;printf(please input a program end with );do ch = getchar(); programi+ = ch;while(ch != ); i = 0;do flag = scan(program)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上门注塑承包合同协议
- 建筑合同分包协议书范本
- 建筑工程绩效合同协议
- 建筑钢筋供货合同协议
- 驻场法律服务合同协议
- 店面房屋改造合同协议
- 店面及设备转让合同协议
- 开发商认购协议合同
- 三级医院合同协议
- 合同解除结算协议书范本
- 2025年上海市虹口区高三语文二模作文题目解析及5篇范文:机器成为思想的引擎必将给芦苇带来深刻的变化
- 2025年甘肃西北永新集团招聘11人笔试参考题库附带答案详解
- 检测站登录员试题及答案
- 委托选矿加工合同协议
- 食堂应急预案管理制度
- CISP-PTE培训课件教学课件
- 2025年新高考历史预测模拟试卷黑吉辽蒙卷(含答案解析)
- 2025年医院文化节活动策划
- 部队防雷电暴雨安全知识
- 自然辩证法论述题146题带答案(可打印版)
- 十八项医疗核心制度培训新版-课件
评论
0/150
提交评论