文法和语言总结与梳理

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

(1)文法的定义:

  当我们要描述一种语言时,需要给出这种语言的所有句子,当句子的数目是有限可数时,就要都列出来;当句子是一个无穷集,也就是无限不可数时,就要给出可以表示它们的结构的描述方法或者说,句子的组成规则。这种规则就是文法。

  文法G定义为一个四元组(VN,VT,P,S),其中,VN为非终结符集合,VT终结符集合;P是产生式结合;S称为识别符或开始符号,也是一个非终结符,至少要在一条产生式的左边出现。

  其中VN表示非终结符的集合,VT表示终结符的集合, P表示产生式的有穷集合, S表示开始符号。 

(2)文法类型:

  0 型文法(短语文法):α->β,α中至少含一个非终结符。

  1 型文法(上下文有关文法) :α->β满足|α|<=|β|,对于产生式α1Aα2->α1βα2,用β替换A时,只能在上下文为α1和α2时才能进行。这里的|β|表示的是β的长度。同理|α|表示的是α的长度。注意:虽然要求|β|>=|α|,但有一特例:α→ε也满足1型文法。

  2 型文法(上下文无关文法):对任一产生式α→β,都有α∈VN,β∈(VN∪VT)*产生式的形式描述:A→β(A∈VN)即β取代A时,与A所处的上下文无关。产生的语言称“上下文无关语言”。

  3 型文法( 正规文法):每个产生式均为 “A→aB”其中,A、B∈VN,a∈VT*产生的语言称“正规语言”。

(3)语言:

  由S开始通过1步及以上推导所得句子的集合, 记作L(G), L(G)=⟶ +ααV}

(4)语法树:

  语法树用来描述句子的结构, 这让我们在语法分析时更直观的感受文法. 语法树还可以用来判断文法二义性, 若一个句子具有二义性, 那么其语法树至少有两个。

  用语法树求短语、简单短语和句柄的方法是:

    a.每个句型都有一棵语法树;

    b.每棵语法树的叶(从左到右)组成一句型;

    c.每个子树 的叶(从左到右)组成一短语;

    d.每个简单子树 的叶(从左到右)组成一简单短语;

    e.最左简单子树 的叶(从左到右)组成一句柄。

 

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

整数n

  n → 0 | 1 | 2 | …… | 8 | 9

标识符i

  i → <字母>{<字母> | <数字>}

表达式e

  e → <表达式> → [+ | -] <项> {<加法运算符><项>}

条件语句

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

赋值语句

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

复合语句

  <复合语句> → begin <语句> { ; <语句>} end

函数

  <函数定义> → <类型说明> <函数名> <复合语句>

程序

  <程序> → <分程序>

posted on 2019-09-27 19:25  chenjd  阅读(298)  评论(0)    收藏  举报

导航