编译原理预习笔记------名词理解

来源:互联网 发布:怎么清空淘宝登录名 编辑:程序博客网 时间:2024/06/06 17:53

//--------------期末个人总结有误请指正

//-----------------------------------------------------------------

编译原理就是学习编译器如何把程序编译成计算机理解的二进制机器语言的过程

一、关于编译器的工作

关于编译器的各个阶段:也是教材讲解编译原理的顺序

1、词法分析

编译器的线性分析叫做词法分析或扫描(就是从头扫描么)

2、语法分析

层次分析,有时和词法分析不作区分,把操作数操作符区分到不同层次(分析树);

3、语义分析

检测源程序的语义错误,检查类型,区分出操作数操作符;

4 、图示

图示源代码在编译器中的变化(int to real 语义分析中的转型real:实数)


二、关于文法和语言

1、文法(Grammer)描述语言

G(Vt,Vn,S,P) 
Grammer(非终结符集合,终结符集合,开始符,推导式)

2、文法分

0型:左边必须有非终结符

1型:右边》=左边

2型:满足1型,且左边必须是非终结符 (全大写)

3型:满足2型 且 A→α|αB(右线性)或A→α|Bα(左线性)要么一个非终结符推出一个终结符,要么一个非终结符推出一个终结符并且带一个非终结符


3 推导与归约

对于文法G2[E],其句型i+i*i可以有如下几个推导序列:

E+T

 T+T

 F+T
 i+T

 i+T*F

 i+F*F
i+i*F

i+i*i(2、4)
EE+TE+T*FE+T*i
E+F*iE+i*iT+i*i
F+i*ii+i*i(25)

    为了使句型或句子能按一种确定的推导序列来产生,通常我们可仅考虑最左推导或最右推导。所谓最左 (右)推导,是指对于一个推导序列中的每一直接推导,被替换的总是当前符号串中的最左 (右)非终结符号。例如,在上面的各推导序列中,式(2,4)和式(2,5)就分别是最左和最右推导。

最右推导又叫规范推导,

规范归约:是最右推导的逆过程,它总是归约一个句型当前句柄。也叫做最左归约。


4 句子 句型 

句型:文法推导出的字符

句子:只有终结符的句型

5 短语 直接短语 句柄 语法树

转自 http://blog.csdn.net/wulingmin21/article/details/7488500


                   

0、子树:某一非终结符号(子树的根)及其下面的分支

1、短语:子树的末端结点形成的符号串.

这个短语相对的句型:整个树的末端结点.

非终结符号:子树的根

2、简单子树:只有一层分支的子树

3、简单短语也叫直接短语:简单子树的末端结点形成的符号串.

4句柄:子树中最左边的那棵只有父子两代的子树的所有叶结点自左至右排列起来,就是该句型的句柄。

(最左推导的最后一步,语法树最末最左)


             



6、二义性

有多个语法树的文法    如图



1 0
原创粉丝点击