mirror of
https://github.com/Kindelia/Kind.git
synced 2024-10-05 21:28:26 +03:00
Change Num (U32) to Word32; parse Chars as u32 values
This commit is contained in:
parent
0df2cc277f
commit
f451ea0636
@ -134,6 +134,7 @@ parseTerm = (do
|
||||
, parseSet
|
||||
, parseNum
|
||||
, parseTxt
|
||||
, parseChr
|
||||
, parseHol
|
||||
, parseMet
|
||||
, parseRef
|
||||
@ -302,6 +303,23 @@ parseTxt = withSrc $ do
|
||||
char '"'
|
||||
return $ Txt txt
|
||||
|
||||
parseChr = withSrc $ do
|
||||
char '\''
|
||||
chr <- parseEscaped <|> noneOf "'\\"
|
||||
char '\''
|
||||
return $ Num (fromIntegral $ ord chr)
|
||||
where
|
||||
parseEscaped :: Parser Char
|
||||
parseEscaped = do
|
||||
char '\\'
|
||||
c <- oneOf "\\\'nrt"
|
||||
return $ case c of
|
||||
'\\' -> '\\'
|
||||
'\'' -> '\''
|
||||
'n' -> '\n'
|
||||
'r' -> '\r'
|
||||
't' -> '\t'
|
||||
|
||||
parseHol = withSrc $ do
|
||||
char '?'
|
||||
nam <- parseName
|
||||
|
@ -75,7 +75,7 @@ reduce book fill lv term = red term where
|
||||
ref nam = Ref nam
|
||||
|
||||
txt [] = red (Ref "Base/String/cons")
|
||||
txt (x:xs) = red (App (App (Ref "Base/String/nil") (Num (ord x))) (Txt xs))
|
||||
txt (x:xs) = red (App (App (Ref "Base/String/nil") (Num (toEnum (ord x)))) (Txt xs))
|
||||
|
||||
nat 0 = Ref "Base/Nat/zero"
|
||||
nat n = App (Ref "Base/Nat/succ") (nat (n - 1))
|
||||
|
@ -4,6 +4,7 @@ import qualified Data.IntMap.Strict as IM
|
||||
import qualified Data.Map.Strict as M
|
||||
|
||||
import Debug.Trace
|
||||
import Data.Word (Word32)
|
||||
|
||||
-- Kind's AST
|
||||
data Term
|
||||
@ -49,8 +50,8 @@ data Term
|
||||
-- U32 Type
|
||||
| U32
|
||||
|
||||
-- U32 Value (FIXME: this is wrong, should be Word32)
|
||||
| Num Int
|
||||
-- U32 Value
|
||||
| Num Word32
|
||||
|
||||
-- U32 Binary Operation
|
||||
| Op2 Oper Term Term
|
||||
|
Loading…
Reference in New Issue
Block a user