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