Bison %位置导致即时sigsegv

Bison %位置导致即时sigsegv,bison,Bison,我在看一个用flex和bison制作的解析器。野牛2.5 我将%位置添加到.y文件中,然后重新编译并尝试运行,我将得到一个sigsegv(相当于macosx): 所有这些都是生成的代码,所以我真的不知道首先要去哪里才能理解yy_cp是如何指向只读存储的 请注意,lexer源包括 %option noinput %option reentrant bison-bridge %lex-param {yyscan_t *scanner } /* Call flex functions with

我在看一个用flex和bison制作的解析器。野牛2.5

我将%位置添加到.y文件中,然后重新编译并尝试运行,我将得到一个sigsegv(相当于macosx):

所有这些都是生成的代码,所以我真的不知道首先要去哪里才能理解yy_cp是如何指向只读存储的

请注意,lexer源包括

%option noinput
%option reentrant bison-bridge
%lex-param   {yyscan_t *scanner } /* Call flex functions with this argument      */
解析器源代码包括

%option noinput
%option reentrant bison-bridge
%lex-param   {yyscan_t *scanner } /* Call flex functions with this argument      */

看起来您正在对yylex使用额外的参数,可能是通过lexer中的
%option bison bridge
和bison文件中的
%lex param
和/或
%define api.pure
。因此,如果向bison文件添加
%locations
,则需要对flex文件进行相应的更改。它可能只需添加
%option bison locations
,也可能需要更改各种宏,具体取决于您所做的操作。

编辑问题以说明您是正确的。下一步我将尝试野牛位置选项。