• 第四次作业——文法和语言总结与梳理


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

    一、定义

      语言是一个记号系统,包括语法和语义;文法最主要的成分是规则(产生式),我们可以通过规则进行推导生成语法树。

    二、文法G四元组(VN,VT,P,S)

      VN为非终结符集

      VT为终结符集

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

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

    三、文法的类型

    文法判别小技巧

     

     四、语法树和二义树

      语法树:又称为推导树,用来描述上下文无关的句型推导。

     

      在推导α=>β的过程中,需要遵循最左(右)推导,即都是对α中的最左(最右)非终结符进行替换。最右推导又称为规范推导。

     

      如果一个文法存在某个句子对应两棵不同的语法树,则这个文法是二义的。且二义文法不可判定。

     

      注意:文法二义性≠语言二义性

     

      语言不是二义性 →  存在一个文法不是二义性的;

      文法不是二义性 →  无法判定

     

    理解与总结:文法与语言主要学习的是转化文法的规律并根据其转化过程中遵循的准则产生对应的生成树,可以用来检验该准则的唯一性。


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

    整数n

    文法:<n>::=<integer>

    标识符i

    文法:<i>::=<id>

    表达式e

    文法:<e>:=[+|-]<项>{<加减运算符><项>}

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

    <加减运算符>::=+|-

    条件语句

    文法:<条件语句>::=if<条件>then<语句>

    赋值语句

    文法:<赋值语句>::=<id>:=<表达式>

    复合语句

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

    函数

    文法:<函数>::=function <id>() :

            <上述各种组合>

    程序

    文法:<程序>::=<分程序>.

    ...

  • 相关阅读:
    脚本——猜拳
    脚本——基础命令
    脚本——1-100奇数的和
    脚本——判断文件类型
    脚本——判断分数是否合格
    脚本——判断服务是否开启
    脚本——ping一个网址三次
    脚本——判断是否root用户
    脚本——查看目录是否存在
    第十八天:CSV、JSON、Excel、SQLite
  • 原文地址:https://www.cnblogs.com/lxml/p/11577477.html
Copyright © 2020-2023  润新知