我在关联性方面遇到了麻烦。出于某种原因,我的 = 运算符的优先级高于我的 :: 运算符
例如,如果我有
“1::[] = []”
作为一个字符串,我会得到
1 = []::[]
作为我的表达,而不是
[1] = []
如果我的字符串是“1::2::[] = []”
我以为我会把它解析成 exp1 EQ exp2,然后从那时起它会解析 exp1 和 exp2。但它被解析为 exp1 COLONCOLON exp2
.
.
.
%nonassoc LET FUN IF
%left OR
%left AND
%left EQ NE LT LE
%right SEMI COLONCOLON
%left PLUS MINUS
%left MUL DIV
%left APP
.
.
.
exp4:
| exp4 EQ exp9 { Bin ($1,Eq,$3) }
| exp4 NE exp9 { Bin ($1,Ne,$3) }
| exp4 LT exp9 { Bin ($1,Lt,$3) }
| exp4 LE exp9 { Bin ($1,Le,$3) }
| exp9 { $1 }
exp9:
| exp COLONCOLON exp9 { Bin ($1,Cons,$3) }
| inner { $1 }
.
.
.