zoukankan      html  css  js  c++  java
  • 2.理解文法和语文

    1.理解符号串与集合运算。

    L={A,B, … ,Z,a,b, … ,z}

    D={0,1, … ,9}

    说明下表示的含义:

    LUD 全部字母和数字的集合

    LD 有一个字母后跟一个数字组成的所有符号串集合

    L4 由4个字母组成的所有符号串的集合

    L* 有字母组成的所有符号串的集合

    D+ 由一个或若干个数字组成的所有符号串的集合

    L(LUD)* 以字母开头,后跟字母、数字组成的所有符号串的集合

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

     Z=> aZb=>aaZbb=>aaa....Z....bbb=>aaaa...bbbb

       L(G(Z))={a^nb^n|n>=1}。

       

    3.写出教材22页例2.2中标识符的文法四元组形式(VN,NT,P,S)。

    设有文法G=(Vn,Vt,P,S)

    其中 I 为标识符   L为字母    D为数字

    Vn = {I,L,D}

    Vt = {a|b|c|.....x|y|z|0|1|2|....9}

    P = {I->L

            I->I L

            I->I D

       L->a

       L->b

       ....

       L->z

       D->0

       D->1

       ...

       D->9   }

    S = I

    4.写出下列表达式的最左推导、最右推导。

    G(E):

    E=> E + T | T

    T=>T * F | F

    F=>(E)| 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*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)

     注意观察最左和最右推导过程的不同。

  • 相关阅读:
    java.lang.ClassNotFoundException: com.sun.tools.javac.Main (Liferay运行ant build.xml执行错误)
    JS正则验证手机号码或者电话号码(转)
    ResultSet用法
    IntelliJ IDEA 快捷键和设置
    Ext.MessageBox消息框
    vim + cscope + ctags + taglist配置
    ExtJs 确认密码验证的实现
    一道关于排列组合的算法题
    把Boost更新到了1.35
    发布Flv合并器的.net版
  • 原文地址:https://www.cnblogs.com/ccw1124486193/p/11505373.html
Copyright © 2011-2022 走看看