【发布时间】:2015-05-19 04:03:09
【问题描述】:
我有以下最小化语法
Exp : let var '=' Exp in Exp end { App (Fn $2 $6) $4 }
| Exp Exp { App $1 $2 }
| Exp OpCode Exp { Op $1 Add $3 }
| '(' Exp ')' { $2 }
| num { Num $1 }
| var { Ident $1 }
| '\\' var '.' Exp { Fn $2 $4 }
Exp Exp 规则用于在值中应用函数。但如果我有类似myFunc 1 2 的东西,它默认优先于myFunc (1 2),这不是我想要的。我想要(myFunc 1) 2,用于柯里化。
但是如果我没有非终结符,我该如何定义关联呢?尝试做%left Exp 似乎没有帮助。
【问题讨论】:
标签: parsing compiler-construction grammar yacc happy