Bison 中的比较运算符优先级

comparison operators precendence in Bison

我正在尝试为比较运算符设置规则:== <= != 等... 我已经有了这个优先列表:

%nonassoc "=="
%left '+' '-'
%left '*' '/'
%right '^'
%left UNARY

第一行 == 不起作用。我想这是因为“==”不是一个字符而是一个字符串,但我想不出别的办法。 它应该是非关联的,所以 1==2==3 会失败。谢谢

如您所写,Bison 不理解"=="。您可以直接使用 '+' 等单字符标记,但对于多字符标记,您需要使用 Bison 的 %token 指令来定义它们。然后你必须让扫描器return那个令牌代码。