Bison 中的比较运算符优先级
comparison operators precendence in Bison
我正在尝试为比较运算符设置规则:== <= != 等...
我已经有了这个优先列表:
%nonassoc "=="
%left '+' '-'
%left '*' '/'
%right '^'
%left UNARY
第一行 == 不起作用。我想这是因为“==”不是一个字符而是一个字符串,但我想不出别的办法。
它应该是非关联的,所以 1==2==3 会失败。谢谢
如您所写,Bison 不理解"=="
。您可以直接使用 '+'
等单字符标记,但对于多字符标记,您需要使用 Bison 的 %token
指令来定义它们。然后你必须让扫描器return那个令牌代码。
我正在尝试为比较运算符设置规则:== <= != 等... 我已经有了这个优先列表:
%nonassoc "=="
%left '+' '-'
%left '*' '/'
%right '^'
%left UNARY
第一行 == 不起作用。我想这是因为“==”不是一个字符而是一个字符串,但我想不出别的办法。 它应该是非关联的,所以 1==2==3 会失败。谢谢
如您所写,Bison 不理解"=="
。您可以直接使用 '+'
等单字符标记,但对于多字符标记,您需要使用 Bison 的 %token
指令来定义它们。然后你必须让扫描器return那个令牌代码。