RSS

メールアドレスをパース

Parsecの勉強のためとなんかないかと探してRFC5322(昔のRFC822)のアドレスを解析してみよう。ABNFを見ながら再帰的に函数を作っていってエラーがなくなるまで型を合わせていったらとりあえず動く。バックトラックがないのもめんどくさい。それっぽいところでおかしいのはどんどんtryをつっこんでおく。

単純なアドレスなら一応動くなーという状態になったがコメントが入ったり複雑なアドレスになると挙動があやしい。traceをばんばんぶちこんでみたがよくわからない。というかよくわかりません。もとはと言えばこんなわけのわからん定義をするのが悪い(正規表現では書けないのは有名)。納得いかないのでParsecをはなれてbisonでも引っ張り出すか。