编译原理关键知识点

  • 词法分析:正则表达式、自动机DFA/NFA
  • 语法分析:BNF范式、抽象语法树、递归下降Parsing
  • 语义分析:属性文法、类型检查、符号表、作用域、中间代码生成
  • 代码优化:现代编译器常用的优化方法及其原理
  • 汇编指令:Stack based 与 Register based 虚拟机的原理与实现

编译原理学习资料

编译器的体系结构

基本的编译程序由词法分析、语法分析、语义分析与中间代码生成、代码优化、代码生成、符号表管理、出错处理七个功能模块构成。

编译器的工作阶段大致如下:

源代码 --> 扫描程序(scanner): Token
      --> 语法分析(parser): 语法树
      --> 语义分析(semantic analyzer): 注释树
      --> 源代码优化(source code optimizer): 中间代码
      --> 代码生成器(code generator): 目标代码
      --> 目标程序优化(target code optimizer): 目标代码
贯穿全部的有:文字表、符号表、错误处理器

涉及的算法与数据结构:

  • token,自动机算法
  • syntax tree,递归下降算法
  • symbol table,贯穿所有阶段,要求快速插入、删除与访问
  • literal table,存放在程序中用到的常量和字符串,要求要快速插入和查找
  • temporary file,保存多次用到的某些运行步骤中生成中间文件

掌握好编译原理,才能对编程有更深刻的认识。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐