引自wiki:
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,每个规则都应使用布尔返回类型来指示此分支是失败还是成功。
这是对的吗?
答案 0 :(得分:0)
该示例使用一个模型,其中一个特殊的“错误”例程负责报告错误,但是如果输入表示有效输入,则肯定可以将解析器表示为返回“true”的函数,否则返回“false”。这只是两种不同的风格。