第11周 星期二 第2大节
- 视频:
screen_编译原理与设计_第11周_星期二_第2大节.mp4 - 字幕:
transcripts/第11周_星期二_第2大节.srt
时间轴
00:53实验通知:西晋平台已发布两个实验;乐学作业注意截止时间非统一23:5904:30语义分析与中间代码生成框架09:28语义分析定位:连接前端(分析)与后端(综合)14:47语义错误类型:未声明标识符、重复定义、数组越界、类型不兼容、break/continue位置错误20:26语义分析任务:作用域检查、类型检查、中间代码生成23:55语法制导翻译:每个产生式配语义子程序26:25属性文法:上下文无关文法 + 属性 + 规则33:54综合属性(子→父传递)44:40继承属性(父/兄弟→子传递)56:35中间语言:逆波兰式、N元式(三元式/间接三元式/四元式)、DAG图01:08:28中缀→后缀转换算法(双栈法+优先级)01:25:03符号表:名字域+属性信息域01:32:22说明类语句翻译(常量、简单变量、复合类型)→ 填表,不产生中间代码01:57:39赋值语句翻译:计算E + 赋值给V02:05:43控制流语句:if/if-else/for的标号设计与跳转02:16:33拉链反填技术(针对先引用后定义问题)
关键点
考勤/签到/小测
无。
作业
00:53西晋平台已发布两个实验(有同学询问提交方式)01:00乐学作业注意截止时间非统一23:59,可能分批02:09多次错过截止不一定能申请总延期01:07钉群有同学问提交问题- ⚠️
02:05:06实验必须自己写,不要网上下载改改
考试/复习重点
- 综合属性vs继承属性定义与传递方向(
33:54/44:40) 01:09:57考试见过中缀转后缀题01:52:43复合类型文法(常量/简单变量/复合类型)考试可能要求设计文法- 逆波兰式对机器友好,顺序扫描+栈处理(
01:01:40) 02:16:33拉链反填技术(一遍扫描的解决方案)
其他需要回看的片段
16:34-20:26语义错误示例(C/Java)39:50-44:003×5+4的语法制导翻译(值向上综合)51:24-54:06float id1, id2继承属性实例01:04:10-01:08:28中缀→后缀转换完整示例(A+B*C+(D+E)*F)
省流
语义分析和中间代码生成开始。语法制导翻译(属性文法)、中间语言(逆波兰式/三元式/四元式)、符号表、语句翻译(说明类/赋值/控制流)。⚠️ 中缀转后缀考试常见,复合类型文法可能考。