У меня есть правило Бизона
block: LBRACE { some code } decls stmts RBRACE {more code }
;
Проблема в разделе «больше кода», у меня есть
$$ = $3 ;
По сути, я хочу, чтобы возвращаемое значение блока было stmts. Когда я это делаю, Бизон говорит: «Блок на 3 доллара не имеет типа». Если я удаляю блок кода, содержащий какой-то код, и вставляю его в последний блок, bison не жалуется. У меня stmts и все его производные объявлены как типы. Так это не разрешено Бизоном? Я могу внести изменения в грамматику, чтобы приспособиться к этому, но будет утомительно и намного проще просто использовать вышеизложенное.