• 编译原理复习——绪论


    高级语言程序如何在计算机上执行?
    翻译程序,编译程序: 先编译后执行   高级语言程序 翻译成 机器语言程序
    运行所得机器语言程序求得计算结果
    翻译程序 / 翻译器 (Translator)
    读入 用某种语言编写的程序 ( 源程序 Source Program) ,并 翻译 成一个 与之等价 的另一种语言编写的程序 ( 目标程序 —— Object Program) 。这两种语言分别称为 源语 目标语言
    解释程序: 解释执行 边解释 边执行   它以该语言写的源程序作为输入,但 不产 生目标程序 ,而是边解释边执行源程序本 身。
    编译程序和解释程序的区别:
    二者 本质 区别在于 是否生成目标代码
    编译过程概述
    词法分析
    又称扫描器,源程序 - 〉单词符号
    单词符号 :基本字、标识符、常数、算符和界符
    词法规则 正规式 有限自动机 描述
    语法分析
    单词符号串 ->语 法单位,并最终判断输入串是否构成语法上正确 的“程序”
    语法单位:短语、句柄、句子、程序段和程序
    语法规则用 上下文无关文法 描述,涉及分析树
    语义分析
    按照语义规则对语法分析器归约出的语法单位进行语义分析,并 把它们翻译成一定形式的中间代码
    语义检查
    变量是否定义,类型是否正确
    中间代码生成
    把源程序的记号流翻译成一定形式的中间代码,这种中间语言程 序是某种抽象的程序
    中间代码生成 :四元式中间代码
    代码优化
    对中间代码进行优化处理
    Debug / Release
    目标代码生成
    把中间代码翻译成目标程序
    编译程序通常被组成若干遍。所谓遍就是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。目的是使程序的结构更加清晰。
    编译前端:与源语言有关,与目标机无关
    词法分析,语法分析,语义分析,中间代码生成
    编译后端:与源语言无关,与目标机有关,依赖于中间代码
    代码优化,目标代码生成
  • 相关阅读:
    【Java】static关键字,内部类
    电容笔值不值得买?十分值得入手的电容笔品牌推荐
    TIA博途V17中ProDiag功能的使用方法示例(一)PLC数据类型的监控
    【算法】快速排序与归并排序
    BI业务分析思维:生产制造供应链订单交付优化分析三种方式
    架构基本概念和架构本质
    pytest
    OkHttp网络框架深入理解-SSL握手与加密
    模拟栈(模板)
    电脑被格式化怎么恢复数据?电脑格式化后还能恢复数据吗?
  • 原文地址:https://blog.csdn.net/m0_53345417/article/details/127720520