• 编译原理复习——绪论


    高级语言程序如何在计算机上执行?
    翻译程序,编译程序: 先编译后执行   高级语言程序 翻译成 机器语言程序
    运行所得机器语言程序求得计算结果
    翻译程序 / 翻译器 (Translator)
    读入 用某种语言编写的程序 ( 源程序 Source Program) ,并 翻译 成一个 与之等价 的另一种语言编写的程序 ( 目标程序 —— Object Program) 。这两种语言分别称为 源语 目标语言
    解释程序: 解释执行 边解释 边执行   它以该语言写的源程序作为输入,但 不产 生目标程序 ,而是边解释边执行源程序本 身。
    编译程序和解释程序的区别:
    二者 本质 区别在于 是否生成目标代码
    编译过程概述
    词法分析
    又称扫描器,源程序 - 〉单词符号
    单词符号 :基本字、标识符、常数、算符和界符
    词法规则 正规式 有限自动机 描述
    语法分析
    单词符号串 ->语 法单位,并最终判断输入串是否构成语法上正确 的“程序”
    语法单位:短语、句柄、句子、程序段和程序
    语法规则用 上下文无关文法 描述,涉及分析树
    语义分析
    按照语义规则对语法分析器归约出的语法单位进行语义分析,并 把它们翻译成一定形式的中间代码
    语义检查
    变量是否定义,类型是否正确
    中间代码生成
    把源程序的记号流翻译成一定形式的中间代码,这种中间语言程 序是某种抽象的程序
    中间代码生成 :四元式中间代码
    代码优化
    对中间代码进行优化处理
    Debug / Release
    目标代码生成
    把中间代码翻译成目标程序
    编译程序通常被组成若干遍。所谓遍就是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。目的是使程序的结构更加清晰。
    编译前端:与源语言有关,与目标机无关
    词法分析,语法分析,语义分析,中间代码生成
    编译后端:与源语言无关,与目标机有关,依赖于中间代码
    代码优化,目标代码生成
  • 相关阅读:
    NB6L295M STM32 GD32 IO模拟驱动设计
    计算机毕业设计Java鲜花订购网微服务(源码+系统+mysql数据库+Lw文档)
    xavier china server
    cbu和无cc的shiro反序列化
    QEMU TCG研究
    Java Maven Tomcat使用Tesseract-OCR文字识别(Tess4j)
    ES6 入门教程 11 对象的新增方法 11.1 Object.is() & 11.2 Object.assign()
    Linux搭建NFS服务器
    cocosCreator 之 crypto-es数据加密
    misc类设备驱动1——misc类设备的简介
  • 原文地址:https://blog.csdn.net/m0_53345417/article/details/127720520