第四课 第二章总结

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

1.文法的直观概念

以自然语言为例,人们无法列出全部句子,但人们可给出一些规则来组成句子结构。汉语句子可以由主语后随谓语而成,构成谓语的是动词和直接宾语,采用第一章的EBNF来表示这种构成规则。例句如下:

<句子>=><主语><谓语>

=><代词><谓语>

=>我<谓语>

=>我<动词><直接宾语>

=>我是<直接宾语>

=>我是大学生

其中=>的含义是使用一条规则,代表其左端的某个符号,产生其右端的符号串.

2.符号和符号串

(1)字母表

字母表是元素的非空有穷集合,字母表的元素称为符号,因此字母表也称为符号集,不同的语言有不同的字母表,例如汉字、数字等

(2)符号串

由字母表中的符号组成的任何有穷序列称为符号串.,允许有空符号串,用E表示,其长度为0,即|E|=0.

3.文法和语言的形式定义

    规则也叫重写规则、产生式或生成式,形如a->B或a::=B(a,B)有序对,其中a被称为左部,B被称为右部

文法G定义为四元组(Vn,VT,P,S),其中Vn为非终结符,;VT为终结符;P为规则(a->B)的集合,a∈(Vn U VT)*且至少包含一个非终结符,

B∈(Vn U VT)*; Vn,VTP是非空有穷集,S被称为识别符或开始符,是一个非终结符。

4.文法的类型

文法分成4种类型,即0型或、1型文法或称上下文有关的、2型文法或称上下文无关的和3型文法或称正规文法。这几类文法的差别在于对产生式施加不同的限制。

令G是一个文法,S是文法的开始符号,abo的是文法G的一个句型。如果有S-*→aAo且(A-+→b测标b是句型abo相对于非终结符A的短语。特别地,如果有(A→β是句型abo相对于规则A→b的直接短语(也称简单短语)。一个右句型的直接短语称为该句型的句柄。句柄的概念只适合于右句型

5.上下文无关文法及其语法树

描述一种简单赋值语句的产生式为

<赋值语句>->i:=E

描述条件语句的文法片段为

<条件语句>->if<条件>then<语句>|if<条件>then<语句>else<语句>。

  在推导的任何一步α=>β,其中α,β是句型,对α中的最左(最右)非终结符进行替换,这种推导称为最左(最右)推导,其中最右推导又被称为规范推导。

  对于存在某个句子对应两课不同的语法树,则说明这个文法是二义的,换句话说:一个文法存在某个句子,他有两个不同的最左(最右)推导,则这个文法是二乙义的。

6.句型的分析

如果有A=>β,则称β是句型αβγ相对于规则A->β的直接短语(也称简单短语)。一个右句型的直接短语称为该句型的句柄,句柄的概念只适合于右句型。对于无二义文法,一个右句型的唯一句柄是其所有直接短语中最左边那个,该句型最左直接短语既是他的句柄。

二、尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)〈程序〉→〈分程序〉.

〈分程序〉→ [<常量说明部分>][<变量说明部分>][<过程说明部分>]〈语句〉

<常量说明部分> → CONST<常量定义>{ ,<常量定义>};

<常量定义> → <标识符>=<无符号整数>

<变量说明部分> → VAR<标识符>{ ,<标识符>};

<过程说明部分> → <过程首部><分程序>;{<过程说明部分>}

<过程首部> → procedure<标识符>;

 <语句> → <赋值语句>|<条件语句>|<当型循环语句>|<过程调用语句>|<读语句>|   <写语句>|<复合语句>|<空>

<赋值语句> → <标识符>:=<表达式>

<条件语句> → if<条件>then<语句>

<加减运符> → +|-

<乘除运算符> → *|/

<关系运算符> → =|#|<|<=|>|>=

<项> → <因子>{<乘除运算符><因子>}

<因子> → <标识符>|<无符号整数>|(<表达式>)

<过程调用语句> → call<标识符>

<当型循环语句> → while<条件>do<语句>

猜你喜欢

转载自www.cnblogs.com/zhff/p/11590114.html