17、Bison解析器的多重应用与冲突处理
2026/6/3 22:07:15 网站建设 项目流程

Bison解析器的多重应用与冲突处理

1. 多重解析器

在单个程序中包含两个完整的解析器是一种可行的方法。不过,每个Bison解析器通常具有相同的入口点yyparse(),调用相同的词法分析器yylex(),并使用相同的令牌值变量yylval。解析表和解析栈存储在像yyactyyv这样的全局变量中。如果直接翻译两个语法并编译和链接生成的文件,会出现大量重复定义的符号。解决办法是更改Bison为其函数和变量使用的名称。

1.1 使用%name - prefix-p标志

可以在Bison源代码中使用声明来更改Bison生成的解析器中名称的前缀。例如:

%name-prefix "pdq"

这将生成一个入口点为pdqparse()的解析器,它会调用词法分析器pdqlex()等。具体受影响的名称包括yyparse()yylex()yyerror()yylvalyycharyydebug。其他解析器中使用的变量可以重命名,也可以设为静态或自动变量,

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询