Bison公开曝光{{{7|
====Hands====
: {{{7}}}
}}}
功能。有没有办法阻止它这样做?我希望在它周围公开我自己的包装器,从而初始化一些变量。
答案 0 :(得分:0)
除非您使用yyparse
或%name-prefix
指定不同的全局符号前缀,否则Bison肯定会生成入口点%define api.prefix
。 (如果更改前缀,则会更改多个符号的名称,包括yytext
和yyleng
,因此可能会带来不便。)
但除了符号存在且因此可以被调用的事实之外,它看起来并不令人讨厌。如果要使用不同的函数包装解析器,可以这样做并在代码中使用该函数的名称。野牛生成的代码本身并不会调用yyparse
。 (它由main
中的默认liby
函数调用,但不建议使用该库。如果您确实要从编译对象中删除符号的定义,则可以执行此操作所以使用链接描述文件,至少在实现链接描述文件的系统上。
如果您确实想要更改yyparse
函数的名称而不修改全局符号名称前缀,则可以插入
%define yyparse some_other_name
进入序言代码。理想情况下,您可以将其放在%code top
块中。