




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
专题3_LL(1)语法分析设计原理与实现李若森 13281132 计科1301一、 理论传授语法分析的设计方法和实现原理;LL(1) 分析表的构造;LL(1)分析过程;LL(1)分析器的构造。二、 目标任务实验项目实现LL(1)分析中控制程序(表驱动程序);完成以下描述算术表达式的 LL(1)文法的LL(1)分析程序。GE:ETEEATE|TFTTMFT|F(E)|iA+|-M*|/设计说明终结符号i为用户定义的简单变量,即标识符的定义。加减乘除即运算符。设计要求(1) 输入串应是词法分析的输出二元式序列,即某算术表达式“专题 1”的输出结果,输出为输入串是否为该文法定义的算术表达式的判断结果;(2) LL(1)分析程序应能发现输入串出错;(3) 设计两个测试用例(尽可能完备,正确和出错),并给出测试结果。任务分析重点解决LL(1)表的构造和LL(1)分析器的实现。三、 实现过程实现LL(1)分析器a) 将#号放在输入串S的尾部b) S中字符顺序入栈c) 反复执行c),任何时候按栈顶Xm和输入ai依据分析表,执行下述三个动作之一。构造LL(1)分析表构造LL(1)分析表需要得到文法GE的FIRST集和FOLLOW集。构造FIRST()构造FOLLOW(A)构造LL(1)分析表算法根据上述算法可得GE的LL(1)分析表,如表3-1所示:表3-1 LL(1)分析表主要数据结构pair:用pair来存储单个二元组。该对照表由专题1定义。map:存储离散化后的终结符和非终结符。vector:存储LL(1)分析表函数定义init:void init();功能:初始化LL(1)分析表,关键字及识别码对照表,离散化(非)终结符传入参数:(无)传出参数:(无)返回值:(无)Parse:bool Parse( const vector &vec, int &ncol );功能:进行该行的语法分析传入参数:vec:该行二元式序列传出参数:emsg:出错信息epos:出错标识符首字符所在位置返回值:是否成功解析。是则返回true,否则返回false。errMsg:void errMsg( string filename, int rowNo, int colNo );功能: 向屏幕输出错误信息传入参数: filename:正在处理的文件的文件名称rowNo:出错行colNo:出错列传出参数:(无)返回值:(无)四、 程序测试测试用例详见文件夹中test1.lexer和test2.lexer。其中,test1.lexer、test2.lexer为测试输入文件。在命令行中运行parse name即可运行测试用例。test1为正确文法二元序列,test2为非法文法输入二元序列。五、 心得体会通过本次专题实验,我更加深入的理解了LL(1)语法分析器的构造以及其程序构造。由于此种方法是以栈的形式进行语法分析处理,所以其代码量相对于递归下降语法分析少了许多,但也是因为用了栈作为语法处理的数据结构导致其报错信息只能提供错误位置,很难像递归下降那样精准的报出错误信息。在像程序中输入LL(1)分析表时因为有些非终结符是多字符的,所以无法简单的按照单字节对非终结符进行处理。因此我将每个非终结符和终结符用一个字符串表示,在分析表中每个格子都是一个字符串序列,因此免除了许多不必要的处理,使得编写更加容易。目前该工程已上传至我的Github仓库中。附录1 parse.cpp和parse.h为算符优先分析程序模块2 main.cpp为输入输出处理模块3 parse.exe为项目生成可执行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 荆门市中储粮2025秋招财务资产岗高频笔试题库含答案
- 衢州市中储粮2025秋招面试专业追问题库仓储保管岗
- 中国广电林芝市2025秋招技术岗专业追问清单及参考回答
- 新疆地区中石油2025秋招笔试综合知识专练题库及答案
- 炼铁员工安全培训课件
- 榆林市中储粮2025秋招面试半结构化模拟题30问及答案
- 燃气泄漏培训考试题及答案
- 固原市中石化2025秋招笔试提升练习题含答案
- 国家能源阿拉善盟2025秋招化学工程类面试追问及参考回答
- 果洛藏族自治州中储粮2025秋招综合管理岗高频笔试题库含答案
- 水上乐园工程行业深度调研及发展战略咨询报告
- 政治经济学导论课件
- 2020年中国古代史模拟考试题库588题(含参考答案)
- TD-T 1048-2016耕作层土壤剥离利用技术规范
- 2024-2025学年中职思想政治心理健康与职业生涯高教版(2023)教学设计合集
- 河南省郑州市枫杨外国语学校2024-2025学年八年级上学期第一次月考物理试卷
- 沪科版(2024)八年级全一册物理第一章 运动的世界 测试卷(含答案)
- 农村法律明白人培训
- 2024乡村医生考试题库(含答案)
- (详尽多条款)地形图保密协议模板
- 无损检测VT-PT作业指导书SOP
评论
0/150
提交评论