4.文法和语言总结与梳理

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

(1)文法的形式定义 

 所谓文法就是描述语言的语法结构的形式规则。

 文法的四元组:

  VN为非终结符集

  VT为终结符集

  P为规则(α→β)的集合

  S为识别符或开始符,至少要在一条规则中作为左部出现。

(2)文法的类型(文法分为0 型,1 型 ,2 型,3 型四种类型)

设G=( Vx,Vr,P,S),如果它的每个产生式a β是这样种结构: a∈(V,∪V~)°且至少含有一个非终结符,而β∈(VN∪V+)° ,则G是一个0型文法。

设G=( V;N,Vr,P,S)为一个文法,若P中的每一个产生式a→β均满足(β≥lal ,仅仅S→ε除外,则文法G是1型或上下文有关的。

设G=( VN,VzP.S),若P中的每一个产生式a β满足: a是一个非终结符,β∈(Vw∪Vr)* ,则此文法称为2型的或上下文无关的。

4种文法类型的定义是逐渐增加限制的,因此每一种正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的,而每一种上下文有关文法都是O型文法。称O型语言。

(3)句子组成结构

(4)语言

  推导:从开始符号出发,每个重写步骤把一个非终结符号替换为它的某个产生式体。

  最左推导:总是选择每个句型的最左非终结符号。

  最右推导:总是选择每个句型的最右非终结符号。

  语法树:一种描述上下文无关文法的句型推导的直观工具,也称推导树。

  文法的二义性:如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义的。

 (5)句型分析

   句子:如果S Þ* x,且x∈VT* ,则称x是G产生的一个句子
   E Þ E + E ÞE + E * E
   E Þ4 id + id * E
  句型:如果SÞ*α,α∈(VT∪VN)*则称α是G产生的一个句型 
 

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

整数n

<数字>->0|1|2...|8|9

标识符i

<标识符i>-><字母><数字>

表达式

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

条件语句

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

赋值语句

<赋值语句>-><标识符>-><表达式>

复合语句

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

函数

程序

<程序>-><分程序>.

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

原文地址:https://www.cnblogs.com/zqy1004/p/11600016.html