ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:81.50KB ,
资源ID:8341029      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8341029.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理 实验(一).doc)为本站会员(tkhy51908)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

编译原理 实验(一).doc

1、1实验编号:词法分析(1)一、 实验目的及要求设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。1 待分析的简单的词法(1)关键字:begin if then while do end所有的关键字都是小写。(2)运算符和界符: = + - * / = = ; ( ) #(3)其他单词是标识符(ID)和整型常数(SUM) ,通过以下正规式定义:ID = letter (letter | digit)*NUM = digit digit*(4)空格有空白、制表符和换行符组成。空格一般用来分隔 ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。2 各种单词符号对应的种别码:表 2

2、.1 各种单词符号对应的种别码单词符号 种别码 单词符号 种别码bgin 1 : 17If 2 := 18Then 3 21do 5 23lettet(letter|digit)*10 = 24dight dight* 11 = 25+ 13 ; 26 14 ( 27* 15 ) 28/ 16 # 03 词法分析程序的功能:输入:所给文法的源程序字符串。输出:二元组(syn,token 或 sum)构成的序列。其中:syn 为单词种别码;token 为存放的单词自身字符串;2sum 为整型常数。例如:对源程序 begin x:=9: if x9 then x:=2*x+1/3; end #的源

3、文件,经过词法分析后输出如下序列:(1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)二、 实验环境Microsoft Visual Studio VC6.0三、 算法描述是 是否字母数字 其他运算符、 符号界符等符号否是图 3-2四、 源程序清单#include “stdio.h“#include “iostream.h“#include “stdlib.h“#include “string.h“是否文件结束? 返回拼数syn=1111返回对不同符号给出相应的 syn值报错拼字符串是否关键字?syn 为对应关键字的单词种别码syn=103#define _KEY_

4、WORD_END “wainting for your expending“typedef struct int typenum;char * word;WORD;char input255;char token255=“;int p_input;int p_token,p;char ch;char * rwtab=“begin“,“if“,“then“,“while“,“do“,“end“,_KEY_WORD_END;WORD * scaner();void main()int over=1;WORD * oneword=new WORD;printf(“请输入文法的源程序字符串(按#键结束

5、):“);scanf(“%#s“,input);p_input=0;printf(“源程序为:n%sn“,input);while(overtypenumtypenum,oneword-word);over=oneword-typenum;printf(“n 按 # 键退出:“);scanf(“%#s“,input);char m_getch()ch=inputp_input;p_input=p_input+1;return(ch);void getbc()while(ch= | ch=10)4ch=inputp_input;p_input=p_input+1;void concat()tok

6、enp_token=ch;p_token=p_token+1;tokenp_token=0;int letter()if(ch=a myword-word=“;p_token=0;m_getch();getbc();if(letter()while(letter()|digit()concat();m_getch();retract();myword-typenum=reserve();myword-word=token;return(myword);elseif(digit()while(digit()concat();m_getch();retract();myword-typenum=2

7、0;myword-word=token;return(myword);elseswitch(ch)6case=:m_getch();if(ch=)myword-typenum=39;myword-word=“=“;return(myword);retract();myword-typenum=21;myword-word=“=“;return(myword);break;case+: myword-typenum=22;myword-word=“+“;return(myword);break;case-: myword-typenum=23;myword-word=“-“;return(myw

8、ord);break;case*: myword-typenum=24;myword-word=“*“;return(myword);break;case/: myword-typenum=25;myword-word=“/“;return(myword);break;case(: myword-typenum=26;myword-word=“(“;return(myword);break;case): myword-typenum=27;myword-word=“)“;return(myword);break;case: myword-typenum=28;myword-word=“;ret

9、urn(myword);break;7case: myword-typenum=29;myword-word=“;return(myword);break;case: myword-typenum=30;myword-word=“;return(myword);break;case: myword-typenum=31;myword-word=“;return(myword);break;case,: myword-typenum=32;myword-word=“,“;return(myword);break;break;case: myword-typenum=33;myword-word=

10、“:“;return(myword);break;case;: myword-typenum=34;myword-word=“;“;return(myword);break;case: m_getch();if(ch=)myword-typenum=37;myword-word=“=“;return(myword);retract();myword-typenum=35;myword-word=“;return(myword);break;casetypenum=38;myword-word=“=“;return(myword);retract();myword-typenum=36;mywo

11、rd-word=“typenum=40;myword-word=“!=“;return(myword);retract();myword-typenum=-1;myword-word=“ERROR“;return(myword);break;case0: myword-typenum=1000;myword-word=“OVER“;return(myword);break;default: myword-typenum=-1;myword-word=“ERROR“;return(myword);五、 运行结果及分析输入 begin x:=9: if x9 then x:=2*x+1/3; end # 后经词法分析输出如下序列:(begin 1)(x 10)(:17)(= 18)(9 11)(;26)(if 2)9

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报