编译原理基本概念

本文详细介绍了编译过程,包括从高级语言到机器码的转换,并重点讲解了T形图在编译中的作用。同时,深入探讨了自动机的基础知识,如文法的定义、分类(0型至3型文法)、上下文无关文法的分析树及其衍生概念。此外,还讨论了二义性文法及其避免策略,是理解编译原理和形式语言理论的重要参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编译过程与T形图

1.编译过程

从宏观上讲就是由高级语言生成机器码的过程。
在这里插入图片描述

2.T形图

在这里插入图片描述

二、自动机基础

1.文法定义:G=(VT,VN,P,S)

字母表:有穷符号集合。
乘积:连接。
正闭包与克林闭包:克林闭包多了一个空串。(所有不同长度的字符串组成的集合)
G=(VT,VN,P,S)

  • VT:终结符,a,b,c,id…
  • VN:非终结符,通常用来描述终结符,E,T…
  • P:产生式集合,描述将终结符和非终结符组合成串的方法。
  • S:开始符号,表示的是该文法中最大的语法成分。

2.推导与规约

在这里插入图片描述
+表示经过正数次推导,*表示经过若干次推导(多了一个0次)。

3.句型与句子

在这里插入图片描述
不包含非终结符的是句子,包含的是句型,句子是一个特殊的句型。

4.语言

由文法开始符号推导出所有的句子构成的集合称为该文法生成的语言。

5.文法分类

是通过对产生式内容的限制来划分的。

(1)0型文法

无限制文法,a->b

,a中至少有一个非终结符。

(2)1型文法(上下文有关语言)

a->b

a中至少一个非终结符
且|a|<=|b|

(3)2型文法(上下文无关文法)

a->b

a中至少一个非终结符
|a|<=|b|
a只能是非终结符

(4)3型文法

a->b

a中至少一个非终结符
|a|<=|b|
a只能是非终结符
右线性:(a->w)||(a->wB) 左线性:(a->w)||(a->Bw)

(5)四种文法关系

在这里插入图片描述

6.上下文无关文法(CFG)分析树

我们只对2型文法做研究。

(1)建树规则

根节点符号为文法开始符号。
子树根节点为产生式左侧,子节点从左到右构成产生式右侧。
叶节点既可以是终结符,也可以是非终结符。

(2)衍生概念

边缘:从左到右排列叶子节点,得到符号串称为这棵树的边缘。
短语:分析树中的每一个子树的边缘称为该句型的一个短语。
直接短语:子树只有父子两代节点,它的边缘为一个直接短语。
在这里插入图片描述

7.二义性文法

形成多棵分析树的文法是二义性文法,我们要避免。有一个充分条件,如果文法满足,则为一个二义性文法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卖寂寞的小男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值