文法和语言总结与梳理

1. 梳理第二章的内容,写一篇理解与总结。

答:

(1)文法的类型有:0型文法、1型或上下有关的文法、2型的或上下无关的文法、3型文法或正规文法

①0型文法又称为短语文法,设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)*且至少含有一个非终结符,而 β∈(VN∪VT)*,则G是一个0型文法。0型文法也称短语文法。一个非常重要的理论结果是:0型文法的能力相当于图灵机(Turing)。或者说,任 何0型文语言都是递归可枚举的,反之,递归可枚举集必定是一个0型语言。0型文法是这几类文法中,限制最少的一个,所以我们在试题中见到的,至少是0型文 法。

②1型文法也叫上下文有关文法,此文法对应于线性有界自动机。它是在0型文法的基础上每一个α→β,都有|β|>=|α|。这里的|β|表示的是β的长度。
注意:虽然要求|β|>=|α|,但有一特例:α→ε也满足1型文法。
如有A->Ba则|β|=2,|α|=1符合1型文法要求。反之,如aA->a,则不符合1型文法。

③2型文法也叫上下文无关文法,它对应于下推自动机。2型文法是在1型文法的基础上,再满足:每一个α→β都有α是非终结符。如A->Ba,符合2型文法要求。 如Ab->Bab虽然符合1型文法要求,但不符合2型文法要求,因为其α=Ab,而Ab不是一个非终结符。

④3型文法也叫正规文法,它对应于有限状态自动机。它是在2型文法的基础上满足:A→α|αB(右线性)或A→α|Bα(左线性)。 如有:A->a,A->aB,B->a,B->cB,则符合3型文法的要求。但如果推导 为:A->ab,A->aB,B->a,B->cB或推导 为:A->a,A->Ba,B->a,B->cB则不符合3型方法的要求了。具体的说,例子 A->ab,A->aB,B->a,B->cB中的A->ab不符合3型文法的定义,如果把后面的ab,改成“一个非终结 符+一个终结符”的形式(即为aB)就对了。例子A->a,A->Ba,B->a,B->cB中如果把B->cB改为 B->Bc的形式就对了,因为A→α|αB(右线性)和A→α|Bα(左线性)两套规则不能同时出现在一个语法中,只能完全满足其中的一个,才能算 3型文法。

⑤0型文法(type 0 grammar)形式文法的一种类型.在形式文法分类中泛指任何文法.1型文法是0型文法的子类,2型文法是1型文法的子类,3型文法是2型文法的子类.

(2)规则(重写规则、产生式、生成式)是形如A→B(A::=B)的(A,B)有序对。文法G定义为四元组(Vn,VT,P,S)VN:为非终结符(语法实体,或变量)集,常用大写字母表示;VT:为终结符,常用小写字母表示;P:为规则的集合,规则的左边属于V并且至少包含一个非终结符;S:为识别符或是开始符,是一个非终结符,至少要在一条规则中作为左部出现。推导是正向推导,归约是逆向推导。

(3)语法树:是描述上下文无关文法句型推导的直观工具。语法树的定义:设G=(VN,VT,P,S)为一上下文无关文法,若一棵树满足下列4个条件,则此树为G的语法树(推导树)  :①每个结点都有一个标记,此标记是V的一个符号②根的标记是S③若一结点n至少有一个它自己除外的子孙,并且有标记A,则肯定A∈VN④如果结点n的直接子孙从左到右依次为n1,n2,…,nk,并且标记分别为A1,A2,…,Ak,那么A→A1A2…Ak  一定是P中的一个产生式。

2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)

整数n

标识符i

表达式e

条件语句

赋值语句

复合语句

函数

程序

...

答:

整数n   文法:<n>::=<integer>

标识符i  文法:<i>::=<id>

表达式e

            文法:<e>:=[+|-]<项>{<加减运算符><项>}

           <项>::=<因子>{<乘除运算法><因子>}

           <加减运算符>::=+|-

条件语句    文法:<条件语句>::=if<条件>then<语句>

赋值语句     文法:<赋值语句>::=<id>:=<表达式>

复合语句     文法:<复合语句>::=begin<语句>{;<语句>} end

函数      文法:<函数>::=function <id>() :

程序   文法:<程序>::=<分程序>.

原文地址:https://www.cnblogs.com/kushoulder/p/11599369.html