zoukankan      html  css  js  c++  java
  • 作业二——文法和语言

    1.文法G(Z):Z->aZb|ab定义的是什么样的语言?

      文法G有两条产生式规则:

      (1)Z->aZb

      (2)Z->ab

      通过对第一个产生式使用n-1次,然后使用第二个产生式一次,得到Z->aZb->aaZbb->aaaZbbb->aaaZbbb->......an-1bn-1->anbn

    2.写出教材22页例2.2中标识符的文法四元组形式。

      设I为标识符,L为字母,D为数字

      VN为非空非终结符号,VT为非空终结符号,P为产生式集合,S为开始符号

      P = {   I -> L

           I -> IL

           I -> ID

           ......

           L -> a

           D -> 0

           D -> 1

         ......

         D -> 9  }

      S = I

      G:S ->L | IL | ID

          L -> a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z

          D -> 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

    3.写出下列表达式的最左推导、最右推导和语法树。

    G(E):

    E=> E + T | T

    T=>T * F | F

    F=>(E)| i

    • i*i+i

    • i+i*i

    • i+(i+i)

     注意观察最左和最右推导过程的不同,以及语法树的异同。

       i*i+i

      最左推导:

      E => E+T => T+T => T*F+T => F*F+T => i*F+T => i*i+T => i*i+F => i*i+i

      最右推导:

      E => E+T => E+F => E+i => T+i =>T*F+i => T*i+i => F*i+i => i*i+i

      语法树:

          

       i+i*i

      最左推导:

      E => E+T => T+T => F+T => i+T => i+T*F => i+F*F =>i+i*i

      最右推导:

      E => E+T =>E+T*F => E+T*i => E+F*i => E+i*i => T+i*i => F+i*i => i+i*i

      语法树:

          

       i+(i+i)

      最左推导:

      E => E+T => T+T => F+T => i+T => i+F => i+(E) => i+(E+T) => i+(T+T) => i+(F+T) => i+(i+T) => i+(i+F) => i+(i+i)

      最右推导:

       E => E+T => E+F => E+(E) => E+(E+T)  => E+(E+F) => E+(E+i) => E+(T+i) => E+(F+i) => E+(i+i) => T+(i+i) => F+(i+i) => i+(i+i)

      语法树:

           

  • 相关阅读:
    TypeScript完全解读(26课时)_7.ES6精讲
    Flutter实战视频-移动电商-66.会员中心_编写ListTile通用方法
    Residual Networks <2015 ICCV, ImageNet 图像分类Top1>
    Coursera《machine learning》--(14)数据降维
    C# webbrowser遍历网页元素
    查询某表空间被哪些用户所使用
    C 语言运算符优先级(记忆口诀)
    建立简单的哈希表
    【LeetCode-面试算法经典-Java实现】【168-Excel Sheet Column Title(Excell列标题)】
    计算随意无序字符串中的最大有序串
  • 原文地址:https://www.cnblogs.com/xiaolan-Lin/p/11509211.html
Copyright © 2011-2022 走看看