#bison #yacc
#bison #yacc
Вопрос:
Как получить «возвращаемое» значение ( $$
переменную) начального правила грамматики с помощью Yacc / Bison?
yyparse
возвращает код ошибки синтаксического анализатора.
Ответ №1:
Самое простое решение — сохранить значение в дополнительном аргументе to yyparse
. Обычно вы сохраняете это значение в действии для вашего правила запуска; иногда полезно определить дополнительный нетерминал запуска с единичным производством для удержания действия.
Если вы используете bison, вы можете использовать %parse-param
директиву для определения дополнительного аргумента, а затем вам просто нужно вызвать yyparse
с адресом переменной, в которую должен быть сохранен результат.
Вам все равно нужно проверить возвращаемое значение from yyparse
; если оно не указывает на успех, то значение, возвращаемое через параметр out, будет неправильным.