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 - [")"])+; $ |
1 2 3 4 5 6 7 8 9 10 11 12 |
$ ./TestRChar あいうえお Parse Successful! [Abstract Syntax] LTest (R_char_sequence "\12354\12356\12358\12360\12362") [Linearized tree] あいうえお $ |
うまくできました。