zoukankan      html  css  js  c++  java
  • 文法与语言

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

    由题意可知:Z->aZb或者Z->ab

    Z->ab,Z->aZb->aabb,Z->aZb->aaZbb->aaabbb,Z->aZb->aaZbb->aaaZbbb->aaaabbbb

    Z=>aZb=>a²Zb²...=>aⁿ﹣¹Zbⁿ﹣¹=>aⁿbⁿ

    所以L(G[Z])={aⁿbⁿ|n≥1}

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

    设:用A表示标识符,用B表示字母:A->a|b|…|z,用C表示数字:C->0|1|…|9

    VN={A,B,C}、VT={a,b,c,…,x,y,z,0,1,…,9}

      P={ A->B,A->AB,A->AC;    

        B->a

        …

        B->z

        C->0

        …

        C->9 }

    S=<A>

     

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

     

    G(E):

     

    E=> E + T | T

     

    T=>T * F | F

     

    F=>(E)| i

     

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

     

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

     

    (1)i*i+i

    最左推导:E=>E+T=>T+T=>T*F+T=>F*F+T=>i*i+T=>i*i+F=>i

    最右推导:E=>E+T=>E+F=>E+i=>T+i=>T*F+i=>T*i+i=>F*i+i=>i*i+i

    语法树:

    (2)i+i*i

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

  • 相关阅读:
    JS站点
    1011 World Cup Betting (20分)
    1007 Maximum Subsequence Sum (25分)(动态规划DP)
    1006 Sign In and Sign Out (25分)
    1005 Spell It Right (20分)
    1004 Counting Leaves (30分)(DFS)
    1003 Emergency (25分)(Dijkstra算法)
    1002 A+B for Polynomials (25分)
    1001 A+B Format (20分)
    canvas
  • 原文地址:https://www.cnblogs.com/kushoulder/p/11515000.html
Copyright © 2011-2022 走看看