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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(编译原理语法分析程序设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理语法分析程序设计.docx

1、编译原理语法分析程序设计一、实验内容和目的1.已知待分析的C语言子集的语法,用EBNF表示如下:(1)程序 f mai n() 语句块(2)语句块f“” 语句串“”(3)语句串f 语句;语句;(4)语句f 赋值语句|条件语句|循环语句(5)赋值语句f ID = 表达式(6)条件语句f if(条件)语句块(7)循环语句f while(条件)语句块(8)条件 f 表达式 关系运算符 表达式(9)表达式f 项 +项|项-项(10)项f 因子*因子|因子/因子(11)因子 f ID |NUM |(表达式 )(12)关系运算符 f|=|=|=|!=2.实验目的、要求实现的功能实验目的: 编制一个语法分析

2、程序, 实现对词法分析程序所提供的单词序列进行语法检查 和结构分析。实验要求:在上机 (一)词法分析的基础上, 采用递归子程序法或其他适合的语法分析方法, 实现其语法分析程序。要求编译后能检查出语法错误。3.将实验方法改写为适合 预测分析法 的文法如下:(1)程序f main()语句块(2)语句块 f 语句串(3)语句串 f 语句 ; 语句串(3_1) 语句串f (4)语句 f 赋值语句(5)语句 f 条件语句(6)语句 f 循环语句(7)赋值语句fID= 表达式(8)条件语句 f if(条件 )语句块(9)循环语句fwhile(条件)语句块(10)条件f 表达式 关系运算符 表达式(11)表

3、达式f 项表达式(11_1) 表达式、f+项表达式(11_2) 表达式f -项表达式(11_3) 表达式、f (12)项f 因子项(12_1) 项、f*v 因子 项 (12_2) 项、f/ 因子 项 (12_3) 项、f (13) 因子 f ID(14) 因子 f NUM(15)因子f (v表达式)(16)关系运算符 f(17)关系运算符 f =(18)关系运算符 -(19)关系运算符=(20)关系运算符=(21)关系运算符!=4.求改写后文法的非终结符号的 FIRST集和FOLLOW集:非终结符号FIRSTFOLLOW程序 :mai n#语句块# ;语句串ID if while 语句ID i

4、f whileJ赋值语句IDJ条件语句ifJ循环语句whileJ条件ID NUM ()表达式ID NUM (=!=);表达式 :+ - =!=);ID NUM (+ -=!=);* / + -=!=);因子 :ID NUM (* /关系运算符= !=ID NUM (5.根据求得的FIRST集和FOLLOW集构造LL(1)分析表如下:表格内空白的部分表示“出错”,非空白部分表示要压入分析栈中的文法符号,是按照对应产生式的逆序存放的,即当查找分析表时,表格内的内容从左至右依次入栈第3步中改写文法的LL(1)分析表mainifwhileIDNUM()+-*/ =!=;#程序)(main语句块语句串语

5、句串语句串 ; 语句语句条件语句循环语句赋值语句赋值语句表达式=ID条件语句语句块)条件(if循环语句语句块 ) 条件(while条件表达式 关系运算符 表达式表达式表达式 项表达式表达式项 +表达式项-项因子*/因子IDNUM) 表达式(关系运算符 =!=二、 所用仪器、材料(设备名称、型号、规格等)操作系统:Microsoft Win dows 7开发平台:Microsoft Visual Studio 2010三、 实验方法、步骤登录Microsoft Windows 7操作系统打开Visual Studio 2010开发平台新建“项目”“Win32控制台应用程序”输入项目名称“应用程序

6、设置”勾选“空项目”复选框右击左侧“解决方案资源管理器”下的“源文件”“添加”“新建项”新建一个“ C+文件(.cpp)”在新建的.cpp文件中输入语法分析代码调试运行记录结果完成实验报告。四、 实验过程原始记录(数据、图表、计算等)源代码见实验报告所在目录下的 yangdongdong_2.cpp以下是部分程序代码的截图:31nt37 838 5393 15 + int laoJcupTable (int nonTenninaJ-, class No, FILE oFiie)6 6?| 语法分析程序样+|inr gait瞪丄irinG匚二己rrir亡二; Y调用语三分产握言:return 0

7、;五、实验结果测试一:输入文本1 (in putl.cpp):1bofilD ()20 43a=a41;4if (a3)sE3 Gsurt=suit-Fi ;7一 Is. fa3EQ 103knr-Bun-l ;1 L- 、亠*123uir=aj5UJT-a/3Ujr;13 -调用语法分析程序后的运行情况:输出output1.txt文件:tD:)卜工具帶陆(H)共品 制录 新建文件夹燈改日期,CLltputl.tKt2010/12/12 15:24立年文档吋 input2,cpp2010/12/12 15:21C+ Sourceinputlcpp2010/12/12 15:08C*+ Sour

8、ceoutput1.txt文件中的内容如下:I outputl txt -远事本文嚨(0 鞭旧 艳式回 壹看巴 壽期ttDnain( ) /?ID=IEKPB E0SIDI1_ FACT0R? -ID+ FACT0R? -HUH; 1F() EXPRESS I0NXRELA _OPTXEKPRESSIOH ID ( : 1D- ID+ NUM: while7)文悴(0 濡施1艳式d 童看也|LIHE8: tfhile(COHDI f I UN?) H4LINEL8J: -LIHE8: LIHE8: yLINE町: IDL1NE8: LINE8: 坨MULLLINE8: =LIHE8: LINE

9、: LINE8: NUMLINE8: LINE8: L1NE9: yLINE10: stnt7;LIHE10: FLINE1B: ID-LINETIBl: LINE-10: LINE1O: IDLIHE10: LIHET101: -LIHEflB: LIHE18z HUHLIHE10: Jcutputl txt -记事本r| outputl txt -记事本文样is 礎 植式gj童看M 務旬砂语法扫描咸功完咸丿注:语法分析程序本身只要求输出分析结果,此处暂时将每一步推导所用的产生式输出, 方便对照检查,LINEN表示第N行,以下测试类似,不再说明。测试二:输入文本2 (input2.cpp):

10、1 iAin(3)20 :if(a=9J (5Wi=5:5iiir-G 13 1- 调用语法分析程序后的运行情况:输出output2.txt文件(D:)卜丄貝CD* 刻录 新童丈件夹燈改日期outputs .tirt2010/12/12 16:35,OUtpUtl.tKt2010/12/12 16:24也 input2xpp2010/12/12 15;21d SourceOutput2.txt文件中的内容如下:output2.tvt ” 远事本IZZ3文祥(E)漏辑近宿式壹看塑帮助(H)LIHE1J:LINE1: LINE2J: LINE3: LIHE3J: LINE3: LINE3:LIKE

11、3J:LINE3=LINE3|:LIHE3: LIHE3: LIHE9J: LIHE9|: LIHE3; LIHE3: LIHE41: LlHEil: LIME4J; LIME4: LIHE4J: LlNEiiJ: LINE2|J:naln() ; id= + HUM ; jf() EKPRESSJON? FACTORXTERMKoutput2.tt - iSW本文禅旧輻辑 宿式g】壹看帮朋砂LINE4): LINEH: LINEHJ: LIME4: LIHE4J: LlHEi|: LINEt|J: LIMEU: LINE4: L1HE4J: LIME5J: LINE6: LINE6J: L1

12、HE6J: LINE6J: LINE6: LINE6: LINE6: LINE6): LINE6: LIHE6): LIHE6= LIHE6): LIHE7: ID -一 KTERMXEaiPRESS10N_1 -一 NUM NULL5 印丽肌可能缺少* ; 1D=CEXFRESSIOhl ID + 一 NUM - Kutput2.1rt -远事衣文件旧輻瑁 梧式 查春璽帮助(H)L1HE7): LINE町: LINE0: LINE8: LIHE8: LINESJ: LINE8: LIHE6: LIHEQ= LlHEej: LIHE8: LIbEO: LIHE8: LIHE8: LINE8J;

13、 LINE8: LIHE9J:- (FACTORS TERN 15 ; - wriile() -ID _ gCTORXTERMHUMSULLLINE10: LINE16: LIME10: LIHE19: L1HE10: LINE1O: 一一 ;- KfiSSI1_STIfT - I= TERIO w | output2.1rt -记事本II文件(E)锚Q格式查看型帮勛旧)LIHE10:L1HE10:LINE10:LINE10J:LINE1O:LINE1O):LIHE1O:LIHE11):LIHE12:LIHE12):LINE12: - ID -HULL? - NUM LIHE12;ERR0RL

14、IHE12LIHE12LIHE12LINE12LINE12LINE13ERROR*ERROR ERRORERROR ERROR ERRORERROR ERROR词仙21 H 2* 1023 1【25 唔法扫描成功完成.六、分析和结论1.本程序先用预先分析法进行语法分析,基本思路是: ( 1)首先初始化分析栈和输入单 词指示器(即读取当前输入串中的第一个单词);(2)然后查看当前分析栈的栈顶符号:如 果是终结符号, 则查看是否与当前输入单词匹配, 若匹配则将之出栈, 输入指示器指向下一个 单词,进行下一轮扫描,若不匹配则报错,如果是非终结符号,则根据当前输入单词查找分 析表,若查到,则将当前栈顶符号出栈,并将查到的产生式逆序入栈,进入下一轮扫描,若没 有查到,则报错;( 3)最后,若分析栈和输入单词同时为结束符( #)时,表示语法分析成功, 程序结束。2.本程序对语法分析中的错误处理和识别有很多问题,如某些错误可能导致程序进入死 循环,因此在语法错误处理方面仍有待改进3.程序中对文件的操作仍一些不足之处,如:若关闭输入文件时失败,则会导致输出文 件也无法关闭,占用系统资源。另外,此程序只是对语法分析过程的一个演示,当真正进编译 程序的编制时,需要配合专门的语法错误处理程序和中间代码转换程序等进行编译。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1