1

引用自维基

void term(void) {
    factor();
    while (sym == times || sym == slash) {
        getsym();
        factor();
    }
}

void expression(void) {
    if (sym == plus || sym == minus)
        getsym();
    term();
    while (sym == plus || sym == minus) {
        getsym();
        term();
    }
}

void为每个规则使用返回类型,

在那种情况下,如何知道特定分支是失败还是成功?

IMO,每条规则都应使用布尔返回类型来指示此分支是失败还是成功。

这个对吗?

4

1 回答 1

0

该示例使用一个模型,其中一个特殊的“错误”例程负责报告错误,但您当然可以将解析器制定为一个函数,如果输入表示有效输入,则返回“真”,否则返回“假”。这只是两种不同的风格。

于 2011-09-20T01:22:28.417 回答