Как получить значение 'return' ($$
variable) правила начала грамматики с Yacc/Bison?Как получить возвращаемое значение правила запуска
yyparse
возвращает код ошибки парсера.
Как получить значение 'return' ($$
variable) правила начала грамматики с Yacc/Bison?Как получить возвращаемое значение правила запуска
yyparse
возвращает код ошибки парсера.
Самое простое решение - сохранить значение в дополнительном аргументе до yyparse
. Обычно вы сохраняете это значение в действии для своего правила запуска; иногда полезно определить дополнительный старт без терминала с производством единицы для проведения действия.
Если вы используете бизон, вы можете использовать директиву %parse-param
, чтобы определить дополнительный аргумент, а затем вам нужно просто позвонить yyparse
с адресом переменной, в которую должен быть сохранен результат.
Вам все еще нужно проверить возвращаемое значение от yyparse
; если это не указывает на успех, то значение, возвращаемое через параметр out, будет неверным.