オフサイドルールの処理

Haskell パーサ」で検索すると、Parsec等のHaskellでパーサをつくる話ばかり出てきて
Haskellのようなパーサをつくる話はみつけられなかった。
オフサイドルール パーサ」で検索したら、以下のページが見つけられた。

ざっくり説明すると,字句解析は要するに3passくらいになってます.
一旦,通常の字句解析をやったあとで,
インデントの数を数えて{n}やらやら入れる処理を行ない,
最終的にそれを{とか;とか使ったプログラムに変換している.

http://d.hatena.ne.jp/soutaro/20080123/1201090473

そこからリンクされてた公式情報。

Haskell 98 Syntax
9.3 レイアウト
2.7 節ではレイアウト規則に ついて非形式的に議論した。この節では、それをもう少し正確に定義する。
レイアウトの影響は、この節では、レイアウトを用いているプログラムに、 どのようにして、ブレースとセミコロンを追加するかを記述することによっ て指定する。この仕様は、変換を行う関数 L の形をとる。

http://www.sampou.org/haskell/report-revised-j/syntax-iso.html