警告:Bison编译

5

我正在使用flex/bison开发编译器。在构建输出中,我遇到了以下警告:

警告:默认操作上出现类型冲突('s' '')

请问有什么帮助吗?


2
它不是“compilator”,而是“compiler”。 - Mario Becerra
2个回答

8
似乎与您在源代码中的%token和%type声明有关。 没有源代码行和相关的令牌和类型声明,我们很难帮助您。
如果您指定了一个类型为val的expr,并定义了一个类型为tptr的ID令牌。
%{
#include "parser.h"
%}
%type <val> expr
%token <tptr> ID

如果您没有任何操作,bison将发出警告。
expr : ID;

warning: type clash ('tptr' 'val') on default action

请注意,我目前正在使用的Bison版本在这种情况下打印了略微不同的消息。
foo.by:10.12:warning: type clash on default action : <tptr> != <val>

为了解决这个警告,您需要采取明确的行动:
expr : ID { $$ = some_conversion_code($1); }

http://www.gnu.org/s/bison/manual/bison.html#Token-Decl


@VGCE那么操作员应该如何纠正这个警告?在行动中应该加入什么内容? - Har

0
使用联合定义来为从词法分析器中获得的标记进行类型定义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接