热门分类 :
全国服务热线:
尊龙新版手机app下载 NEWS
编译原理学习(一)--编译以及过程
添加时间:2021-01-04

  ①编译器首先也是一种电脑程序。它会将用某种编程语言写成的源代码原始语言转换成另一种编程语言目标语言。

  一开始看比较容易被各种词法语法等弄得头大。其实计算机的所谓语法类比一下自然语言无非也一样是语言的结构方式。包括词的构成和变化﹐词组和句子的组织。无外乎主谓宾这样的一些规则或者结构来表达一个意思。为了后续学习的顺利性这里有必要先把各种术语搞清楚。

  编译器的第一个步骤称为词法分析或扫描。词法分析器读入组成源程序的字符流并将其组成有意义的词素的序列。形如token-name, attribute-value这样的词法单元。token-name是由语法分析使用的抽象符号attribute-value是指向符号表中关于这个词法单元的条目符号表条目的信息会被语义分析和代码生成步骤使用

  ①.语法是语言学的一个分支研究按确定用法来运用的词类、词的屈折变化或表示相互关系的其他手段以及词在句中的功能和关系。包含词的构词、构形的规则和组词成句的规则。

  由于计算机的特殊性因此计算机的语法逻辑性更强更注重算术和表达式等。所以就没有那么简单的“主谓宾”我们看的更多的可能类似 x y 1等

  ②.文法自然语言汉语中的意思1.法制;法规。 2.文章的作法。 3.语法。语言的结构方式。包括词的构成和变化﹐词组和句子的组织。文法即文章的书写法规一般用来指以文字、词语、短句、句子的编排而组成的完整语句和文章的合理性组织。

  编译的第2个步骤称为语法分析或解析。语法分析器使用由词法分析器生成的各词法单元的第一个分量来创建树形的中间表示。该中间表示给出了词法分析产生的词法单元的语法结构。常用的表示方法是语法树树中每个内部节点表示一个运算而该节点的子节点表示运算的分量。

  数据的含义就是语义。简单的说数据就是符号。数据本身没有任何意义只有被赋予含义的数据才能够被使用这时候数据就转化为了信息而数据的含义就是语义

  语义分析器使用语法树和符号表中的信息来检查源程序是否和语言定义的语义一致。它同时收集类型信息并存放在语法树或符号表中以便在中间代码生成过程使用。

  语义分析的一个重要部分就是类型检查。比如很多语言要求数组下标必须为整数如果使用浮点数作为下标编译器就必须报错。再比如很多语言允许某些类型转换称为自动类型转换。

  在源程序翻译成目标代码的过程中一个编译器可能构造出一个或多个中间表示。这些中间表示可以有多种形式。语法树是一种中间表示形式它们通常在语法分析和语义分析中使用。

  在源程序的语法分析和语义分析完成之后也会生成中间表示区别语法树很多编译器生成一个明确的低级的或类机器语言的中间表示。该中间表示有两个重要的性质1.易于生成2.能够轻松地翻译为目标机器上的语言。

  代码生成以中间表示形式作为输入并把它映射为目标语言。如果目标语言是机器代码则必须为每个变量选择寄存器或内存位置中间指令则被翻译为能够完成相同任务的机器指令序列。

邮箱:

Q Q:

地址: