Parsing 在自底向上解析中,我应该使用什么生产规则来减少?

Parsing 在自底向上解析中,我应该使用什么生产规则来减少?,parsing,programming-languages,bottom-up,Parsing,Programming Languages,Bottom Up,到目前为止,我对自底向上解析算法的理解是这样的 将令牌转移到堆栈中 如果某些元素(包括顶部)可以通过某种生产规则减少,请从顶部检查堆栈 如果可以减少元素,则弹出并推动产生式规则的左侧 继续这些步骤,直到top是开始符号,下一个输入是EOF 因此,用一个语法示例来支持我的问题 → 阿贝 A→ Abc A.→ b B→ d 如果我们有输入字符串作为 缩写$ 我们将在堆栈中移动a 因为没有减少a的产生式规则,所以我们移动下一个标记b。 然后我们可以找到一个产生式规则a→ b并将b减少到A 那么我的问题

到目前为止,我对自底向上解析算法的理解是这样的

  • 将令牌转移到堆栈中
  • 如果某些元素(包括顶部)可以通过某种生产规则减少,请从顶部检查堆栈
  • 如果可以减少元素,则弹出并推动产生式规则的左侧
  • 继续这些步骤,直到top是开始符号,下一个输入是EOF
  • 因此,用一个语法示例来支持我的问题

    → 阿贝

    A→ Abc
    A.→ b
    B→ d

    如果我们有输入字符串作为

    缩写$

    我们将在堆栈中移动
    a
    因为没有减少
    a
    的产生式规则,所以我们移动下一个标记
    b
    。 然后我们可以找到一个产生式规则
    a→ b
    并将
    b
    减少到
    A

    那么我的问题是。堆栈上有
    aA
    ,下一个输入是
    b
    。那么解析器如何确定我们是否将
    b
    减少为
    A
    我们等待
    c
    来使用规则
    A→ Abc

    当然,将
    b
    减少到
    A
    会导致错误。但是解析器如何知道我们应该等待
    c


    如果我在学习中遗漏了什么,我很抱歉。

    这是一个很好的问题,我们将在课程的下一部分讨论

    现在,假设有一个神奇的黑盒子,告诉解析器什么时候应该减少(有时,还告诉解析器应该使用几种可能的结果中的哪一种),就足够了


    各种解析算法解释了这个黑盒的构造。请注意,一种可能的解决方案是分叉现实并并行尝试这两种操作,但更常见的解决方案是处理语法,以确定如何预测正确的操作。

    。。。移动评论以回答。谢谢!!通过搜索材料的下一部分,我找到了一些关于创建goto、action表的信息。