Bison %位置导致即时sigsegv
我在看一个用flex和bison制作的解析器。野牛2.5 我将%位置添加到.y文件中,然后重新编译并尝试运行,我将得到一个sigsegv(相当于macosx): 所有这些都是生成的代码,所以我真的不知道首先要去哪里才能理解yy_cp是如何指向只读存储的 请注意,lexer源包括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
%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
,也可能需要更改各种宏,具体取决于您所做的操作。编辑问题以说明您是正确的。下一步我将尝试野牛位置选项。