オフサイドルールの処理
「Haskell パーサ」で検索すると、Parsec等のHaskellでパーサをつくる話ばかり出てきて
Haskellのようなパーサをつくる話はみつけられなかった。
「オフサイドルール パーサ」で検索したら、以下のページが見つけられた。
ざっくり説明すると,字句解析は要するに3passくらいになってます.
http://d.hatena.ne.jp/soutaro/20080123/1201090473
一旦,通常の字句解析をやったあとで,
インデントの数を数えて{n}やらやら入れる処理を行ない,
最終的にそれを{とか;とか使ったプログラムに変換している.
そこからリンクされてた公式情報。
Haskell 98 Syntax
http://www.sampou.org/haskell/report-revised-j/syntax-iso.html
9.3 レイアウト
2.7 節ではレイアウト規則に ついて非形式的に議論した。この節では、それをもう少し正確に定義する。
レイアウトの影響は、この節では、レイアウトを用いているプログラムに、 どのようにして、ブレースとセミコロンを追加するかを記述することによっ て指定する。この仕様は、変換を行う関数 L の形をとる。