Вы должны сказать Bison использовать скелет C ++
%skeleton "lalr1.cc"
Bison также распознает языковую декларацию
%language "c++"
Но я не думаю, что это необходимо.
Если вы собираетесь использовать C ++ API, внимательно прочитайте документацию .
Хотя я уверен, что интерфейс C ++ имеет преимущества, я почти никогда не использовал его. Код, сгенерированный скелетом C, может быть скомпилирован с C ++ при условии, что вы не можете использовать любой нетривиальный объект как часть семантического типа YYSTYPE
. (Вы можете использовать указатель , но не ссылку на любой произвольный тип C ++, но вы не можете использовать умные указатели.)
Однако в руководстве для зубров есть полный пример (по ссылке, вставленной ранее), и было бы целесообразно изучить его для подсказок по использованию.