导航:首页 > 源码编译 > 编译原理文法中的句型

编译原理文法中的句型

发布时间:2025-03-07 02:46:26

编译原理的题目:对于文法G(E):E→T|E+T|E-T T→F|T*F|T/F F→(E)|i

终极符集合Vt={+,-,*,/,(,),i}
非终极符集合Vi={E,T,F}
最右推导:E => E-T => E-F => E-(E) => E-(T) => E-(T+F) => E-(T+i) => E-(T*F+i)
直接短语:T*F,i

㈡ 编译原理,证明下面文法G(s)是二义性的。

证明:

若文法中存在这样的句型,它具有两棵不同的语法树,则称该文法是二义性文法,二义性文法会引起歧义,应尽量避免。

(S + S)和(S * S)以及(i S * S)和(S + S i)都可以表示i+i*i,所以G(S):S -> S+S| S*S | (S) | i ;文法具有二义性。

㈢ 编译原理中的语法和文法一样吗

编译原理中的语法和文法是不一样的,但却融会贯通。
在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。
文法分成四种类型,即0型、1型、2型和3型。这几类文法的差别在于对产生式施加不同的限制。
形式语言,这种理论对计算机科学有着深刻的影响,特别是对程序设计语言的设计、编译方法和计算复杂性等方面更有重大的作用。
多数程序设计语言的单词的语法都能用正规文法或3型文法(3型文法G=(VN,VT,P,S)的P中的规则有两种形式:一种是前面定义的形式,即:A→aB或A→a其中A,B∈VN ,a∈VT*,另一种形式是:A→Ba或A→a,前者称为右线性文法,后者称为左线性文法。正规文法所描述的是VT*上的正规集)来描述。
四个文法类的定义是逐渐增加限制的,因此每一种正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的,而每一种上下文有关文法都是0型文法。称0型文法产生的语言为0型语言。上下文有关文法、上下文无关文法和正规文法产生的语言分别称为上下文有关语言、上下文无关语言和正规语言。

㈣ 编译原理中文法二义性问题

二义性文法

【定义】 若文法中存在这样的句型,它具有两棵不同的语法树,则称该文法是二义性文法。

二义性文法会引起歧义,应尽量避免之!

E E

E + E E * E

i E * E E + E i

i i i i

都可以表示i+i*i

所以G(E):E -> E+E | E*E | (E) | i ;文法具有二义性。

文法二义性的消除:

【方法1】不改变文法的原有规则,加进一些非形式规定。

加进运算符的优先顺序和结合规则对G(E),规定*优于+,*和+服从左结合

【方法2】构造一个等价的无二义性文法,将排除 二义性的规则合并到文法中

G(E) -> G´(E) : E -> E+T | T T -> T*F | F F -> (E) | i ;

㈤ 【编译原理】第二章:语言和文法



上述文法 表示,该文法由终结符集合 ,非终结符集合 ,产生式集合 ,以及开始符号 构成。
而产生式 表示,一个表达式(Expression) ,可以由一个标识符(Identifier) 、或者两个表达式由加号 或乘号 连接、或者另一个表达式用括号包裹( )构成。

约定 :在不引起歧义的情况下,可以只写产生式。如以上文法可以简写为:

产生式

可以简写为:

如上例中,

可以简写为:

给定文法 ,如果有 ,那么可以将符号串 重写 为 ,记作 ,这个过程称为 推导
如上例中, 可以推导出 或 或 等等。

如果 ,
可以记作 ,则称为 经过n步推导出 ,记作 。

推导的反过程称为 归约

如果 ,则称 是 的一个 句型(sentential form )。

由文法 的开始符号 推导出的所有句子构成的集合称为 文法G生成的语言 ,记作 。
即:


文法

表示什么呢?
代表小写字母;
代表数字;
表示若干个字母和数字构成的字符串;
说明 是一个字母、或者是字母开头的字符串。
那么这个文法表示的即是,以字母开头的、非空的字符串,即标识符的构成方式。

并、连接、幂、克林闭包、正闭包。
如上例表示为:

中必须包含一个 非终结符


产生式一般形式:
即上式中只有当上下文满足 与 时,才能进行从 到 的推导。

上下文有关文法不包含空产生式( )。


产生式的一般形式:
即产生式左边都是非终结符。

右线性文法
左线性文法
以上都成为正则文法。
即产生式的右侧只能有一个终结符,且所有终结符只能在同一侧。

例:(右线性文法)

以上文法满足右线性文法。
以上文法生成一个以字母开头的字母数字串(标识符)。
以上文法等价于 上下文无关文法

正则文法能描述程序设计语言中的多数单词。

正则文法能描述程序设计语言中的多数单词,但不能表示句子构造,所以用到最多的是CFG。

根节点 表示文法开始符号S;
内部节点 表示对产生式 的应用;该节点的标号是产生式左部,子节点从左到右表示了产生式的右部;
叶节点 (又称边缘)既可以是非终结符也可以是终结符。

给定一个句型,其分析树的每一棵子树的边缘称为该句型的一个 短语
如果子树高度为2,那么这棵子树的边缘称为该句型的一个 直接短语

直接短语一定是某产生式的右部,但反之不一定。

如果一个文法可以为某个句子生成 多棵分析树 ,则称这个文法是 二义性的

二义性原因:多个if只有一个else;
消岐规则:每个else只与最近的if匹配。

㈥ 编译原理什么是素短语

编译原理中,素短语是至少含义一个终结符,并且自身不包含任何更小素短语的一种短语。

素短语是一种特殊的短语,它是一个递归的定义,至少含有一个终结符,并且除它自身之外不再含任何更小的素短语,所谓最左素短语就是处于句型最左边的素短语的短语。

一个算符优先文法G的任何句型的最左素短语是满足以下条件的最左子串NaNb…NcNdN(N是非终结符,a,b,c,d是终结符)。例如:句型T+T*F+id,T*F是最左素短语,id是素短语。

(6)编译原理文法中的句型扩展阅读:

通过语法树可以得知素短语:

1、每个句型对应一棵语法树

2、每棵语法树的叶子结点从左到右排列构成一个句型

3、每棵语法树的子树的叶子结点从左到右排列构成一个短语

4、每棵语法树的简单子树(只有父子两层结点)的叶子结点从左到右排列构成一个简单(直接)短语。

5、素短语是至少包含一个终结符的短语,但它不能包含其它素短语。

阅读全文

与编译原理文法中的句型相关的资料

热点内容
怎么在app上退订短号业务 浏览:978
解压迫及法老 浏览:58
pdf横竖 浏览:137
5800计算机程序和编程 浏览:29
网上报修php源码 浏览:897
魔兽宏命令老是语言提示 浏览:971
办公文件夹大全 浏览:471
单片机闪烁灯虚拟线路图 浏览:72
App显示别的国家怎么更改 浏览:154
幻塔官方服务器叫什么 浏览:196
android自定义进度框 浏览:506
linux自动联网 浏览:492
keil编写的程序怎么不能编译呢 浏览:562
ipadair2能编程吗 浏览:358
esxi查看内存命令行 浏览:79
u盘settings文件夹 浏览:649
新东方雅思写作pdf 浏览:734
python中多个随机数的生成 浏览:119
服务器侦听端口是什么意思 浏览:320
手机通知音效文件夹 浏览:135