Gauche > Archives > 2011/05/24

2011/05/24 07:22:20 UTCshiro
#
UAX#29のWord Boundary、思ってたよりトリッキーだな。WB6とWB8のせいで1文字余分に先読みが必要か、と思ったら間にExtendとFormatが任意個挟まる可能性があるので、無制限の先読みが必要になる。テーブルにするより関数で書いちゃった方が楽そうだ。
2011/05/24 07:50:02 UTCshiro
#
WB8じゃない、WB12だった。
2011/05/24 08:10:39 UTCshiro
#
Σが単語末かどうか、だけを見るならWord Boundaryを全部実装する必要はない。が、(Extend|Format)*(((MidLetter|MidNumLet)(Extend|Format)*(!ALetter))|(!(ALetter|ExtendNumLet))) という先読みをする必要がある。
2011/05/24 19:16:52 UTCshiro
#
結局、テーブルドリブンのDFAで、WB6とWB12だけ先読みを特別処理するって方法で綺麗に収まった。