zoukankan      html  css  js  c++  java
  • 最左推导和最右推导

    转载于https://blog.csdn.net/Jane_96/article/details/80024154

    1.定义

    • 最左推导:任何一步α => β都是对阿尔法中的最左非终结符进行替换
    • 左右推导:任何一步α => β都是对阿尔法中的最右非终结符进行替换

    2.抛出一个小栗子

    文法G(E)为:

    • E -> T | E + T |E - T
    • T -> F | T * F | T / F
    • F -> (E) | 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

    3. 小练习

    文法G(E)为:

    • E -> T | E + T |E - T
    • T -> F | T * F | T / F
    • F -> (E) | i

    给出i * (i + i)的最左推导和最右推导。

    此处思考三分钟。。
    这里写图片描述

    解析:
    最左推导
    从文法的起始符号开始:
    E -> T
    -> T * F
    -> F * F
    -> i * F
    -> i * (E)
    -> i * (E + T)
    -> i * (T +T)
    -> i * (F + T)
    -> i * (i + T)
    -> i * (i + F)
    -> i * (i + i)
    最右推导
    从文法的开始符号开始:
    E -> T
    -> T * F
    -> T * (E)
    -> T * (E + T)
    -> T * (E + F)
    -> T * (E + i)
    -> T * (T + i)
    -> T * (F + i)
    -> T * (i + i)
    -> F * (i + i)
    -> i * (i + 1)

  • 相关阅读:
    关于struts页面跳转的问题
    java中==和equals的区别
    控制广播风暴的方法
    广播风暴的成因及解决办法
    思科FEX配置
    思科vPC技术和配置
    数据中心架构TOR和EOR
    ARP表项及老化时间
    MAC地址表和老化时间
    track 3 list boolean or
  • 原文地址:https://www.cnblogs.com/xiuzhublog/p/13196599.html
Copyright © 2011-2022 走看看