作业4 文法和语言总结与梳理

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

  第二章已经接近尾声了,下面来总结和梳理一下第二章的内容。第二章主要是介绍了文法和语言的概念,重点讨论上下文无关文法及其句型分析中的有关问题。本章主要涉及到文法的直观概念、符号和符号串、文法和语言的形式定义、文法的类型、上下文无关文法及其语法树、句型的分析等这几个内容。

(1)字母表:元素的非空有穷集合;

  • 符号/字符:字母表中的元素;
  • 符号串:符号的有穷序列。

(2)符号串运算:

  • 符号串的连接:εx=xε=x;
  • 集合的乘积:AB={xy|x∈A,y∈B};{ε}A=A{ε}=A;
  • 符号串的幂运算:x=abc,x^2=abcabc;
  • 集合的幂运算
  • 正闭包A+与闭包A*:A*={ε}∪A+

(3)文法:文法是对语言结构的定义与描述。即从形式上用于描述和规定语言结构的称为"文法"(或称为"语法")

                    文法G定义为四元组(VN,VT,P,S),其中VN为非终结符,VT 终结符的非空有穷集,VN∩VT=Φ,P为产生式(规则)集合,S称作识别符或开始符。

       

(4)语言:

  • 句型:由起始符推导出来的符号串。
  • 句子:仅含有终结符合的句型。
  • 语言:句子的集合。

(5)语法树:

  • 短语是句型中的某个非终结符所能推出的符号串。
  • 直接短语:不能再推导出其他式子的符号串
  • 句柄:最左的直接短语。
  • 最左推导:每个推导过程都是从最左边的非终结符号的替换开始
  • 最右推导:每个推导过程都是从最右边的非终结符号的替换开始 (最右推到常被称为规范推导)

(6)二义性:

  • 如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义的。
  • 若一个文法中存在某个句子,它有两个不同的最左(右)推导,则这个文法是二义的。
  • 若一个句子中所有文法都是二义的,则该句子的语言是二义的。

 

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

(1)整数n:<数字> -> 0|1|2…7|8|9

    G(N):N->n | nN

    n->0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

(2)标识符i:<标识符> -> <字母>{<字母>|<数字>}

    G=(VN,VT,P,S), 

    VN={I(标识符),L(字母),D(数字)}

    VT={a,b,c,...,x,y,z,0,1,2,...,9}

    P={ <I>-><L>,

      <I>-><I><L>,

      <I>-><I><D>,

      <L>->a,

      <L>->b,

       ....

      <L>->z,

      <D>->0,

      <D>->1,

         ......

      <D>->9}

    S=<I>

    I->L|IL|ID

    L->{a|b|c|...|z}

    D->{0|1|2|...|9}

(3)表达式e:<表达式> -> [+ | -] <项> { <加法运算符><项>}

(4)条件语句: <条件语句>  -> IF <条件> THEN <语句>

(5)赋值语句:<赋值语句> -> <标识符> := <表达式>

(6)复合语句: <复合语句> -> BEGIN <语句> {;<语句>} END

(7)函数:<函数定义> -> <类型说明><函数名><复合语句>

(8)程序:<程序> -> <分程序>

posted on 2019-09-25 10:50  carmen-  阅读(266)  评论(0编辑  收藏  举报