yacc/野牛令牌错误. '>>>'和'>>'都分配了数字62 [英] yacc/bison tokens error. '>>>' and '>>' both assigned number 62
本文介绍了yacc/野牛令牌错误. '>>>'和'>>'都分配了数字62的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在代码中做了类似的事情
I do something like this in my code
CmpExpr:
rval '<<' rval { $$ = $1 << $3; }
| rval '>>' rval { $$ = $1 >> $3; }
| rval '>>>' rval { $$ = (unsigned)($1) >> ($3); }
;
我得到的警告是
tokens '>>>' and '>>' both assigned number 62
我如何使其使用不同的令牌?
How do i make it use different tokens?
推荐答案
%TOKEN LSHIFT RSHIFT RRSHIFT
在lex write中
in lex write
"<<" { return LSHIFT; }
">>" { return RSHIFT; }
">>>" { return RRSHIFT; }
那么你就可以写
CmpExpr:
rval LSHIFT rval { $$ = $1 << $3; }
| rval RSHIFT rval { $$ = $1 >> $3; }
| rval RRSHIFT rval { $$ = (unsigned)($1) >> ($3); }
我认为您可以写<<"而不是LSHIFT,因为它可以编译,但是我不知道它是否以不同的方式运行
I think you can write "<<" instead of LSHIFT since it compiles but i have no idea if it runs differently
这篇关于yacc/野牛令牌错误. '>>>'和'>>'都分配了数字62的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文