使用变体的Bison C ++ GLR解析器

时间:2017-03-17 12:19:24

标签: parsing grammar bison glr

我目前正在使用bison创建一个解析器,它使用了变量功能,因为我的语法不是LALR(1)我想使用GLR选项。 当我尝试这样做时,我收到以下错误:

error: '"glr.cc"' does not support '%define api.value.type variant'
 %define api.value.type variant
         ^^^^^^^^^^^^^^

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您正在尝试使用C ++ API构建GLR解析器,其语义类型不是POD,并且当前C ++ Bison GLR实现不支持。

特别是,Bison的C ++ API使用的变体类型不是POD,因此它不能在GLR解析器中使用,因为错误消息说明了。

我所知道的唯一解决方法是使用带有标记字段和union的C风格区分联合。

答案 1 :(得分:-1)

对于某些k,语言由LR(k)测量。语言不是用GLR这个词来衡量的。 GLR是一种解析技术。