ユニコードスカラ値にはサロゲートペアのための領域0xD800-0xDFFFがあり、この範囲は文字を割り当てることがきない。このためcharの範囲からこの部分を外す。 [crayon-628fae19a18e6658655… 続きを読む [haskell][BNFC]Unicodeスカラ値のサロゲートペア範囲考慮
カテゴリー: プログラム
[haskell]BNFCでUnicodeを扱える様にする
BNFCのcharは0〜255の文字コードしか扱えない。これをUnicodeの範囲に広げる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ git diff diff --git a/source/src/BNFC/Backend/Haskell/CFtoAlex3.hs b/source/src/BNFC/Backend/Haskell/CFtoAlex3.hs index 054d576..e2b744f 100644 --- a/source/src/BNFC/Backend/Haskell/CFtoAlex3.hs +++ b/source/src/BNFC/Backend/Haskell/CFtoAlex3.hs @@ -63,7 +63,7 @@ cMacros = [ "$s = [a-z\\222-\\255] # [\\247] -- small isolatin1 letter FIXME", "$d = [0-9] -- digit", "$i = [$l $d _ '] -- identifier character", - "$u = [\\0-\\255] -- universal: any character" + "$u = [\\x0000-\\x10FFFF] -- universal: any character" ] rMacros :: CF -> [String] $ |
1 2 3 4 |
$ cat R_char.cf LTest. Test::= R_char_sequence; token R_char_sequence (char - [")"])+; $ |
[haskell]UTF8へのencode
UTF-8へのエンコードは2種類ある。
1 2 3 4 5 6 7 |
module Main (main) where import qualified Codec.Binary.UTF8.String as US main = do s < -getContents print $ US.encode s print $ US.encodeString s |
1 2 3 |
$ ./main あ[227,129,130] "\227\129\130" |
[crayon-628fae19a42cf723… 続きを読む [haskell]UTF8へのencode
[haskell]文字列の扱い2
この記事も文字列扱いの理解を助けてくれます。 Haskell Tips(文字列編)
[Haskell]haskellの難しいところ
!だったり#について分からなかったが、ここに行き着いた。勉強になります。これからHaskellを書くにあたって
[haskell]文字列の扱い
haskellの文字列扱いで良い記事を見つけた。 Haskell文字列変換入門
[haskell]内部文字コード
Haskellの文字列扱いを少し
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import Codec.Binary.UTF8.String -- str = ["\x0041", "\x3042", "\x57CE", "\x2F852"] str = ["A", "あ", "城", "城"] main::IO() main = do putStrLn "Haskell内部コード" mapM_ print str mapM_ putStrLn str putStrLn "Haskell内部コード>UTF8コード" mapM_ (\x -> print $ encodeString x) str mapM_ (\x -> putStrLn $ decodeString $ encodeString x) str |
出力結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ ./strsmpl Haskell内部コード "A" "\12354" "\22478" "\194642" A あ 城 城 Haskell内部コード>UTF8コード "A" "\227\129\130" "\229\159\142" "\240\175\161\146" A あ 城 城 |
Haskell内部ではUnicodeスカラ値… 続きを読む [haskell]内部文字コード
[haskell]todo.hs
教科書通りにやってみました。 todo.hs
[haskell]ディレクトリのリストを出力する
ディレクトリのリストを出力する。ファイル内容を出力する時と同じ要領で作ることができた。
1 2 3 4 5 6 7 8 9 |
import System.Directory import System.IO main::IO() main = do dirs < - getDirectoryContents "." case dirs of [] -> putStrLn "" _ -> mapM_ (\x -> putStrLn x) [ndirs | ndirs < - dirs, ndirs /= ".", ndirs /= ".."] |
dirsから”.”と”..&#… 続きを読む [haskell]ディレクトリのリストを出力する
haskell事始め
haskellをはじてみる。まずはファイルを扱えるようになることから。以下のコードでファイルの内容を出力するプログラムができる。
1 2 3 4 5 6 7 8 9 |
import System.Environment import System.IO main::IO() main = do args < - getArgs case args of args -> getContents >>= putStr _ -> mapM_(\x -> readFile x >>= putStr) args |
getArgsは引数を[… 続きを読む haskell事始め