【问题标题】:Grammar Parse tree?语法分析树?
【发布时间】:2011-12-16 23:22:16
【问题描述】:

这个问题是我的 CS 作业,我不知道该怎么做。

考虑语法

S ← ( L ) 
S ← a
L ← L , S 
L ← S 

为句子( a , ( a , a ) )绘制解析树

我尝试遵循结构,最终得到(L,(L,L)),但这似乎不正确。谁能把我推向正确的方向?

【问题讨论】:

    标签: parsing tree grammar parse-tree


    【解决方案1】:

    这是您所追求的部分内容:

    现在你可以完成剩下的工作了 :)

    【讨论】:

    • 谢谢,终于解决了。我以错误的方式继续下去。感谢您的帮助。
    【解决方案2】:

    看句子(a, (a, a))。它可能匹配哪个右手边(RHS)?只有第一个,S ← ( L )。因此,树的根将是一个具有三个子节点的 S-node:(-node、L-node 和 )-node。

    现在你需要弄清楚L-node 的子节点是什么,它们必须匹配剩余的输入:a,(a,a)。因此,请查看 LHS 上具有L 的规则。在这些规则中,哪一个的 RHS 可以匹配 a,(a,a)

    【讨论】:

      【解决方案3】:

      (a,(a,a)) 的解析树可从(a,(a,a)) 的最左推导获得:

      S => (L)        [S -> (L)]
        => (L,S)      [L -> L,S]
        => (S,S)      [L -> S  ]
        => (a,S)      [S -> a  ]
        => (a,(L))    [S -> (L)]
        => (a,(L,S))  [L -> L,S]
        => (a,(S,S))  [L -> S  ]
        => (a,(a,S))  [S -> a  ]
        => (a,(a,a))  [S -> a  ]
      

      解析树的根是S。对于推导中非终结符号的每次重写,在解析树中绘制适当的节点。此外,您的语法不是最佳的,除其他外,还包含链式规则。删除它们将避免必须从 L 派生 S 以派生 a

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多