zoukankan      html  css  js  c++  java
  • 2.4语法推导树

    什么样的树称为语法推导树。学会写语法推导树。从语法推导树中求

    语法树的每一个结点都有一个标记,而且这个标记是V的一个符号。文法的表示是:G={VN,VT,P,S}.V包括了文法的VN和VT.也就是说这个标记肯定是一个终结符或者是一个非终结符。每一个结点都是。

    根结点标记肯定是S。S一般是代表开始符,根结点是S。

    非根结点的标记都要是VN或者是VT里面的元素/符号。

    VN是非终结符集。语法树中能够表现出有推导的肯定是在非终结符当中。终结符肯定是没有子树的。只有非终结符才有子层结点。

    有一个结点S,它有直接子孙/孩子结点T、a、b。把T、a、b按顺序排列下来,S->T、a、b。这个推导式S->T、a、b肯定是P中的产生式,文法的产生式。

     


    看看语法推导树符不符合定义。语法推导树的每一个结点都有一个标记。而且这些标记必须是在V当中的。因为文法G=({a,b},{S,A},S,P}),VT={a,b}是终结符集,VN={S,A}是非终结符集,都是属于V当中的字符的。

    所以定义的第一条就符合了。每一个结点a,b,S,A都是文法中V集合的元素。

    定义的第二条是根的标记为S。

    第三条是如果结点n至少有一个它自己除外的子孙,结点它有除自己以外的子孙。那么这个结点肯定在VN中。也就是说这个结点肯定是非终结符。大写的A它是一个非终结符。一个结点它有多个直接子孙,把那些直接子孙排列起来,比如

    A->S、b、A。这个式子应该是要出现在文法当中的。文法当中的推导式。就看这个文法推导式有没有A->S、b、A。所以这棵语法树是合法的。


    下面再看如何构造一棵语法推导树。

    接着就是根据句型,根据句型的特点来构造推导树。句型是aabAa,我们的推导是从根结点S开始的。

    S->a;a是终结符,显然不符合要求,因为句型有aabAa这么长一串句型。那么第一步构造推导树就只能是选择S->aAS。

    第二步:接下来匹配abAa。接下来选择合适的A了。A->ba显然不合要求。那么就在A->SbA和A->SS中选择一个。A->SbA刚好是和句型的bA部分匹配的。右边的S可以推出a和句型匹配。A的直接子树S也可以推出a。最终生成的语法树就和我们的句型完全匹配了。


    怎么根据语法树得到句型呢?

    顺次地把叶子结点写出来。就是aabAa。

    这就是语法树的构造/推导.


    这棵句子的推到树。这棵推导树当中哪一些成分是这一个句子的短语。哪一些又是它的简单短语。其实有了推导树要求短语是非常容易的。短语其实就是推导树中任意一棵子树的所有叶子结点的序列。任意一棵子树它的所有叶子结点的序列。那我们就任意的找一棵子树:A->a1.a1就是一个短语。S->A->a2和S->a3也是一棵子树,它的叶子结点有a2、a3,所以a2、a3是一个短语。同时这一棵子树中间又有一棵小树:A->a2也是一棵小的子树,所以a2又是一个短语。对于B这一棵子树,它有ε、b1、b2这三个叶子结点。ε、b1、b2也是一个短语。哪些是直接短语呢?直接短语也很好求。按照规则A→b,A直接推出b,b就是一个直接短语。那么这里A->a1,A直接推出a1,所以a1就是一个直接短语。S->ε,S直接推出ε,ε就是一个直接短语/简单短语。B->b1,B直接推出b1,b1也是一个直接短语。B->b2,B直接推出b2,b2也是一个直接短语。A->a2,A直接推出a2,a2也是一个直接短语。

    那么需要思考的是S->a3,a3是不是一个直接短语?a3实际上不是直接短语而且它甚至不是短语。因为a3只是S推导的一个部分而已,而不是全部。如果说S->a3(S直接推出a3),那么a3是一个直接短语。

    句柄就是整个这一棵语法树当中最左边的子树它的结点。而且它要求一定要是最左边的简单短语。所以这棵语法树当中a1是句柄,因为它处于最左,同时它也是简单短语。所以a1是句柄。这个是语法推导树。

  • 相关阅读:
    eclipse发布项目到tomcat部署目录
    变量 声明、存储和范围
    十周 工程2 员工有自己的工资 扩张
    使用Xshell生成key,避免password登录linux
    android模拟器 一个错误:X Error of failed request: BadRequest (invalid request code or no such operation)
    JNI 详细解释
    设计模式(Abstract Factory)抽象工厂
    Laravel创建Model
    【cocos2d-x】3.0使用cocos-console创建,编,部署游戏
    UF访问,一些对用友最新的旗舰级产品U9一些引进(图像)
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/6931702.html
Copyright © 2011-2022 走看看