第四次作业

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

  这一章学习到了语言和文法的相关概念与定义,其中课堂上主要讲解的知识点有文法的形式定义、 上下文无关文法、正规文法,最左右推导、短语、分析树、二义性等。文法的定义是指如何由一堆符号组成一个有含义的句子的规则和协议。教案中用我们生活中的语言为例子很好的切入讲解了文法形式定义的由来以及推导过程,并衍生出程序的语言与文法的推导,其中最右推导也就是规范推导,是指

  除了推导是必需掌握的之外,还有语法分析树是需要理解掌握的,推导树既是推导的图像表示,是一颗有序有向树,而分析树每一个节点都有标记:根结点由文法的开始符号标记;每个内部结点由非终结符号标记,它的子结点由这个非终结符号的这次推导所用产生式的右部各符号从左到右依次标记;叶结点由非终结符号或终结符号标记,它们从左到右排列起来,构成句型。

 

 

   至于二义性,就是指一个文法的某个句子有不止一棵分析树,我的理解就是一个文法句子有两个不同结果,因而含有二义性句子的文法是二义性的文法。

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

整数n:<n>::=0|1|2|……|8|9

标识符i:<标识符>::=<字母>{<字母>|<数字>}

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

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

      <因子>::=<标识符>|<无符号整数>| ‘(’<表达式> ‘)’

条件语句:<条件语句>:=IF<条件>THEN<语句>

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

复合语句:<复合语句>::=BEGIN<语句>{;<语句>}END

函数:<函数>→<主函数><其他函数>|<主函数>

程序:<程序>-><分程序>

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

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

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

   <无符号整数>::=<数字>{<数字>}

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

   <赋值语句>-><标示符>:=<表达式>

posted @ 2019-09-26 19:48  Rick00  阅读(116)  评论(0)    收藏  举报