zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    移动应用滑动屏幕方向判断解决方案,JS判断手势方向
    M1808本地配置IP全过程
    嵌入式板子tftpd交叉编译及使用
    七牛云ARM64交叉编译流程
    记录M1808Ubuntu18.04固定IP配置方案
    so库移植记录
    c++ 动态库的编译
    Linux提示Syntax error: end of file unexpected (expecting "then") 提示错误
    ubuntu18.04设置静态ip
    WebFlux中thymeleaf视图找不到的问题解决
  • 原文地址:https://www.cnblogs.com/jwwzone/p/11583693.html
Copyright © 2011-2022 走看看