Compiler construction 理解可变算子

Compiler construction 理解可变算子,compiler-construction,bison,Compiler Construction,Bison,我正在bison中创建一个解析器,我必须指定以下二进制和可变运算符的优先级和关联性 关联性:左 算术:二进制/可变 固定性:后缀 运算符:表达式[expression],表达式.i,函数(……) 问题是,我不知道这些运算符与关联性和优先级有什么关系。有人能给我举个例子说明这是如何发挥作用的吗 例如,如果我有规则 . . . %precedence HIGHEST %% expr : expr '(' expr ')' %prec HIGHEST %% 那么expr'('expr')形式的所有内

我正在bison中创建一个解析器,我必须指定以下二进制和可变运算符的优先级和关联性

关联性:左
算术:二进制/可变
固定性:后缀
运算符:表达式[expression],表达式.i,函数(……)

问题是,我不知道这些运算符与关联性和优先级有什么关系。有人能给我举个例子说明这是如何发挥作用的吗

例如,如果我有规则

.
.
.
%precedence HIGHEST
%%
expr : expr '(' expr ')' %prec HIGHEST
%%

那么expr'('expr')形式的所有内容都将具有最高优先级?

A+B.C
例如:
(A+B).C
!=<代码>A+(B.C)这就是你错过的吗?是的,差不多了。变量运算符呢?…..我建议编辑一个完整的语法示例,您不知道如何解析关联性/优先级。例如,
expr:expr'('expr(,expr)*')、'expr:expr'、'expr
(我不熟悉野牛,我通常的方法是将:
expr:expr'、'no_comma_expr | expr'('no_comma_expr(','no_comma_expr)*')、'no| comma_expr
A+B.C
<代码>A+(B.C)这就是你错过的吗?是的,差不多了。变量运算符呢?…..我建议编辑一个完整的语法示例,您不知道如何解析关联性/优先级。例如,
expr:expr'('expr(,expr)*')、'expr:expr'、'expr
(我对野牛不熟悉,我通常的方法是将:
expr:expr'、'no_comma_expr'('no_comma_expr('、'no_comma_expr)*')、'no| comma_expr