【问题标题】:Need help understanding precedence需要帮助理解优先级
【发布时间】:2010-12-19 20:51:57
【问题描述】:

谁能给我一个简短的描述,说明如何在语法中确定一件事相对于另一件事的优先级?我似乎无法在我的书或网上找到一个好的答案,尽管我很确定它非常简单。示例

S-> B
B-> B and T | T
T-> T or F | F
F-> not F| (B)|true|false

问题是“在上述语法中,“and”相对于“or”的优先级是什么?”。

“and”的优先级低于“or”,但我不知道为什么。

【问题讨论】:

    标签: grammar operator-precedence


    【解决方案1】:

    符号B代表and语句,其定义包含Tor。你可以从andor,但反过来不行。因此,如果您将语言语句视为堆栈,您将继续进行替换并添加到堆栈的顶部,直到您结束评估整个语句,然后当您弹出项目时,您将反转方向和 @ 987654327@ 语句将始终在and 之上(因此在之前评估)。希望这是有道理的。

    【讨论】:

    • 我想我明白了。你能澄清一下以确保吗?如果 B 线上有 or ,或者仍然有更高的优先级。如果 or 在 B 但不在 T 上,则它们将具有相同的值。这是正确的吗?
    • @John -- 如果您在 B 规则中添加“或”,则语法变得不明确,因此语法未定义优先级。如果去掉 T 规则,将“and”和“or”都放在 B 规则中,那么它们的优先级相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多