use bison’s C++ variant instead of C union