编译原理1(文法)

本文介绍了文法的不同类型,包括形式化、半形式化和非形式化,以及上下文无关文法(2型)、上下文有关文法(1型)和正规文法(3型),重点讲解了文法的构成要素和推导过程,展示了不同类型的文法在描述语言结构和语法规则上的差异。
摘要由CSDN通过智能技术生成

1、文法

(形式化(formal):在完备数学概念基础上,采用具有确定语义定义并有严格语法的语言表达的规范风格。

半形式化(semiformal):采用具有确定语义定义并有严格语法的语言表达的规范风格。

非形式化(informal):采用自然语言表达的规范风格。)

形式化语言

设文法G=(V,T,P,S),还有一种表示方法为:G=(VN,VT,P,S),两者等价

  • V 是一个有限非终结符集合,表示语言中的各种语法成分(如句子、短语、表达式等)。
  • T 是一个有限终结符集合,表示语言中的各种标识符、关键字、操作符等。
  • P 是一组产生式规则,每个规则有一个左侧和一个右侧,表示由左侧的非终结符生成右侧的符号串的规则。
  • S 是一个起始符号,表示语言中的一个根语法成分,通常是一个非终结符。

产生式规则的形式为 A → γ,其中 A ∈ V 是一个非终结符,γ 是一个由终结符和非终结符组成的符号串。每个产生式规则都表示了一种语法结构的生成方式。

文法的推导过程是从起始符号开始,根据产生式规则逐步生成符号串,直到得到最终的语言结构。推导过程中,根据产生式规则的左侧非终结符,选择相应的产生式规则进行替换。

总之,文法是一种形式化的描述语言结构和语法规则的工具,通过定义非终结符、终结符和产生式规则,可以生成符合特定语法规则的符号串,从而描述一种语言的结构和语法。不同类型的文法(如上下文无关文法、上下文有关文法等)提供了不同的表达能力和描述能力,适用于不同的语言和语法结构。

2、字符串相关概念

3、不同文法

2型 --上下文无关

  • 文法的定义里的某个产生式在应用相应的产生式进行推导时, 无需考虑非终结符前后的串是什么.
    • 左侧: 含有一个非终结符
    • 在推导式的过程中, 左侧会被完全替换掉, 只起到一个中间的作用.

1型 --上下文有关

  • 任何产生规则的左手端和右手端都可以被终结符和非终结符的上下文所围绕.
  • P.s. 是乔姆斯基描述自然语言的一种方式介入的, 在自然语言中一个单词是否可以出现在特定的位置要依赖于上下文.
    • 左侧: 至少含有一个非终结符
    • 也就说存在一种情况, 就是左侧既有终结符也有非终结符

所以, 2型文法是1型文法的一种特殊情况, 每一种上下文无关文法都一定是上下文有关的.

文法定义的形式-四元组(Vn,Vt,P,S): Vn为非终结符集,Vt 为终结符集,P为规则集,S为识别符|开始符,至少要在一个规则中作为左部出现,Vn ∩ Vt = ∅。根据对文法施加不同的限制,分成4种类型。

0型或短语文法:

产生式形如:α->β
其中:α、β属于字符串的闭包区间内且α至少包含有一个非终结符;
解释:左边有非终结符,右边有终结符。
举例:A->ab, A->Cb, A->b
0型文法是这几个文法中,限制最少的一个,一般见到的文法都可看做0型文法。0型文法的能力相当于图灵机(Turing)。
1型文法:又称为上下文有关文法:

产生式形如:α->β
其中:α->β均满足|α|<=|β|, 除了α->ε外;
解释:式子左边可以有多个字符,但必须有一个非终结符;式子右边可以有多个字符,可以是终结符,也可以是非终结符,但必须是有限个字符且左边长度必须小于右边(例外)
举例:A->B,A->Bba  ,Bb->A,
2型文法:又称为上下文无关文法:

产生式形如:   A ->β
解释:式子左边必须是非终结符,然而一个终结符一个非终结符的组合不是一个非终结符,如Ab不是一个非终结符,但是两个非终结符的组合就是一个非终结符了,如AB就是行了;式子右边可以有多个字符,可以是终结符,也可以是非终结符,但必须是有限个字符
举例:AB->abc,B->ab
3型文法:又称为正规文法(正规文法又包括左线性文法和右线性文法):

右线性文法:

产生式形如: A  ->αB 或 A  ->α
解释:式子左边只能有一个字符,而且必须是非终结符;式子右边最多有二个字符。如果有二个字符必须是(终结符+非终结符)的格式,如果是一个字符,那么必须是终结符。
举例:B->aB
左线性文法:

产生式形如: A  ->Bα 或 A  ->α
解释:式子左边只能有一个字符,而且必须是非终结符;式子右边最多有二个字符。如果有二个字符必须是(非终结符+终结符)的格式,如果是一个字符,那么必须是终结符。
举例:B->Ba
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值