zoukankan      html  css  js  c++  java
  • 编译原理1----编译原理的基本概念

    编译程序:把一种语言(源语言===高级语言)转换成另一种语言(目标语言===低级语言(汇编或者机器语言))的程序。

    词法分析:对输入的字符串进行扫描和分解,识别出一个个单词及其类型;(输入是字符串,输出是<单词的种类标示符,单词的值>)

    语法分析:对输入的字符串进行语法单位的识别,判断他是一个赋值语句还是一个表达式(输入是程序串,输出是是否是合法的语法单位)

    语义分析与中间代码的产生:对输入的程序串进行语法的检查,并且合法的话进行初步的翻译。(输入是语法单位,输出是翻译的初步代码)

    优化器:对于初步翻译得到的代码进行再次的扫描和翻译,去掉冗余。(输入是初步的翻译结果,输出是优化后的代码)

    目标代码生成器:对于优化后的代码进行再次翻译,生成符合机器的最终代码。(输入是优化后的代码,输出是符合机器的目标代码)

    表格和表格管理:每个阶段都会有相应的表格记录各类信息以及编译的进展状况。

    出错处理:当编译的过程中有错误出现的时候应当有报错处理,具体的地点,原因,并且使得范围尽量的小,使源程序的其余部分继续执行。

    遍:就是对源程序或者源程序的中间结果进行从头到尾的扫描依次,并且作出相应的处理,生成新的中间结果或者目标程序。次法分析相当于一遍,语法分析相当于一遍,但是词法、语法可以合为一遍,根据自身的内存情况而定。内存大的时候可以少几遍。因为遍数多了也是会浪费输入输出时间的。

    闭包:V^n=VVVVV....V     规定V^0={e}(这里的e就是空的意思)。

    V*=V^0UV^1UV^2...(其中V*是V的闭包)相当于你从0到n都被我承包了。

    文法:定义一组的规则产生式的集合,如:G:

    E->i

    E->E+E

    E->E*E

    E->(E)

    称为文法。其中的每一条即为产生式。

    一组产生式是一个四元式(VT,VN,S,p),终结符号,非终结符号,开始符号,一组产生式。

    句型:由开始符号推导出的一个串是句型,如:s-*>a;a是一个句型,如果a中只含终结符,a为句子。E->E*E中E*E是一个句型,E->i中i也是一个句型,同时也是一个句子。E的所有句子是一个语言。

    语法树:句型的推导过程就是一颗语法树。

    二义性:是指对于一种推导有多中不同的结果,而不是分别最左推导和最右推导有不同的结果。

  • 相关阅读:
    使用Python操作InfluxDB时序数据库
    LogMysqlApeT
    内建函数 iter()
    Python魔法方法总结及注意事项
    Python魔法方法之属性访问 ( __getattr__, __getattribute__, __setattr__, __delattr__ )
    Python描述符 (descriptor) 详解
    在命令行模式下查看Python帮助文档---dir、help、__doc__
    python高并发的解决方案
    map中的erase成员函数用法
    指针的本质
  • 原文地址:https://www.cnblogs.com/future-liu1121/p/6120075.html
Copyright © 2011-2022 走看看