Не используйте YYSTYPE
.
С бизоном - это то, что вы фактически используете в качестве реализации ya cc - правильный способ определить тип значения semanti c
%define api.value.type { MyType }
Если требуется, чтобы один или несколько файлов заголовков были включены в объявление, чтобы оно было действительным, поместите их в блок %code requires
:
%code requires {
#include "MyType.h"
}
Код, сгенерированный этими две директивы копируются в файл заголовка, который создает bison, поэтому другие файлы должны включать только сгенерированный файл заголовка.
Предупреждение: Обратите внимание, что если вы не используете интерфейс Cison Bison, semanti c тип значения должен быть легко копируемым, что исключит большинство стандартных типов библиотек C ++. Несоблюдение этого правила приведет к неопределенному поведению, которое может go быть незамеченным, пока вы не попытаетесь проанализировать достаточно сложный ввод. Другими словами, тесты с простыми входными данными могут не выявить ошибку.