[haskell][BNFC]Unicodeスカラ値のサロゲートペア範囲考慮

ユニコードスカラ値にはサロゲートペアのための領域0xD800-0xDFFFがあり、この範囲は文字を割り当てることがきない。このためcharの範囲からこの部分を外す。

BNFCはUTF-8で受け取るため、0xD800を無理やりUTF-8へコンバートする。リトルエンディアンであるので最初の0x0aは改行だ。勝手についてくるがおそらくechoかな。

0xeda080をBNFCでパースしてみるが、haskellが受け取ってくれない。

サロゲートペア外の文字コードであれば問題なく受け取るのでパースできる。

BNFCが生成したテスト実行コードを変更してテストしてみる。

テストが成功したので問題なしかな。

Leave a Comment.