我目前正在使用bison创建一个解析器,它使用了变量功能,因为我的语法不是LALR(1)我想使用GLR选项。 当我尝试这样做时,我收到以下错误:
error: '"glr.cc"' does not support '%define api.value.type variant'
%define api.value.type variant
^^^^^^^^^^^^^^
我做错了什么?
答案 0 :(得分:1)
您正在尝试使用C ++ API构建GLR解析器,其语义类型不是POD,并且当前C ++ Bison GLR实现不支持。
特别是,Bison的C ++ API使用的变体类型不是POD,因此它不能在GLR解析器中使用,因为错误消息说明了。
我所知道的唯一解决方法是使用带有标记字段和union
的C风格区分联合。
答案 1 :(得分:-1)
对于某些k,语言由LR(k)测量。语言不是用GLR这个词来衡量的。 GLR是一种解析技术。