警告野牛汇编

时间:2011-09-08 10:05:10

标签: bison yacc lex

正在使用flex / bison开发编译器。 我的构建输出中有这个警告。

warning: type clash ('s' '') on default action

有什么帮助吗?

2 个答案:

答案 0 :(得分:8)

它似乎与源中的%token和%type声明有关。 没有源代码行和相关的令牌和类型声明,很难帮助你。

如果指定类型为val的expr并定义类型为tptr

的ID标记
%{
#include "parser.h"
%}
%type <val> expr
%token <tptr> ID

如果你在没有任何动作的情况下写作,野牛会发出警告

expr : ID;

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

请注意,我正在使用的野牛级别在这种情况下会打印略微不同的消息。

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

答案 1 :(得分:0)

使用联合定义从lex中键入给定的标记。