[haskell][BNFC]n3337 Raw-string

n3337のRaw-stringをBNFCで定義する。

うまくパースしてくれているようです。

参考サイト

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

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

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

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

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

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

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

[haskell]BNFCでUnicodeを扱える様にする

BNFCのcharは0〜255の文字コードしか扱えない。これをUnicodeの範囲に広げる。

うまくできました。