| 选课类别:计划内与自由选修 | 教学类型:理论实验课 |
| 课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
| 课程层次:专业核心 | 学分:4.0 |
本课程介绍编译器构造的一般原理、基本设计方法和主要实现技术,其内容包括词法分析、语法分析、语法制导的翻译、语义分析、运行时存储空间的组织和管理、中间表示与中间代码生成、目标代码生成、代码优化、编译系统和运行系统等。除了介绍编程语言的编译技术外,本课程还选择数据流分析、过程间分析、循环优化、龙芯和。本课程还强调一些相关的理论知识,如形式语言和自动机理论、语法制导的定义和属性文法、类型论和类型系统、数据流分析的一般框架等。
《编译原理和技术》由徐伟和李诚两位老师主讲,助教团队较为负责,整体课程体验较好。课程内容复杂,PPT、作业和实验量较大,但多复习课程材料,如PPT,能有效帮助理解内容。课程设计良好,对认真学习的同学帮助较大。
作业和实验内容相对困难,有同学表示“实验很难”“作业摸不着头脑”。部分学生报告依赖AI完成作业,建议做好时间管理,定期复习以避免课业压力积累。
期末考试题型与平时作业题和PPT例题相似,复习这些材料能帮助取得好成绩。2025年期末为开卷形式,同学们表示考题与回忆版题目较为一致。
多数学生对给分较为满意,认为给分“非常给力”。有评论提到零分不会挂科,显然老师和助教在评分上很努力,即便考试表现不佳,仍有捞分的可能。最终成绩与期末卷面差距较大的情况并不少见,有学生从卷面低分被捞至较高总评,说明给分过程较为人性化。
这门课适合在编译技术领域有兴趣且愿意投入时间的学生,尽管挑战性高,但通过努力学习可获得丰厚回报。课程推荐给愿意付出努力的同学。
26秋季期中考试题目回忆版,期中考试今年是开卷,仅供同学复习参考
选择题
1、下列说法中,错误的()
A. 同一个句子存在两个不同的普通推导序列,就能证明文法二义
B. 词法分析输出的记号序列通常作为语法分析的输入
C. 在标准 LR 分析中,一次非空归约后,栈中的文法符号数量一定不会增加
D. LL(1) 文法一定无二义,且不含左递归
2、给定文法,LL(1):S → xAy
A → z
下列说法正确的是()
A. xAy 不是活前缀
B. xA 以非终结符结尾,不是活前缀
C. 对输入 xyz,标准 LR 分析器应先把 xyz 全部移进,再按 A→z 归约
D. xz 是活前缀,而 xy 不是活前缀
3、某 LR 分析器的栈如下,栈顶在右侧:
栈:0 a 2
剩余输入:b S
已知:ACTION[2,b]:按 A→ ε 归约,GOTO[2,A]=5,GOTO[0,A]=3
执行这一次归约动作后,正确的是()
栈 剩余输入
A 0A3 b结束符号
B 0a2A5 结束符号
C 0a2 b结束符号
D 0a2A5 b结束符号
简答:
1、(15分)写正则表达式:
(1) 由 0、1 组成且不含前导零的二进制正整数,其值能被 4 整除;
(2) 由 x、y 两种字母组成,且 x 的个数为偶数的有限字符串;
(3) 由 x、y 两种字母组成,且以 x 开头、以 x 结尾、不包含连续的两个 y 的所有字符串(允许单字符 x)
2、(15分)给定正则表达式:b^*a(a|b)^*,字母表 Σ={a,b}
(1) 用语法制导的构造算法,构造 NFA;
(2) 用子集构造法将该 NFA 转化为 DFA;
(3) 极小化该 DFA 的状态数,将该 DFA 转化为最简形式,写出化简过程。
3、(12分)把 bash 中的语句抽象成如下文法:
S → S;A| S&A| A|ca|eA
A →A>f|Sg
按非终结符顺序 S、A 消除左递归,给出每一步的处理过程和最终不含左递归的文法。
(本题省去了由 A 推导出终结符的内容,与本题无关)
4、(15分)文法 :
S → MH| a
H → LSo| ε
K → dML| e
L → eHf
M → K| bLM
(1) 写出各非终结符的 FIRST 和 FOLLOW 集合;
(2) 构造 LL(1) 预测分析表;
(3) 判断是否为 LL(1) 文法,并说明理由。
5、(16分)文法 :
S → L=R| R
L → *R| id
R → L
(1) 写出增广文法,构造 LR(0) 项目集规范族及状态转换图
(2) 写出各非终结符的 FOLLOW 集合,并构造 SLR 分析表
(3) 判断是否为 SLR(1) 文法,并说明理由
6、(15分)文法 :
S → Aa| bAc|bda|dc
A → d
(1) 写出增广文法,构造 LR(1) 项目集规范族及状态转换图
(2) 构造规范 LR 分析表
(3) 判断是否为 LR(1) 文法,并说明理由
考零分会挂科吗?希望不会,打个给分超好
25fall助教来占一个坑,话说为什么2025秋怎么不和往年在一个课程评分了😭
有没有懂把中位数从三十多捞成快到七十的
给分还行,最好考试看出来尽力捞了,应该没调分,感觉要被卡绩,但是考试实验实在是太难了,作业我也不会,力竭了
实验很难,平常做作业也有点摸不着头脑,所幸考试的内容其实还好(?)建议多多复习ppt,可能会有一些在大后期的内容
给分非常给力,为非常累的大三上画了个完美的句号
没有期中,期末卷面竟然有惊人的67(实验部分几乎没得分的基础上)。拟定总评84.65,,,能捞一把吗先许个愿
这学期还是太摆了,课程是好课程,但是我只有最后几天突击复习,前面的课全翘了,考试也一般,刚好 68 考了个中位数,拟定总评 86,感觉会被卡绩。
课内工作量确实很大,但是老师和助教们都相当负责,大幅拉高课程体验。
考试题和平时的作业题/ppt例题题型相似,肥肠好评!
本人上课较水,作业实验很挣扎,考试自我感觉60-70,助教们表示已经捞了好几轮,最后卷面给了84,拟定总评92.5,供参考。
总之肥肠推荐这门课,确实能收获很多知识。