第11周 星期二 第2大节

  • 视频:screen_编译原理与设计_第11周_星期二_第2大节.mp4
  • 字幕:transcripts/第11周_星期二_第2大节.srt

时间轴

  • 00:53 实验通知:西晋平台已发布两个实验;乐学作业注意截止时间非统一23:59
  • 04: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 + 赋值给V
  • 02: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:00 3×5+4的语法制导翻译(值向上综合)
  • 51:24-54:06 float id1, id2继承属性实例
  • 01:04:10-01:08:28 中缀→后缀转换完整示例(A+B*C+(D+E)*F)

省流

语义分析和中间代码生成开始。语法制导翻译(属性文法)、中间语言(逆波兰式/三元式/四元式)、符号表、语句翻译(说明类/赋值/控制流)。⚠️ 中缀转后缀考试常见,复合类型文法可能考。