https://twitter.com/kinaba のログ (twilog の方が便利です。)
遅レス> http://twitter.com/kmizu/status/6297126300 。手法自体の難しさじゃなくて、見せ方の問題だと思うんですよ。LL(k)も、教科書的な「FIRSTとFOLLOW集合を計算してLL(k)表を構築し云々」だと結構複雑なわけで | |
でもFIRST/FOLLOWなんてだいたい感覚でわかるし、といい加減に再帰下降を手書きできるからLL(1)は簡単に感じられる。同様に、LR(1)表を構築云々じゃなくて、還元かシフトかだいたい感覚で、といい加減な上昇パーザ手書きの習慣が広まると、きっと今より簡単に見えるんじゃないか | |
@finalfusion 表は作らないでその場その場で適当にif文とかでどうにかする、という話です。再帰下降パーザを手書きするときに http://ja.wikipedia.org/wiki/LL%E6%B3%95 こんな表作りませんよね?というのと同じで | |
やることは基本的に loop { スタックの最後が ["if" 式 "then" 文 "else" 文] だったら [文] に置換、最後が(中略)置換、最後が(中略)置換、…、どれでも無ければ次のトークンをスタックにpush } みたいなの。 | |
.@kmizu @finalfusion @ytomino こんど日記にまとめるようにします。ただし効率とエラー回復は興味ないです! | |
@kmizu 「スタックに突っ込んだVariantっぽいものがどう並んでいるか調べる」が、まあ多くの言語ではそんなにダイレクトに書けないので、実際のところコード量は多いです。が、概念的にはそんなに複雑じゃないと思う… | |
固定小数点数のことを不動小数点数と名付ける誘惑に負けなかった昔の人は本当にえらいなあと思っている。 | |
@kmizu 逆に、固定明王ってなんだか可愛いですね。 |