PowerPoint Presentation

Similar documents
PowerPoint Presentation


大侠素材铺

Microsoft PowerPoint - ch1.ppt [兼容模式]

大侠素材铺

<4D F736F F F696E74202D20B5DA31D5C220D2FDC2DB2E BD6BBB6C15D205BBCE6C8DDC4A3CABD5D>

大侠素材铺

PowerPoint 演示文稿



2

電機工程系認可證照清單 /7/1



<4D F736F F D B1E0D2EBD4ADC0EDCAB5BCF9B8C4B8EFB5C4D4D9B4CECCBDCBF72DD2FDC8EBBFAAD4B4B1E0D2EBC6F74C4C564D>




实践 : 能够独立设计和开发简单语言的编译器 课程意义 : 1. 本课程能使学生对编程语言的设计和实现有深刻的理解, 对和编程语言有关的理论 ( 形式语言和自动机理论 类型论等 ) 有所了解, 对宏观上把握编程语言来说, 起一个奠基的作用 2. 对软件工程来说, 编译器是一个很好的实例 ( 基本设计

经 济 高 速 增 长 和 其 后 又 比 其 他 发 达 资 本 主 义 国 家 更 为 顺 利 地 克 服 了 石 油 危 机 的 冲 击, 使 日 本 的 市 场 经 济 体 制 在 7 0 ~ 8 0 年 代 赢 得 了 国 际 社 会 的 广 泛 赞 誉 ( 其 间 虽 有 欧 美 国 家

2015 TB-1-06.indd

Fsher


课程设置—国民经济学



“百企入校——广西青年企业家协会高校



Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony


省份批次科类录取专业招生数 录取 最低分 备注 艺术 音乐学 ( 地方免费师范生 ) 专业成绩 美术学 ( 地方免费师范生 ) 综合成绩 提前艺术体育本 科 提前一批本科 体育 ( 文 ) 体育 ( 理 ) 文史 体育教育 ( 地方免费师范生 ) 专

信息

2


山西医科大学 2017 级英语 学年第三学期周教学进度表 学院 系 ( 部 ): 外语系年级 / 专业 :2017 级英语 ( 医学英语 ) 班级 : (2) 人数 :64 人实习分组 : 序号 课程名称 总学时 理论课 实验


什么是函数式编程?

考试时间课程名称级人数考试地点 机械工程 17 级卓越 1 30 D-386 机械工程 17 级卓越 2 30 D-386 自动化 17 级 1 30 D-3108 自动化 17 级 2 30 D-3108 电子信息工程 17 级 1 32 C-170 电子信息工程 17 级 2 32 C-242





天津天狮学院关于修订2014级本科培养方案的指导意见

Microsoft Word - Long-term Chinese course list Nov 2017.doc

Microsoft PowerPoint - 1-Introduction.ppt

计算机科学与技术学院 2016 级通信工程 学年教学计划 班级 : 通信 1601, 通信 1602 人数 :67 第一学期 课程性质课程名称学分总学时讲课实验实践上机讨论开课学院备注 选修 选修 通信类专业写作 计算机科学与技术学院 选修通信系统实验 3.0

淮南市烟草专卖局 ( 公司 )2019 年公开招聘工作人员笔试人员公示 序号 姓名 出生年月政治面貌性别 学历 学历性质 专业 毕业院校 毕业时间 岗位类别 1 魏志宽 1993/3 共青团员 男 大学本科毕业 全日制统招 土木工程 铜陵学院 2016/6 土木工程专业 2 张兵 1992/2 群众

孙 蓝等 基于目标导向的研究生英语学习模式创新

Microsoft Word - mei.doc

考生编号 科目代码 科目名称 成绩 复核结果 翻译硕士英语 66 无误 翻译硕士英语 65 无误 翻译硕士英语 58 无误 日语 ( 外 )


成教2014招生计划.xls


腰部酸痛保健法


编译原理与技术

5 2. 过程与方法 情感 态度与价值观 三 知识结构图 四 教学内容和教学要求 课 程 教学要求 课时安排

入学时间 :9 月学制 :2 年学费 : 每年 10,924 科阶段 学制 :2 个学期 /24 周学费 : 每学期 3,750 科课程 学制 :2 个学期 /24 周学费 : 每学期 3,400 Computing and Information Systems 安格利亚鲁斯金大学 ( 学士学位

(1) (5) (1) (1) (3) (3) (6) (7) (7) (9) (11) (13) (13) (15) (16) (22) (23) (25) (26)


马克思主义基本原理 通识教育课程范俊玉 1 08:00-08:50 数值分析 专业必修课程张亚楠 2 09:00-09:50 苏州大学 学年第 1 学期数学科学学院课程表 班级名称 :2014 基地人数 :37 辅导员 : 周扬实行日期 : 201

考生编号政治政治分外语外语分科目 1 科目 1 分科目 2 科目 2 分总分专业代码专业名称专业排名考试方式报名号 思想政治理论 62 英语一 78 数学一 108 普通物理 ( 包括力学 电磁学 光学 ) 物理电子学 1 全国统考 11

山西医科大学 2017 级护理学 学年第二学期周教学进度表 学院 系 ( 部 ): 护理学院年级 / 专业 :2017 级护理班级 :10 人数 :303 实习分组 : 序号 课程名称 总学时 理论课 实验课 实践



浙江 云南 山西 学院 最高分 最低分 一本线 二本线 最高分 最低分 一本线 二本线 最高分 最低分 一本线 二本线 机械工程 能源与环境系统工程 机械设计制造及其自动化


L L

Microsoft PowerPoint - 1-Introduction12.ppt [兼容模式]

<493A5C F524B6F6E6C795CCEEFD7CAD6D0D0C45CC8ABB9FAB8DFB5C8D4BAD0A3B9A4B3CCD3A6D3C3BCBCCAF5BDCCCAA6B4F3C8FC5CB5DAB6FEBDEC5CBEF6C8FC5CBEF6C8FC2DCDA8D6AA5CB9D8D3DABED9D0D0B5DAB6FEBDECC8ABB9FAB8DFB5C8D4BAD0A3B9A4B3CCD3A6D3C3BCBCCAF5BDC

校历.xls

宣城市烟草专卖局 ( 公司 )2019 年公开招聘资格初审合格人员名单 序号 姓名 性别 毕业院校 报考岗位专业 1 马晓静 女 长春工业大学 法学专业 2 金昱希 女 安徽财经大学 法学专业 3 苏珊珊 女 皖南医学院 法学专业 4 李腾 男 山东大学 法学专业 5 周文 女 安徽科技学院 法学专

淮北市烟草专卖局 ( 公司 )2019 年员工招聘入围笔试人员名单 序号 姓名 出生年月 政治面貌 性别 学历 学历性质 专业 毕业院校 毕业时间 报告专业 ( 岗位 ) 1 郑波 1988/5 群众 男 硕士研究生毕业 全日制统招 中国语言文学 安徽师范大学 2019/7 中国语言文学类专业 2




第四章 個案一 林SIR的故事與分析

中国科技论文在线 中国科技论文在线

计算机科学与技术学院 2016 级计算机科学与技术 学年教学计划 班级 : 计 1601, 计 1602, 计 1603 人数 :99 选修 选修 人机交互技术 计算机科学与技术学院 选修计算机图像处理 计算机科学与技术学院 小计 :




Microsoft PowerPoint - 1-Introduction09.ppt

软件工程技术知识体系 机器学习 / 神经网络 (AI) 不确定性 ( 黑盒, 概率 ) 编译技术 灵活多变, 但有基因 数据库技术 联系 组合, 摘取 基础技术 联线 : 直观易懂 分布式系统面向对象编程计算机网络操作系统数据结构 2



.size main,.lfe1-main.local b.comm b,4,4.comm c,4,4.ident "GCC: (GNU) egcs /Linux (egcs release)" 修改图 6.5 中计算声明名字


2014 年度军队文职人员招聘信息


2014 年 11 月 22 日 共 24 第 2 页 23 福建农林大学第 023 考场心理咨询师三级 福建农林大学第 024 考场心理咨询师三级

共 24 第 2 页 福建农林大学第 011 考场心理咨询师三级 福建农林大学第 012 考场企业人力资源管理师三级

本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操

附件2:2013年实验教学中心完成实验教学情况

2017ÅàÑø·½°¸

省份 批次 文科 重点线出档线最高分最低分平均分录取人数重点线出档线最高分最低分平均分录取人数 备注 山东 本一批 本一批


浙江师范大学2018年招生计划表( 定稿)

Transcription:

结合开源软件的 编译原理教学实践探索 张昱 中国科学技术大学计算机科学与技术学院 2017 年高等院校计算机系统类课程联合研讨会 2017.8.26 恩施

中科大的编译原理课程 计算机专业分两个级别, 同时间段授课, 学生可以选择 英才班 (30+) 从 2010 级开始 54+40 加大实验强度, 基础实验 + 扩展实验, 占总分 50% 普通班 54+40 基础实验, 实验占总分 20~30% 学生均要开发出小型实验型语言的编译器 计算机双学位 54+20 周六上课,4 节 / 次, 弱化实验 (2 个 ), 内容适当删减 2

编译课程实践系统 3

2009 年的软件包 以 源语言 - 抽象语法树 - 低级中间表示 - 汇编代码的内部表示 - x86/mips 汇编 为主线搭建的 基于组件的编译原理实验体系 源语言程序 分析器 高级中间表示 (AST) 解释器 变换器 (AST2LIR) 检查器正确? 低级中间表示 ( 如三地址码 ) 变换器 (IR 优化器 /IR 之间的转换器 ) 寄存器分配器 代码生成器 汇编代码的内部表示 汇编代码 ( 如 x86, MIPS) 4

报告目录 1 问卷调查 -- 实践的重要性 2 3 4 5 教学实践的总体思路 Flex+Bison => ANTLR 引进 LLVM 的课程实践探索下一步的工作 5

报告目录 1 问卷调查 -- 实践的重要性 2 3 4 5 教学实践的总体思路 Flex+Bison => ANTLR 引进 LLVM 的课程实践探索下一步的工作 6

安徽省内高校课程问卷调查 共收集 21 份 20 所高校 1 所 985+2 所 211: 中科大 合工大 安大 6 所本科第一批次 : 安财 安工程 安工业 安建大 安农 10 所本科第二批次 : 安庆师大 淮北师大 合肥学院 皖西学院 淮南师院 铜陵学院 池州学院 阜阳师院 安徽新华学院 安徽信息工程学院 1 所高职专科 : 合肥职业技术学院 7

问卷统计数据 开课学期 4 5 10 2 理论课时实验课时学分每年上编译学生数 平均值 46.2 17.38 3.3 147 最大值 64 54 6 400 最小值 32 0 2 10 合计 :3087 8

问卷统计数据 开课学期 4 5 10 2 合职院 软件技术 专业必修,2 下理论课 3 上实践课, 均是 3 学分 54 学时 理论课时实验课时学分每年上编译学生数 平均值 46.2 17.38 3.3 147 最大值 64 54 6 400 最小值 32 0 2 10 合计 :3087 9

编译教学的困难与问题 普遍反映在实验方面 有 2 所学校无实验, 导致学习过程更为抽象 没有好的实验教材, 缺少案例分析 编译原理技术与实际应用如何结合 即便实验部分简单, 但完成度也不高 有的以实现书上算法为实验内容 教材 偏重理论, 缺乏对具体实现的介绍 内容陈旧 师资 课程难 10

期望解决和推进的工作 加强实验 有好的实验教材, 能建设实验教学案例 尽可能将编译技术与实际应用相结合 实验的可操作性, 实验的平台选择, 增加课时等 教材 理论问题实践化, 抽象问题通俗化 对原理解释的过程中穿插代码, 让学生了解实现 召开省内课程研讨会, 加强交流, 互相促进 师资 11

报告目录 1 问卷调查 -- 实践的重要性 2 3 4 5 教学实践的总体思路 Bison => ANTLR 引进 LLVM 的课程实践探索下一步的工作 12

大环境的变化 开源软件盛行 GitHub(2007-):65+ 百万项目 23+ 百万用户 编程语言百花齐放 众多 :GitHub -- 开源项目涉及 316 种编程语言 发展 :C - C90, C99, C11; C++ - 98, 03, 06, 11, 14 最流行的语言 ( 动态变化 ) GitHub :JavaScript, Java, Python, Ruby, PHP, C Tiobe(8 月 ):Java, C, C++, C#, Python, VB.NET 系统规模日趋庞大 + 多语言混合 + 异构体系 工业界期待更多学习了 PL 原理的学生 [CACM2015.5] 13

编译课程的教学 Alfred V. Aho[SIGCSE Bulletin 2008.12] 过于强调解析和语法制导翻译的理论 理论 + 实践 (AWK,1977-) 早期与现代编译器的差异 ( 规模大 语言多 结构多 ) 教学覆盖编译器各阶段的基本概念 词法分析 语法分析 语义分析 中间代码生成 运行时环境 资源管理 目标代码生成 [ 优化 ] 实现一个小型编程语言的编译器 让学生组队自己定义语言并实现, 写相关的文档 14

教学实践的总体思路 目标 重实践 :20% 期中 +20% 期末 +10% 作业 +50% 实验 形式化能力 : 形式描述语言的词法 语法 语义通过查语言规范和编译器手册来领悟语言的语义 工程能力 : 定义 DSL 操控上规模的软件 过程管理 个人 / 团队 创新 了解现代编译系统 实施方法 基础实验 ( 小型编译器 )+ 阅读理解 ( 开源软件 ) + 可选的综合实践 git 版本管理 上届优秀本科生作助教, 参与实践案例的构造, 形成良性循环 15

报告目录 1 问卷调查 -- 实践的重要性 2 3 4 5 教学实践的总体思路 Flex+Bison => ANTLR 引进 LLVM 的课程实践探索下一步的工作 16

解析器的生成器 生成器 生成 Lexer:Flex(for windows) Jflex 生成 Parser LALR: Bison(for windows) Java CUP LL: JavaCC ANTLR LL(*) [PLDI2011] 文法对 Parser 的影响 LR Parser 的优势 : 速度快 表达能力强 LL Parser 的优势 : 代码结构与文法对应, 易理解, 容易增加错误处理和错误恢复 17

ANTLR ANTLR(ANother Tool for Language Recognition) [http://www.antlr.org/] Prof. Terence Parr, since 1989 支持多种代码生成目标 Java C++ C# Python Go JavaScript Swift 18

基于 开展的实验 开源 : 源码阅读, 消化 理解生成 器基于的原理 各种语言实现 :31 种模式 1. 从文法到递归下降识别器 2. LL(1) 递归下降词法分析器 3. LL(1) 递归下降语法解析器 4. LL(k) 递归下降语法解析器 5. 回溯解析器 6. 记忆解析器 7. 谓词解析器 8. 解析树 ( 分析树 ) 9. 同型抽象语法树 10. 规范化异型 AST 11. 不规则的异型 AST 12. 内嵌遍历器 13. 外部访问者 14. 文法访问者 15. 模式匹配者 ( 子树 ) 16. 单作用域符号表 17. 嵌套作用域符号表 18. 数据聚集的符号表 19. 类的符号表型 20. 计算表达式的类型 21. 自动类型提升 22. 静态类型检查 23. 动态类型检查 24. 语法制导的解释器 25. 基于树的解释器 26. 字节码汇编器 27. 栈式解释器 28. 寄存器解释器 29. 语法制导的翻译器 30. 基于规则的翻译器 31. 模型驱动的转换 19

报告目录 1 问卷调查 -- 实践的重要性 2 3 4 5 教学实践的总体思路 Bison => ANTLR 引进 LLVM 的课程实践探索下一步的工作 20

循序渐进的编译器组件 词法分析器 记号流 http://llvm.org 源代码 Parser0 Parser 是否合法? 高级中间表示 (AST) 解释器 是否合法? 语义检查器 低级中间代码生成器 (AST2LIR) 代码生成器 程序变换器优化器 低级中间表示 ( 如 LLVM IR) LLVM 编译器工具链 寄存器分配器 代码生成器 汇编码的内部表示 汇编码 ( 如 x86, MIPS) 21

结合 LLVM 的实验 理解和扩展 Kaleidoscope(LLVM 教程 ) 词法 语法 代码生成 即时编译 ( 新增 ) 理解 LLVM IR 的生成和使用方法 编译 Clang 和 LLVM 体验大工程的编译 ( 空间 时间 ) 问题及解释 Clang 特定模块代码导读与问题回答 词法 语法 CSA(Clang Static Analyzer) 理解现代编译器的实现技术 软件体系结构 课程资源主页 :http://staff.ustc.edy.cn/~yuzhang/compiler https://www.zybuluo.com/clarazhang/note/190166 2015 年秋 https://guoxing.gitbooks.io/compiler-f2016 2016 年秋 22

2016 秋季学期教学实践 23

2016 秋季学期教学实践 24

2016 秋季学期教学实践 25

助教 : 自己培养 LLVM 2015 年秋 v3.6 2016 年秋 v3.9 2017 年秋 v4.0.1 动员邀请政策配套 改作业检查实验 习题实验讲解 参与实验方案设计 自主研发工具 课程总结合作写教研论文 26

报告目录 1 问卷调查 -- 实践的重要性 2 3 4 5 教学实践的总体思路 Flex+Bison => ANTLR 引进 LLVM 的课程实践探索下一步的工作 27

正在进行的和未来的工作 基于 ANTLR 的小型语言的实现案例 (7 月 -) LLVM JIT( 即时编译 ) 代码导读和实验 (8 月 -) 支持跨课程计算机系统能力培养的教学编译器 目标指令系统 :11 条 55 条 MIPS 指令 ; 基于 LLVM 的工具库开发 IR 检查器 代码生成器 系统能力培养安徽省工作组 推动 FPGA 的省系统能力竞赛 : 培训 ( 本月底 ) 竞赛(11 月 ) 编译课程的研讨 : 微信群交流 (8 月 -) 线下交流(9/10 月 ) ANTLR 的使用案例 经典习题选择与讲解 28

谢谢各位老师! 编译原理课程调查问卷 29