【编译原理】上 编译原理绪论,词法分析,语法分析

一、编译原理绪论白话概述

1,我们知道编译程序可以将Java这种高级语言编写的源程序转换成与之在逻辑上等价的目标程序。而目标程序就可以是汇编语言程序或者是机器语言程序了。汇编语言程序就是微机原理与接口技术和计算机组成原理还有单片机中常见的汇编语言 Mov jmp等等。 具体深入到机器语言那就不是我等凡夫俗子所能染指的,一小句HelloWorld出现在公屏上底层就是巨长一串0和1。

2,我们在编译的过程中分成若干遍,其实遍数越多编译程序的执行效率就越低了,就像JAVA底层也有很多是C和C++,还有Python的底层也是,Java是为了面向对象,Python是为了方便快捷写脚本等等,但是编译程序这样分成若干遍则是为了使编译程序的结构更加清晰!

3,我们构造编译程序应该掌握:源程序,目标语言,编译方法以上三种缺一不可!

4,我们编译程序绝大多数时间花在表格管理上!就像一个完整的软件开发流程,从前期分析需求,资金准备,人员确定,书写文档,调整,分发文档下去各个总结评测,确定无误,再算资金,定日期,这之后定好了一系列条条框框,再分发下去给人员,写代码,模块化实现,上线之前的测试需要测试表格,上线之后的维护需要维护日志,上线之后用户的使用,客户的需求反馈等等,这些都是绝大多数的时间,而我们的编译程序绝大多数时间则是花在表格管理中的!

5,编译程序,编译程序,人家都带了个编译了,都有译了,你说人家的功能是啥,编译程序是对高级语言的翻译!

6,说了这么多,如果你是一个编译程序的总设计师,设计编译程序时应当考虑哪些问题?

作为一个编译程序的总设计师

首先,我会深刻理解被编译的高级程序设计语言(源语言)的语法及其语义。

其次,还要充分掌握目标指令的功能及其特点。如果目标语言是翻译成机器语言,那还要搞清楚机器的硬件结构以及操作系统的功能。

然后,对编译的方法及其使用的软件工具也必须准确化。

最后,总计师在设计编译程序时必须估量系统功能要求,硬件设备及软件工具等诸多因素对编译程序构造的影响!

 编译程序总框图如上!


二、词法分析

1,词法分析所依据的是构词规则

用jio想都知道词法分析词法分析,对关键词的语法进行分析,,,肯定是依据构词规则呀!

2,词法分析器的输入是源程序

源程序中最基本的单位就是关键词等各种词了吧,总不能把单词拆成字母分析叭,所以直接从源程序动手,第一层翻译,输入源程序,经过词法分析,分析输出单词符号(单词符号通常表达为二元式:也就是单词种别和单词自身的值)。

3,词法分析器的输出是单词种别编码和单词自身的值

4,什么是扫描器(扫描器就是上文反复提到的词法分析器),扫描器的功能是什么?

扫描器就是词法分析器,

首先,他接受输入的源程序。

其次,他把接收的源程序对其进行词法分析并且将其按词识别出来成一个个二元式:(也就是单词种别编码和单词自身的值),然后输出单词符号,供语法分析器使用。

通常我们把词法分析器作为一个子程序,每当语法分析器需要一个单词符号时就调用这个子程序,这样每次调用时,词法分析器就从输入串中识别一个单词符号交给语法分析器!


三、语法分析

1,程序语言的语义需要上下文有关文法来描述。

2,2型文法应对下推自动机

4,有限状态自动机能识别 正规文法

6,只含有单层分支的子树称为“简单子树”,则句柄的直观解释是最左简单子树的末端节点组成的符号串。

在此需要补充,什么玩意儿你都能叫他子树,子树是很随便的就能弄来一棵,但是简单子树则是 首先是子树,其次下面有且只有一层,这才算是简单子树。

8,由文法开始符S经过零步或多步推导产生的符号序列是:句型

9,规范推导是最右推导,规范推导是最右推导,规范推导是最右推导!

10,如果文法G[S]是无二义的,那么他的任何句子A其最左推导和最右推导对应的语法树必定相同。

11,一个句型的分析树代表了该句型的推导过程。

12,规范约束中的可归纳串由最左直接短语定义

13,规范规约是指最右推导的逆过程

16,采用自顶向下分析,必须消除左递归

3.3 一个文法对应两个或者多个语法树,则该文法有二义性,称为二义文法

由文法推到一个句子,如果这个句子的最左推导和最右推导得到的两棵树长得一样,那么这就是非二义文法。

3.7


短语 就是针对每一棵子树,他裸露在外的叶子节点。每一棵树裸漏在外的穿起来是一个短语。

从下往上看,针对子树Sa是他的短语

针对子树S裸露在外的(a)又是一个短语

针对子树L

 S是一个短语

针对这个较大的子树

裸露在外的组成了S,(a)这个短语,针对最大的树,裸露在外的组成了(S,(a))这个短语


 直接短语就是,必须是有且只有一层,也就是直接子树的短语。

必须下面有一层且只有一层,再往下没有了。例如

L和S行,S和a行,但是蓝色框起来的那两个就不行!因为不止一层,所以直接短语:a,S


没有什么能使我停留,我是不系之舟~

猜你喜欢

转载自blog.csdn.net/m0_56164356/article/details/123233954