引论

程序设计语言历史

  • 机器语言
  • 汇编语言
  • 高级语言

实现高级语言程序的方式

  • 编译方式引论_第1张图片
  • 解释方式
    引论_第2张图片

两种方式的区别

  • 解释器:执行系统;一次目标程序只能执行一次;有利于人机交互;保存的信息多,空间开销大
  • 编译器:转换系统;一次翻译目标程序可执行多次

其它高级语言实现的方式:

  • 转换方式:把A语言的程序转换为已有编译器的B语言程序,然后通过B语言已有的编译器编译执行

编译程序的组成

编译程序的结构:

引论_第3张图片

词法分析程序:

  • 检查程序中是否有词法错误
  • 构造单词的内部表示

例如:x=100,分为五个字符x,=,1,0,0;通过词法分析程序,将其分为三个单词x,=,100

语法分析程序:(检查文法错误)

  • 自顶向下的分析方法
  • 自底向上的分析方法

语义分析

  • 检查有无语义错误(变量重复声明,运算时类型不相容等)
  • 为后续编译工作收集所需信息

-----------------------------------这里以上三条需要错误处理------------------------------------

中间代码的生成:

  • 为了优化
  • 便于移植

中间代码的优化:
与程序算法无关,与程序内部有关

生成目标代码:

生成特定机器上的汇编代码或者机器语言

-----------------------------------------这以上六条需要表格管理---------------------------------

你可能感兴趣的:(编译原理)