编译原理学习01

编译器的结构

  • 编译器的组成:分析部分、综合部分
    分析器:把源程序分解成多个组成要素,并在这些要素之上加上语法结构。然后,它使用这个结构来创建该源程序的一个中间表示
    综合:部分根据中间表示的符号表中的信息来构造用户期待的目标程序。分析部分经常被称为编译器的前段,而综合部分称为后端。
  • 词法分析
    词法分析器读入组成源程序的字符流,并且将它们组织成为有意义的词素的序列。对于每个词素,词法分析器产生如下形式的词法单元作为输出:
    词法单元被传送给下一个步骤,即语法分析。在这个词法单元中,第一个分量token-name是一个由语法分析步骤使用的抽象符号,而第二个分量attribute-value 指向符号表中关于这个词法单元的条目。符号表条目的信息会被语义分析和代码生成步骤使用。
    position = initial + raee * 60
    这个赋值语句中的字符可以组合成如下词素,并映射成为如下词法单元。这些词法单元将被传递给语法分析阶段。
    1) position 是一个词素,被映射成词法单元

第一章总结

  • 语言处理器:一个集成的软件开发环境,其中包括很多种类的语言处理器,比如编译器、解释器、汇编器、连接器、加载器、调试器以及陈谷概要提取工具。
  • 编译器的步骤:一个编译器的运作需要一系列的步骤,每个步骤把源程序从一个中间表示转换成为另一个中间表示。
  • 机器语言和汇编语言:机器语言是第一代程序设计语言,完后是汇编余燕使用这些语言进行编程既费时,又容易出错。
  • 编译器设计中的建模:编译器设计是理论对实践有很大影响的领域制宜已知在编译器设计中有用的模型包括自动机、文法、正则表达式、树形结构和很多其他理论概念。
  • 代码优化:虽然代码不能真正达到最优化,但提高代码效率的科学既复杂又非常重要。它是编译技术研究的一个主要部分。
  • 高级语言:随着时间的流逝,程序设计语言担负了越来越多的原先由程序员负责的任务,比如内存管理、类型一致性检查或代码的并发执行。
  • 编译器和计算机体系结构:编译器结束影响了计算机的体系结构,同事也受到体系结构发展的影响。体系结构中的很多现代创新都依赖于编译器能够从源程序中抽取出有效利用硬件能力的机会。
  • 软件生产率和软件安全性:使得编译器能够优化代码的技术同样能够用于多种不同的程序分析任务。这些任务既包括探测常见的程序错误,也包括发现程序可能会受到已被黑客们发现的多种入侵方式之一的伤害。
  • 作用域规则:一个x的声明的作用域是一段上下问,在此上下文中对x的使用指向这个声明。如果仅仅通过阅读某个语言的程序就可以确定其作用域,那么这个语言就使用了静态作用域,或则说词法作用域。否则这个语言就使用动态作用域。
  • 环境:名字和内存位置关联,然后再和值想关联。这个情况可以使用环境和状态买描述。其中环境把名字映射成为储存位置,而状态则把位置映射到它的值。
  • 块结构:允许语句块相互嵌套的语言称为块结构的语言。假设一个块中有一个x的声明D,而钱傲于这个块中的块B中有一个对名字x的使用。如果在这个两个块之间没有其他声明了x的块,那么这个x的使用位于D的作用于内。
  • 参数传递:参数可以通过值或引用的方式从调用过程传递给被调用过程。当通过值传递方式传递大型对象时,实际被传递的值是指向这些对象本身的引用。这样就编程了一个高效的引用调用。
  • 别名:当参数被以引用传递方式(高效地)传递时,两个形式参数可能会指向同一个对象。这会造成一个变量的修改改变了另一个变量值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值