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)

          语法树:

                

  • 相关阅读:
    LINQ体验(6)——LINQ语句之Join和Order By
    转 Spring.NET 与 NHibernate 的整合
    项目经理人必须要遵循的14个成功原则
    做成功的项目经理人
    就业模拟试题_Net(答案)
    java中的23中设计模式
    七种武器——.NET工程师求职面试必杀技
    如何识别真正的程序员
    WCF传输大数据的设置
    就业模拟试题_Java(答案)
  • 原文地址:https://www.cnblogs.com/chenhaowen-shuaishuaide/p/11496535.html
Copyright © 2011-2022 走看看