Как получить возвращаемое значение правила запуска

#bison #yacc

#bison #yacc

Вопрос:

Как получить «возвращаемое» значение ( $$ переменную) начального правила грамматики с помощью Yacc / Bison?

yyparse возвращает код ошибки синтаксического анализатора.

Ответ №1:

Самое простое решение — сохранить значение в дополнительном аргументе to yyparse . Обычно вы сохраняете это значение в действии для вашего правила запуска; иногда полезно определить дополнительный нетерминал запуска с единичным производством для удержания действия.

Если вы используете bison, вы можете использовать %parse-param директиву для определения дополнительного аргумента, а затем вам просто нужно вызвать yyparse с адресом переменной, в которую должен быть сохранен результат.

Вам все равно нужно проверить возвращаемое значение from yyparse ; если оно не указывает на успех, то значение, возвращаемое через параметр out, будет неправильным.