编译原理上机指导

编译原理上机指导

ID:41127913

大小:681.00 KB

页数:92页

时间:2019-08-17

编译原理上机指导_第1页
编译原理上机指导_第2页
编译原理上机指导_第3页
编译原理上机指导_第4页
编译原理上机指导_第5页
资源描述:

《编译原理上机指导》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第一部分词法分析实验一、简单的扫描器设计一、实验目的:熟悉并实现一个简单的扫描器二、实验内容:1.设计扫描器的自动机;2.设计翻译、生成Token的算法;3.编写代码并上机调试运行通过。·要求:输入——源程序文件;输出——(1)相应的Token序列;(2)关键字、界符表,符号表,常数表。三、扫描器设计:扫描器单词Token1.自动机:空l/d关键字表和界符表l-1①②-单词编码dprogram3d-1procedure4③④-begin5+end6⑤-while7*do8⑥-+9:=*10⑦⑧-:11-1:=12⑨-=13……,14,;15⑩--1-2.关键字表和界符表:四、

2、程序实现:1.数据结构:charch;//当前字符charstrToken[];//当前单词char*keywords[]={“program”,“procedure”,“begin”,……};//关键字表、界符表92charID[][];//符号表intCons[];//常数表structTokenType{intcode,value;}structTokenTypeToken[];//Token数组2.算法设计:1.初始化;2.滤除空格,读取第一个非空字符到ch;3.if(ch是一个字母)4.处理关键字或标识符;5.elseif(ch是一个数字)6.处理常数;else7.

3、处理界符或错误处理;3.算法求精:·step2:ch=GetChar();//读取当前字符到chwhile(ch==’‘)ch=GetChar();·step3:intIsLetter(charch)//判断ch是否为字母{if(ch是A~Z或a~z)return1;elsereturn0;}·step4:4.1在strToken中拼成一个单词;//拼关键字或标识符4.2code=Reserve(strToken);//查关键字表;if(!code)//未查到,是一个标识符{4.3value=InsertID(strToken);//将strToken中的单词插入到符号表中4

4、.4生成并输出一个标识符Token;}else4.5生成并输出一个关键字Token;·step5:intIsDigit(charch)//判断ch是否为数字{if(ch是0~9)return1;elsereturn0;}92·step6:6.1在strToken中拼成一个单词;//拼常数6.2value=InsertConst(strToken);//将strToken中的单词插入到常数表中6.3生成并输出一个常数Token;·step7:7.1将ch中的字符拼接到strToken中;if(ch==’:’)7.2处理双界符“:=”;7.3code:=Bound(strToke

5、n);//查界符表if(!code)//未查到ProcError();//错误处理else7.4生成并输出一个界符Token;·step4.1:while(IsLetter(ch)

6、

7、IsDigit(ch)){Concat();//将ch中的字符拼接到strToken中ch=GetChar();}·step4.2:intReserve(char*strToken)//用strToken中的单词去查关键字表。查到了,则返回该关键字的编码;//否则,返回0{inti=0;while(i

8、en))return(i+3);i++;}return0;}·step4.3:intInsertID(char*strToken)//用strToken中的单词去查符号表。查到了,则返回该单词在表中的位置值;//否则,将strToken中的单词插入符号表的尾部,并返回位置值{inti=0;while(i

9、=value;Print(Token[i++]);//输出Token·step4.5:Token[i].code=code;Token[i].value=-1;Print(Token[i++]);//输出Token·step6.2:intInsertConst(char*strToken)//用strToken中的单词去查常数表。查到了,则返回该单词在表中的位置值;//否则,将strToken中的单词插入常数表的尾部,并返回位置值{inti=0;intnum;num=trans(strToken);//

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。