オフサイドルールの処理 - parse-error(t)って結局なんやったん?
parse-error(t)とか知るかよ、と思ってたんですが、どうもparse-error(t)が無いとまずいような気がしてきた*1。こういうやつが、困る。
let a = 1 in a+1
これは、
let { a = 1 } in a+1
になってほしいわけですが、私の書いたレキサだと、
let { a = 1 in a+1 }
になります。
これはまずいなぁ、とか思って、考えてみたんですが、inの前に閉じ括弧を補うルールって、parse-error(t)に寄るものしかないような気がします。困った。適当にad-hocにinの前に閉じ括弧を補えないか考えてみたんですが、難しそうなので止めました。
let a = 1 in a+1
なら大丈夫ですし。
*1:まずいのは当然ですが.どういう場合にまずいのかわかってきた.