Цитируется wiki:Неправильно ли использовать тип возврата void для каждого правила в рекурсивном синтаксическом анализаторе потомков?
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, каждое правило должно использовать логический тип возврата, чтобы указать, не удалась ли эта ветка или не удалось.
Это правильно?
Совет. Не говорите: «Как вы думаете?» или люди будут отмечать это как субъективное. Вместо этого скажите что-нибудь вроде «Это правильно?» – quasiverse
@ quasiverse, thx для подсказки :) –