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

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

      因Z->aZb->aaZbb->aaaZbbbZ->ab

      所以文法定义的语言是:L(G(Z)) = { anb| n≥1 }

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

      文体 G = (VN,VT,P,S)

      其中 V= {W(标识符),Q(字母),K(数字)},V= {a,b,c,···,x,y,z,0,1,···,9}

         P = { <W> -> <Q>

          <W> -> <W> <Q>

          <W> -> <W> <K>

          <Q> -> a

          <Q> -> b

          •••

          <Q> -> z

          <K> -> 0

          <K> -> 1

          •••

          <K> -> 9 }

        S = <W>

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

    G(E):

    E=> E + T | T

    T=>T * F | F

    F=>(E)| i

    • i*i+i
    • i+i*i
    • i+(i+i)

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

      (1)最左推导: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

          语法树:

                

      (2)最左推导:E => E+T => T+T => F+T => i+T => i+T*F => i+F*F => i+i*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

          语法树:

                

      (3)最左推导: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)

          语法树:

                

  • 相关阅读:
    后端开发者的Vue学习之路(五)
    后端开发者的Vue学习之路(四)
    后端开发者的Vue学习之路(三)
    Vue:如何在地图上添加自定义覆盖物(点)
    后端开发者的Vue学习之路(二)
    后端开发者的Vue学习之路(一)
    字体图标的使用
    Maven的基础了解与使用
    SpringMVC从认识到细化了解
    Mybatis从认识到了解
  • 原文地址:https://www.cnblogs.com/chenhaowen-shuaishuaide/p/11496535.html
Copyright © 2011-2022 走看看