< 病院の一日 | らむ太とteapot >
2008/08/12
rfc4180の曖昧性
CSV形式はRFC:4180でフォーマルに定められているのだが…
- recordはCRLFで終わる、ただし最後のレコードの後ろのCRLFは省略可
- recordはひとつ以上のfieldをCOMMAで区切ったもの
これって、ファイル末尾がCRLFで終わっている場合、
- それがrecord終端のCRLFなのか、
- その後ろにひとつの空のfieldを持つrecordがあって、その後ろのCRLFが省略されているのか、
わからないよなあ。
一応「各レコードのフィールド数は同じでなければならない」って規定があるから それまでに2つ以上のフィールドが出てきてれば(2)の可能性は排除できるけど。
まあ慣例的にはCRLFの後ろにEOFが来てればCRLFが終端だとするだろうけれど、 それを形式的に(EBNFとかPEGで)かつ簡潔に記述するのって結構面倒なような。
と、PEGのテスト用のCSVパーザをいじってて思った。
Tag: Programming