184-测试试卷-课程期末考试试卷21
需积分: 0 50 浏览量
更新于2022-08-04
收藏 201KB PDF 举报
【知识点详解】
1. **参数传递机制**:
在编程中,函数调用时的参数传递方式有三种:传值、传地址和传名。在上述程序段中,`CAL`是一个过程,它接收两个整数`x`和`y`作为参数。如果采用不同的传递方法,结果会有所不同。
- (1) **传值**:函数内部的修改不会影响到实参,所以`j`的值不会改变,输出依然是3。
- (2) **传地址**:函数内部的修改会影响到实参,因此`j`的值会变成16。
- (3) **传名**:类似于传地址,但更复杂,它允许直接操作参数的副本,结果也是16。
2. **文法的FIRST集和FOLLOW集**:
文法`G(M)`的每个非终结符的`FIRST`集合和`FOLLOW`集合是编译原理中的概念,用于LL(1)分析。`FIRST(A)`表示非终结符`A`可以开始的所有符号的集合,`FOLLOW(A)`表示在`A`之后可以出现的符号的集合。计算这些集合可以帮助判断文法是否是LL(1)的。LL(1)文法是指可以使用左到右扫描且只看一个输入符号的预测分析表进行解析的文法。对于文法`G(M)`,需要具体计算每个非终结符的`FIRST`和`FOLLOW`集,然后根据是否所有产生式的左部和右部的交集为空,以及每个非终结符的`FOLLOW`集是否与任何产生式右部的起始符号冲突来判断是否为LL(1)。
3. **属性文法和属性计算**:
属性文法是一种用于语义分析的方法,每个产生式都关联了语义规则,用于计算属性的值。例如,给定的文法中,`S.u`的初始值为5,通过计算每个非终结符的属性,最后得到`S.v`的值。字符串`abc`的语法树需要构建,然后按照属性文法的规则进行计算,最终确定`S.v`的值。
4. **DISPLAY表**:
在编译器设计中,DISPLAY表是一个数据结构,用于记录作用域内的变量信息,包括它们的存储位置和当前值。它在编译时和运行时都有重要作用,特别是在处理嵌套作用域和变量的作用域生命周期时。
5. **四元式序列生成目标代码**:
四元式是高级语言到机器语言转换过程中的中间表示,用于描述操作和操作数。对于给定的四元式序列,需要将其转换为目标代码,这通常涉及到寄存器分配、运算顺序优化等步骤。
6. **逆波兰式、三元式序列和抽象语法树**:
逆波兰式(后缀表达式)是一种没有括号的表示方式,运算符位于操作数之后。三元式是另一种中间表示形式,通常由操作符、操作数和结果组成。抽象语法树(AST)是表达式的一种图形表示,每个内部节点代表一个运算符,每个叶节点代表操作数。
7. **DFA(确定有限状态自动机)构造**:
DFA用于识别正则语言,这里要求构造一个能接受所有包含`ab`的字符串的DFA。这需要设计状态转移图,确保在遇到`ab`序列时能够从初始状态转移到接受状态。
8. **文法构造**:
要构造一个文法`L(G)={anbncm| m,n≥1,n 为奇数,m 为偶数}`,需要设计一系列产生式,确保生成的字符串满足条件。
9. **文法G(S)的最右推导和短语分析**:
对于给定的文法,需要进行最右推导来生成特定句型的字符串,同时画出相应的语法树。还要找出句型的短语、直接短语和句柄,这些都是分析文法结构的重要步骤。
10. **算符优先文法和优先函数**:
算符优先文法是一种基于运算符优先级的文法,需要构造每个非终结符的`FIRSTVT`和`LASTVT`集合,然后建立算符优先表,并判断是否符合算符优先文法的特性。优先函数用于解决运算符优先级和结合性的问题。
11. **do-while语句的翻译模式**:
在自下而上的语法分析器中,`do-while`语句需要转化为四元式序列。这涉及到对语句的语义解释,包括循环条件检查、循环体执行等,每一步都对应一个语义动作。
12. **while语句的四元式转换**:
`while`语句的翻译涉及到条件判断和循环控制,需要将语句转换成四元式序列,同时考虑到活跃变量的管理,以优化代码。
13. **基本块的优化**:
基本块是连续的指令序列,具有单入口和单出口。优化基本块的四元式序列可以减少冗余计算,提高代码效率。这通常涉及活变量分析、死代码删除和公共子表达式消除等。
14. **LR分析**:
LR分析是一种用于解析上下文无关文法的方法,LR分析表给出了在不同状态下如何处理各种输入符号的指导。对于给定的文法和串`baba#`,需要根据分析表逐步分析,直到达到接受状态。
以上是基于题目描述中涉及的各个知识点的详细解释,涵盖了编译原理中的参数传递、文法分析、属性文法、中间表示、自动机构造、文法推导等多个重要概念。