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


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

    1、计算机的语言同中英文一样,都有自己独有的语法和规律,一定的规则可以判别句子结构合法与否,用这些规则描述句子的结构,这样的语言就是文法。是利用有限的集合(文法)来刻画无穷的集合(语种生成的句子)的一个工具。

      正如汉语构成句子=主语+动词+谓语等汉字或者词组成语

      程序设计语言句子=自己的符号+符号串

      字母表是非空有限集合,所以字母表中的元素也成称为符号,字母表中的符号组成的任何有限序列称为符号串,符号串的顺序很重要,允许空符号串,用ε表示。符号串的运算一定要注意其顺序。

    2、规则(重写规则、产生式、生成式)是形如A→B(A::=B)的(A,B)有序对。

      文法G定义为四元组(Vn,VT,P,S)

      VN:为非终结符(语法实体,或变量)集,常用大写字母表示;

      VT:为终结符,常用小写字母表示;

      P:为规则的集合,规则的左边属于V并且至少包含一个非终结符;

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

      推导是正向推导,归约是逆向推导。

    3、文法的类型:

    文法分为四种类型,0型、1型、2型、3型。

    文法类型

    又称

    结构或定义

     

    例子

    0型文法

    短语文法

    α∈(VN∪VT)*,且至少含一个VN,而β∈(VN∪VT)*

    对产生式没有任何限制

    S->A

    1型文法

    上下文有关文法

    若任一产生式α→β,都有|β|≥|α|,仅仅S→ε除外,产生式的形式描述:α1Aα2→α1βα2,A必须出现在上下文中才允许用β替换。

    产生式的左边不止一个符号,但必须至少有一个非终结符

    aSb->aaSbb

    S->ab

    2型文法

    上下文无关文法

    对任一产生式都有α∈VN,β∈(VN∪VT)*

    每个产生式左边只有一个终结符

    G[S]:

    S→01

    S→0S1

    3型文法

    正规文法

    产生式的形式是A→aB或者是A→a

    左边只有一个终结符,右边为一个非终结符或是一个非终结符加一个终结符

    G[S]:

    S→a

    S→aB

    4、语法树

      给定文法G=(VN,VT,P,S),语法树的根为S,每个结点都有一个标记,是V的一个符号。

      在推导的任何一步α=>β,其中α、β是句型,都是对α最左非终结符进行替换,则为最左推导;若是对α最右非终结符进行替换,则为最右推导,也称之为规范推导

      如果一个文法存在某个句子对应两颗不同的语法数,则这个文法是二义的。

      句型:语法树从左至右的一个序列;

      句子:语法树从左至右终结符序列,是句型中的一个;

      语言:由文法产生的所有句子的集合;

      短语:某子树的末端节点按自左向右顺序为句型的符号串,该符号串为该句型相对于该子树跟的短语;

      简单短语:语法树的简单子树的叶子结点从左到右排列构成一个简单短语;

      句柄:最左的简单短语。

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

    整数n

      n->0|1|2|3|……|8|9

    标识符i

      i->a|b|c|……|y|z|A|B|C|……|Y|Z

    表达式e

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

      <项>-><因子>{<乘除运算符><因子>}

      <因子>->i|n|’(‘e’)’

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

      <乘除运算符>*|/

    条件语句

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

      <条件>->e<关系运算符>e|odd e

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

      <关系运算符>->==|#|<|<=|>|>=

    赋值语句

      i=e

    复合语句

      stmt->begin <语句>{;<语句>} end

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

    函数

      <函数>-><主函数><其他函数>|<主函数>

    程序

      <程序>-><分程序>

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

      <常量说明部分>->const<常量定义>{,<常量定义>};

      <变量说明部分>->var i{,i};

      <过程说明部分>-><过程首部><分程序>{;<过程说明部分>};

      <过程首部>->procedure i;

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

      <过程循环语句>call i

      <当型调用语句>->while<条件>do<语句>

      <读语句>->write’(‘e{,e}’)’

      <写语句>->read’(‘i{,i}’)’

      <空语句>->ε

  • 相关阅读:
    挂载硬盘,提示 mount: unknown filesystem type 'LVM2_member'的解决方案
    mongo3.4 配置文件 注意事项
    Rsync 传输不需要输入密码
    Robomongo 0.9.0 连接mongo数据库时,提示连接失败 的解决方案
    linux 安装 mongo
    mysql GTID主从复制(主库在线,添加新丛库)
    计算机网络原理精讲第四章--网络层
    Chrome浏览器商店安装的插件保存到本地
    计算机网络原理精讲第三章--链路层
    计算机网络原理精讲第二章--物理层
  • 原文地址:https://www.cnblogs.com/cyxxixi/p/11588652.html
Copyright © 2020-2023  润新知