yacc/野牛令牌错误. '>>>'和'>>'都分配了数字62 [英] yacc/bison tokens error. '>>>' and '>>' both assigned number 62

查看:66
本文介绍了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/野牛令牌错误. '&gt;&gt;&gt;'和'&gt;&gt;'都分配了数字62的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆