04 文法和语文总结与梳理 09/25

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

  第二章主要学习了文法和语言,关于概念大部分可以参考:https://www.cnblogs.com/dahu-daqing/p/8884912.html,作者用例子来帮助我们理解文法、字符串、字母表等概念,通俗易懂。

  讲讲实验的方面,这一章的实验主要是如何得到一个表达式的最左推导、最右推导以及语法树:

  (1)最左、最右推导:方法比较简单,有点类似于离散数学的思维逻辑,最左即从左往右一步步带入推导,最右则相反。

  (2)语法树:类似于数据结构的树形图,按照推导规则往下画出子树。如果该表达式没有二义性,最左推导出来的语法树和最右推导是一样的。

  我们也可以从语法树中得到短语、直接短语和句柄:

  ① 短语:找出每个子树末端节点形成的字符串,便可以得到所以的短语

  ②直接短语:先找出没有包含其他更小子树的子树,它的叶结点就是直接短语

  ③句柄:最左边的直接短语就是句柄

  关于这些实验的例子,请查看随笔3,可以巩固理解。

2. 尝试写出PL/0 语言的文法。

  ①整数n:n :: = 1 | 2 | ..... | 9 | 0

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

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

  ④条件语句:<条件语句> ::= if<条件>then<语句> 

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

  ⑥复合语句:<复合语句> ::= begin<语句>{;<语句>}end

  ⑦函数:<函数> ::= <类型说明><函数名><复合语句>

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

参考文档:文法和语言,理解克林闭包  https://www.cnblogs.com/dahu-daqing/p/8884912.html

原文地址:https://www.cnblogs.com/jwwzone/p/11583693.html