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)

  • 相关阅读:
    PyQt5库结构
    PyQt5
    QObject
    os.listdir()
    os.getcwd()
    os.chdir()
    os.access()
    __name__
    php 学习笔记之关于时区的那点事
    php 学习笔记之搭建开发环境(mac版)
  • 原文地址:https://www.cnblogs.com/xiuzhublog/p/13196599.html
Copyright © 2011-2022 走看看