构造通用语法分析程序:递归下降方法的局限与实例

0 下载量 11 浏览量 更新于2024-06-29 收藏 211KB PPTX 举报
本资源是一份关于计算机科学技术系的课程说明,以23张幻灯片的形式呈现,主要聚焦于编译原理实践,特别是针对给定语法的语法分析程序构造。课程内容涵盖了递归下降分析方法的局限性,以及如何根据语法图设计分析程序。 首先,课程强调了递归下降分析的局限性在于它不适用于构建通用的语法分析程序,因为对于不相同的规则,需要编写特定的程序。递归下降方法适合处理简单规则,但对于复杂的文法,特别是那些包含透明结构(如不需要连续读取符号就能连接的部分)的情况,这种方法效率较低。因此,对于复杂文法,转换为调用相应过程的矩形图形式更为合适,这有助于设计更精确的分析逻辑。 接下来,课程讨论了实际语法分析程序中读取的最小单元从字符(ch)升级到符号(sym),这对于理解语言的结构和解析更为精确。编程任务是创建一个递归下降语法分析器,以解析给定的文法,如if-then-else语句、星号和分号运算符等。编写过程中,关键是要确保子程序之间的接口清晰,即分析非终结符时,已读入的语法成分的起始符号已存在ch/sym中。 语法图在构造语法分析程序中扮演核心角色,通过转换法则B1,将文法中的条件分支转化为程序结构,如`if ch in L1 then P(S1) else ...`的形式。这种转换规则确保了程序能够根据输入流逐步解析文法。例如,如果文法满足特定的语法限制,分析程序的主程序可以系统地构建出来,如: ```pascal program Parser(input, output); var ch: char; begin read(ch); begin if ch in L1 then P(S1) else if ch in L2 then P(S2) ... if ch in Ln then P(Sn) else error; end; end. ``` 实例1进一步展示了如何从语法图推演出具体的程序过程,并将其组织在一个主程序环境中。这个过程涉及逐个处理文法中的各个非终结符及其可能的输入模式。 这门课程深入讲解了如何从语法图出发,利用转换法则,设计并实现针对给定文法的递归下降语法分析器,以及在编程实践中需要注意的接口设计和细节问题。通过这些内容的学习,学生将能掌握基本的编译原理技术,为后续的编程和语言处理工作打下坚实的基础。
2023-05-25 上传
计算机课程设计 第1页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第1页。 设计任务和要求 通过本课程设计完成一个小型实用程序的设计、分析和编码、调试。进一步熟练程序的编写及数据结构的应用,提高运用程序设计综合知识解决实际问题的能力,并在完成程序设计的同时写出完善的设计报告。 要求:程序功能清晰、完善,能正常运行且结果正确;用户界面友好,代码要求符合标准,排版清晰,风格良好。设计过程中应提供完善的设计报告和代码说明。 第2页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第2页。 考核方式 第3页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第3页。 考核指标 总分为100分,以具体分数记: 1)平时成绩(30分) a) 及时向指导教师汇报所选题目及进度 (10分) b) 对指导教师所提问题的改正情况 (10分) c) 工作量饱满(10分) 第4页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第4页。 考核指标 2)课程设计质量(55分) 程序(35分) a)按时独立完成,基本功能完整(10分) b)用户界面(10分) c)选题难度等级(15分) EASY(5分)" NORMAL (10分)" HARD (15分) 设计报告(20分) 打印、装订成册,在程序检查结束后提交。考核要点如下: a)按时提交不拖拉。(5分) b)报告内容组织层次分明、条理清晰。(5分) c)技术细节描述正确、具体,结构完整。(10分) 第5页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第5页。 考核指标 3)答辩情况(15分) 由指导教师通过当面提问的方式验证课程设计。 第6页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第6页。 建议 刻盘部分:2个文件 "源程序"+"报告文档" 档案袋,有2张成绩评分表 除教师填写部分外,其余要自己事先填写好 其中的"任务书",就是要把报告中"要解决的问题"归纳下,抄上去 第7页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第7页。 日期安排 第6周:开题并布置具体任务。 第7~8周:阅读参考文献和,确认所选题目后请及时发到我的邮箱: 第9~10周:系统设计和构建 第11周:中期检查 第12-13周:编码实现、调试和改进。 第14-15周:课程设计报告的撰写。 第16-17周:检查资料完整性后提交课程设计报告,教师评定综合成绩。 第8页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第8页。 参考题目 EASY(5分) E01 简易计算器程序 (1人独立完成) 编写一个功能基本完善的计算器程序,支持四则运算、乘方开方、指数对数等运算,支持带括号的表达式 程序采用字符界面 显示功能菜单,用户按指定键即可进入相应功能 每次计算完成后输出一个提示符,要计算的数字或表达式由用户在提示符后面输入 用户输入完按回车键立即显示计算结果 第9页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第9页。 4)同组同学一人交一份报告,并且报告内容不能雷同。 c)选题难度等级(15分) (2) 实现对各种信息的查询、统计。 用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子。 其中的"任务书",就是要把报告中"要解决的问题"归纳下,抄上去 E01 简易计算器程序 (1人独立完成) b)报告内容组织层次分明、条理清晰。 要求用户可以在动画显示区创建汇聚节点和水声传感器节点,并用动画显示水声传感器网络仿真过程。 在软件仿真开始之前,移动节点类的对象要读取相应的移动节点的轨迹。 前台展示:可通过web浏览声音和照片,可检索每幅照片或配音。 可把这些多媒体存储在文件夹下,只在数据文件中存储该媒体文件的路径,网页上调用时,读取路径名,从而找到相应媒体播放。 c)技术细节描述正确、具体,结构完整。 水声传感器节点接受到该信息后定制一组移动信息,内容包括移动的速度和移动的位置。 b)用户界面(10分) 将题目"某地"替换成你所选的地名。 参考题目 EASY(5分) E02 模拟双色球开奖程序 (1人独立完成) 模拟福利彩票的双色球开奖程序,由程序产生六个蓝色球和一个红色球。可按规则计算是否获奖,奖的等级、金额等 程序采用字符界面 显示功能菜单,用户按指定键即可进入相应功能 每期开出的蓝色号不能重复,但红色球可以是蓝色球中的一个。蓝色球的范围是1-33,红色球的范围是1-16 输出格式为:蓝色球:xx xx xx xx xx xx 红色球:xx 第10页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第10页。 参考题目 EASY(5分