程序测试与文法分析:LL(1)文法判定与属性文法实例
需积分: 0 89 浏览量
更新于2024-08-05
收藏 180KB PDF 举报
本资源是一份关于编译原理的测试试卷,包含四个题目,总分为30分。以下是每个部分的知识点总结:
1. **程序执行输出结果** (6分)
- 题目考察了参数传递方式对程序行为的影响。在程序`programtest`中,给定的`CAL`子例程接受两个整数参数并进行操作。当参数传递方式分别是:
- 传值:函数调用时复制值,原始变量不会改变,因此输出`j`保持为3,得2分。
- 传地址:函数接收的是变量地址,内部修改会影响原始变量,所以经过计算后`y`等于`y*y+y-x`,`x`不变,`j`最终为16,得2分。
- 传名:等同于传址,也是16,同样得2分。
2. **文法分析与LL(1)判断** (6分)
- 文法`G(M)`是一个四元文法,涉及非终结符M、T、B和D。首先计算了每个非终结符的FIRST和FOLLOW集合,确认文法不含左递归。接着,检查FIRST集合和FOLLOW集合的交集,发现T和FOLLOW(T)的交集不为空,这意味着文法不是LL(1)文法,因为LL(1)文法要求FIRST集与FOLLOW集的交集为空。
3. **属性文法与语法树和属性计算** (4+2分)
- 属性文法中的例子要求画出字符串`abc`的语法树,并计算属性。语法树展示了A、B、C的结构关系。属性计算规则表明,S.v最终会累积A.u和B.v的值,初始S.u=5,经过计算S.v的值为3*5 + 5 = 18。
4. **运行时DISPLAY表** (4分)
- DISPLAY表在编程中用于跟踪程序执行的嵌套层次。它记录了当前过程的层次信息,以便在处理嵌套调用时追踪状态。在进入第i层过程时,DISPLAY表会包含i+1个单元,用于存储该过程及其调用栈的信息。这部分没有具体给出实际的DISPLAY表内容,但解释了其概念和作用。
综合来看,这份试卷涵盖了编译原理中的关键概念,如参数传递、文法分析、属性文法、语法树构建以及程序执行环境的管理。理解和掌握这些内容对于理解编译器设计和语言理论至关重要。
2022-08-03 上传
2022-08-04 上传
2022-08-04 上传
2022-08-04 上传
2022-08-03 上传
2022-08-03 上传
2022-08-03 上传
2022-08-03 上传
2021-09-26 上传
明儿去打球
- 粉丝: 19
- 资源: 327
最新资源
- Python库 | roPerf-0.2.tar.gz
- webpackProject
- 基于MATLAB bp神经网络的雾霾天气下交通标志的识别系统.zip
- latex_template_Fognetwork_
- matlab解压代码-BrainPalimpsest:Matlab工具箱去卷积BOLD-fMRI数据。它产生潜在的时空神经和血液动力学活动
- HTimerTest.rar_Windows编程_Visual_C++_
- 基于CSS3实现列表图片鼠标悬停动画特效源码.zip
- electron-tiny-img:图片无损压缩平台 | Mac版本| (有你想要的所有功能)
- C-Class:来自UML的C的家庭作业
- Python库 | rootoidb-0.1.0.tar.gz
- 基于springboot毕业设计后端-高校迎新系统.zip
- rack-stream:不再维护-机架式流
- labdocs_OnPaper_corona_coronarelated_
- AutoJs源码-gestures动作数据生成
- 随机生成一亿行TXT-易语言
- pytexas2015:我的照明演讲中的代码