编译原理实验讲义_第1页
编译原理实验讲义_第2页
编译原理实验讲义_第3页
编译原理实验讲义_第4页
编译原理实验讲义_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编译原理实验讲义 ver 0.4 实验一 C_minus语言词法分析器的设计(6学时) 【目的】设计一个简单的词法分析器,从而进一步加深对词法分析器工作原理的理解。 【要求】 1、该个词法分析器要求至少能够识别以下几类单词: a. 关键字:else if int return void while 共6个,所有的关键字都是保留字,并且必 须是小写; b. 标识符:识别与 C语言词法规定相一致的标识符,通过下列正则表达式定义: ID = letter (letter | digit)* ; c. 常数:NUM=(+ | - | e )digit digit*(.digit digit* |科学计

2、数法表示的常数,如+1.23e3, -2.3e-9; d. 专用符号:+ - * / = = != = ; , ( ) /* */; 2、分析器的输入为由上述几类单词构成的程序,输出为该段程序的机内表示形式,即 关键字、运算符、界限符变为其对应的机内符,常数使用二进制形式,标识符使用相应的标 识符表指针表示。 3、 词法分析器应当能够指出源程序中的词法错误,如不可识别的符号、错误的词法等。 【方法与参考】 首先给出所有单词的正规式(或正规文法)表示,然后将其转化为NFA,再将NFA确 定化、最小化,得到最简的 DFA,根据DFA编写词法分析器的代码。 【实验环境和工具】本实验不限定现所使用的开

3、发工具以及运行环境。 实验二 递归下降分析器的设计(6学时) 【目的】使用递归子程序法设计一个语法分析程序,理解自顶向下分析方法的原理,掌握 手工编写语法分析程序的方法。 【要求】 1、使用递归下降分析算法分析表达式文法: exp := exp addop term | term addop := + | - term := term mulop factor | factor mulop := * | / factor := (exp) | number 其中number可以是多位的十进制数字串(整数即可),因此这里还需要一个小的词法 分析器来得到number的值。 2、该词法分析器以子程序

4、形式出现,当需要进行词法分析时进行调用; 3、能够识别正确和错误的表达式; 4、在进行语法分析的过程中,计算输入表达式的值。 【方法与参考】首先将上述文法改写成 EBNF形式,根据递归下降分析算法基本思想编写 程序。 【实验环境和工具】本实验不限定现所使用的开发工具以及运行环境。 实验三 算符优先分析法分析器的设计(6学时) 【目的】 设计一个算符优先分析器,理解优先分析方法的原理。 【要求】使用算符优先分析算法分析下面的文法: E t #E# E t E+T | T T t T*F | F F t Paf | P P t (E) | i 其中i可以看作是一个终结符,无需作词法分析。具体要求如

5、下: 1. 如果输入符号串为正确句子,显示分析步骤,包括分析栈中的内容、优先关系、输 入符号串的变化情况; 2. 如果输入符号串不是正确句子,则指示出错位置。 【方法】首先构造算符优先关系表,然后根据算符优先分析算法编写程序。 【实验环境和工具】本实验不限定现所使用的开发工具以及运行环境。 /根据算符优先文法的分析规则求得终结符优先关系表 / / / / / / / / #include #in clude #in clude #in clude void mai n() char youxia n 77; /算符优先关系数组 /将算符优先关系存放在算符优先关系数组里 youxia n 00=

6、: youxia n 01=: youxia n 02=: youxia n 03=: youxia n04=: youxia n 05=: youxia n 06=: / youxia n10=: youxia n11=: youxia n12=: youxia n13=: youxia n14=: youxia n15=: youxia n16=: / youxia n 20=: youxia n 21=; youxia n 22=: youxia n 23=: youxia n24=: youxia n 25=; youxia n 26=; / youxia n 30=; youxia

7、n31=: youxia n 32=: youxian33=$;无优先关系的用$表示 youxia n34=$: youxia n 35=; youxia n 36=; / youxia n40=: youxia n41=: youxia n42=: youxia n43=: youxia n44=: youxia n45=; youxia n4 6=$; / youxia n50=: youxia n51=; youxia n52=; youxia n5 3=$; youxia n5 4=$; youxia n55=; youxia n56=; / youxia n60=: youxia n

8、61=: youxia n62=: youxia n63=: youxia n64=: youxia n65=$: youxia n66=: / *n); n); n); printf(”现在就要进行算符优先分析,请做好准备 printf( printf(”请输入要进行分析的句子 也许你最后也没能环游世界,可是你在实现梦想的途中找到了自己。 那是能够为了一个目标默默努力的自己,不抱怨,不浮躁,不害怕孤单,沉默却又努力的自己。 说不定你想要苦苦追寻的梦想,已经握在你手中了。 我们会觉得焦虑,无非因为现在的我们,跟想象中的自己很有距离,不喜欢现在的自己。 只有拼命地想办法去改变,只有马上行动起来,因为这个事情只有你自己能做到,只有你自己能找到出口。 不要害怕改变,那些真正爱你的人会理解你,会包容你的缺点,接受你的改变,祝福你的未来。 而那些说你变了的人,不用理会他们,那只是因为你不再按照他们想要的生活轨迹生活而已。 记住那些一直陪着你的人、懂你沉默的人,忘掉那些说你变了、远离你的人。 事实上,你

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论