版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一词法分析器设计【实验目的】1. 熟悉词法分析的基本原理,词法分析的过程以及词法分析中要注意的问题。2. 复习髙级语言,进一步加强用高级语言来解决实际问题的能力。3通过完成词法分析程序,了解词法分析的过程。【实验内容】用C语言编写一个PL/O词法分析器,为语法语义分析提供单词,使之能把输入的字符串形 式的源程序分割成一个个单词符号传递给语法语义分析,并把分析结果(基本字,运算符,标识 符,常数以及界符)输出。【实验步骤和要求】1. 要求绘出词法分析过程的流程图。2. 根据词法分析的目的以及内容.确左完成分析过程所需模块。3. 写岀每个模块的源代码。/源程序如下:# i n cl u d e
2、 <io s t r e a m>#incl u de <cty p e .h># include < f s t ream>#incl u de <st r in g h>#includ e <ma 1 loc.h># d efine NU L L Mabc°us i ng n a mespa c e std;ifst r eam f p(nd: cifa. c pp,ios:i n );c h ar c c h ;char *key12=,rif Vel swhile M , 11 do H return M , Mbr
3、 e akM;rco n t inue,Hint M;,voi d M,Mmain M , Hc onstH :/ / 基本字cha r * border 10= M , 11 :11 V . T, T , T,八'"" ; 界符char *ari t hmetic 6=,+M , y * , M /M+”,;/算术运算符ch a r *rela t i on7 = VM =n, n >M , M> = M , H = = v! =M);/关系运算符ch a r * lab 1 e c o n s t 80 ;/标识符i nt c on s tnum=
4、4 0;int lablecons t n u m= 0 ;int se a rch(char sea r ch c har 5 i n t wordty p e)i n t i=0, t = 0 ;s w i tch (w o r dty p e)c ase 1:for (i= 0 ; i <=ll:i+)(if (str emp (ke y i,sc a rc h c har)= 0 )ret urn(i+l);r e t u rn(0);cas e 2:for (i=0; i<=9;i+)if (s t r c mp(bor der 订,sear chch a r)=0)re
5、turn (i+1):ret u r n(0);cas e 3:for (i=0;i<=5;i+)i f (strcmp( a rithm e t i c i ,searchch a r )= 0 ) re tum(i+l);re t u m(0):c ase 4:for ( i = 0 ;iv=6:i+)i f (str c mp( r ela t i o ni,sea r chchar)=O) r eturn(i+l);retur n (0);ca s e 5:fo r (t=40; t <=constnum; t + + )i f ( s trcmp(searchc h a
6、r, 1 a b i e c o n s tt)=O) re t u rn(t+l);lableconstt-l= (ch a r *)mall o c(sizeof(s e archchar);strcpy ( I ableconst t-1,searchchar):c o nstnum+;ret u r n(t);case 6:for ( i = 0 : i<= 1 abl e con s tnum;i+)if (st r cmp(s e arc h c h ar, lablecon s t i )=0)rcturn(i+l);1 a b 1 ec o nst i-1 =( c ha
7、r *)malloc (s i ze o f(sea r c h c ha r );str c py ( I a b leco n s t i -lt s e a rchch a r);1 a bl e constnum+;return (i);def a ul t :coutv V 错误!";cha r alph a proces s (charch)int atype;i n t i=-l:char alpha t p 2 0:while ( ( i sa 1 ph a (ch) II (isd i g i t(ch)alp h atp+i=ch;f p g et( c h);a
8、lph a tpi+l=z 0:if (atype= s care h (al p h a(p 1 )c ou t«a 1 p ha t p«Ht t tH<<(atype- 1 )«endl:elseat y pe=s e ar c h(alp h a t p , 6 );co u t<< a 1 p hat p «H t tt°<< (a t ype-l)<<end 1;r e tu r n ( c h );char d i gitpr o ce s s(c h arch)inti =-1 :
9、c h ar digittp 20;int d ty p e :while (isd i g i t(ch )d i gi t tp+i=ch:fp g e t ( c h);digittpi+l=;dtype = s earch (digi 11 p ,5);cou t «digitt p «Ht t t M «(dty p e -40) << e ndl: retu r n(ch);ch a r o t h erpro c es s (c h ar c h )int i= 1;char othertp 20;int ot y pc.oty p et
10、p:othertp0=ch:o t h e rtpfif (o t y p e=search(o t h e r t p.3)fp. g et(ch);ot h e rtpl=ch;othertp 2=0 ;if ( o t y p etp =sea r ch(ot h crtp,3)co u t« o t h ert p <<u tt t " «(o t y p etp-l)<<en d 1: f p g e t ( c h): goto out;e Iseot h e rtp 1 =0:c o u t « o t hertp&
11、#171;u t ttH«( o ty p e-l)<<end 1 ; goto o ut:if (o t ype=se a rch(othert p ,4)f p g e t (ch);o t h e rtpl=ch;other t p 2=0:if (o t ype t p =se a rc h (othertp, 4)co u t <<o t hertp« " tt t H<<(otypetp-1 )«end 1 ; fp. get(ch); g oto out;elseothertpl=0*;c out
12、1; o th e r t p<< ” tttH«(oty p 1 )vv e ndl;got o ou t :i f (ch=,!1)f p g e t(ch);i f(ch = = ' 7 )co u t« * ! =(2,2)1V;fp.ge t (ch);go t o out;elsei f (o t y p e =sea r ch( o thertp.2)c o ut«oth e r t p «Ht t t M<<(o t y p e -1 )«e n d 1; fp.get( c h ):got o
13、out;)i f ( ( ch!n')&& (ch ! = '*)c o ut<<H错误!,字符非法,y v" tt tH«ch«endl;f p .get( c h);o ut: r e tu r n (ch);vo i d main()i nt i ;for (i= 0 : i v=50;i+)lablec o nst i=NU L L;if(! f p )cout«"文件打开错误! '«e ndl;els efp. g e t (c c h);while (! f p.e o
14、f()i f ( i salp h a (cch)c ch=a 1 pha p roc e ss( c c h);e Is e if (is d igit( c ch)cch=d i gitpr o cess (cc h );e I se c c h =othcrp r oc e s s (cch);cout« 成功1V;g e t c ha r (); c i f a cpp#i n elude<s t dio.h>voi d ma i n ()cou t «He 1 lo Wo rid";Z "E:Sf建文Debugl.exe*B5BI餌误一字符祚法ttinclude0<0sCdio1错误!,字符非法h2>3void9main10<4>5<2错误!与符非法cout3<0<U铸误!.字符非袪Hello4World5错误| 字符非法9t>3咸功【实验小结】通过这次实验,我对编译原理这门专业必修课有了进一步的深层次了解,把理论知识应用于 实验中,也让我重新熟悉C语言的相关内容,加深了对C语言知识的深化和用途的理解。实验二LL (1)语法分析程序设计【实验目
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年新疆铁道职业技术学院单招综合素质笔试备考试题附答案详解
- 宠物批发买卖合同范本
- 委托车辆经营合同范本
- 工地垫板租赁合同范本
- 2025年上海师范大学辅导员招聘备考题库附答案
- 扶养权委托监护协议书
- 广告门头合作合同范本
- 扬州拆迁合同协议模板
- 就业协议书就三方协议
- 2026年天津机电职业技术学院单招综合素质笔试模拟试题附答案详解
- DL-T 5117-2021水下不分散混凝土试验规程-PDF解密
- 审计署研究型审计案例
- 名著《红楼梦》知识考试题及答案
- 大气道狭窄护理课件
- 水电厂电气自动化监控系统功能分析
- DB11T 381-2023 既有居住建筑节能改造技术规程
- 计算机应用数学基础 教学 作者 王学军 计算机应用数学课件 第10章 图论
- DF6205电能量采集装置用户手册-2
- 电子电路基础-电子科技大学中国大学mooc课后章节答案期末考试题库2023年
- 四年级科学上册期末试卷及答案-苏教版
- 怀仁县肉牛养殖产业化项目可行性研究报告
评论
0/150
提交评论