zoukankan      html  css  js  c++  java
  • 《编译原理》1

    1.什么是编译程序

    翻译程序:将一种语言等价转换另一种语言的程序
    编译程序:将某种高级语言等价转换另一种低级语言的程序
    解释程序:将源语言写的源程序作为输入,但不会产生目标程序,而是边解释边执行源程序

    编译执行

    解释执行

     

     2.编译原理和方法的应用

    (1)Html/Xml分析
    (2)语言处理工具

    3.编译过程

    类比英文翻译为中文    
    识别句子中一个个单词      词法分析
    分析句子的语法结构        语法分析
    根据句子的含义进行初步翻译      中间代码产生
    对译文进行修饰      优化
    写出最后的译文      目标代码产生
    4.各阶段分析
    (1)词法分析
    任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出单词符号
    依循的原则:构词规则
    描述工具:有限自动机
    for i := 1 to 100 do
    基本字 标识符 赋值号 整常数 基本字 整常数 基本字
    (2)语法分析
    编译过程-语法分析
    任务:在词法分析的基础上,根据语法规则把单词符号串分解成各类语法单位语法范畴)依循的原则:语法规则
    描述工具:上下文无关文法

     (3)中间代码产生
    任务:对各类语法单位按语言的语义进行初步翻译
    依循的原则:语义规则
    描述工具:属性文法
    中间代码:三元式,四元式,树
    Z:=X +0.618 *Y 翻译成四元式为

     (4)优化
    任务:对前阶段产生的中间代码进行加工变换以期在最后阶段产生更高效的目标代码
    依循的原则:程序的等价变换规则

    (5)目标代码产生
    任务:把中间代码变换成特定机器上的目标代码
    依赖于硬件系统结构和机器指令的含义
    目标码三形式
    汇编指令代码:需要进行汇编
    绝对指令代码(机器代码):可直接运行(地址为绝对地址)
    可重新定位指令代码:需要链接(地址为相对地址)

     

     概念介绍
    遍(pass)
    所谓"遍",就是对源程序或源程序的中间表示从头到尾扫描一次
    阶段与遍是不同的概念
    1.一遍可以由若干段组成(如词法分析、语法分析、中间代码产生合为一遍)
    2.一个阶段也可以分若干遍来完成(如优化阶段分为若干段)

    编译程序生成

    1.以机器语言和汇编语言为工具
    优点:可以针对具体的机器,充分发挥计算机的系统功能;生成的程序效率高
    缺点:程序难读、难写、易出错、难维护、生产效率低

    2.高级语言书写

    程序易读,易理解,易维护,生产效率高

  • 相关阅读:
    遗产继承骗局
    Nginx配置https和wss
    Servlet乱码问题
    logback+slf4j作为日志系统
    InteliJ Idea通过maven创建webapp
    pip安装注意事项
    [转]TCP(HTTP)长连接和短连接区别和怎样维护长连接
    Python Socket编程初探
    有用的git片段
    Python使用chardet包自动检测编码
  • 原文地址:https://www.cnblogs.com/caishunzhe/p/13216550.html
Copyright © 2011-2022 走看看