lexWord ">" BiggerToken <|> lexWord "!" ExclamationToken <|>
lexWord "-" DashToken <|>
//Number and identifier tokens
- lexNumber <|> lexIdentifier <|>
+ lexString <|> lexNumber <|> lexIdentifier <|>
(item '\n' >>| pure LexNL) <|>
//Whitespace
(satisfy isSpace >>| (pure $ LexSpace 0 1)) <|>
>>= \char->pure case char of
'a' = LexToken 4 (CharToken $ toChar 7)
'b' = LexToken 4 (CharToken '\b')
- 'b' = LexToken 4 (CharToken '\b')
'f' = LexToken 4 (CharToken '\f')
'n' = LexToken 4 (CharToken '\n')
- 'r' = LexToken 4 (CharToken '\t')
+ 'r' = LexToken 4 (CharToken '\r')
+ 't' = LexToken 4 (CharToken '\t')
'v' = LexToken 4 (CharToken '\v')
'\'' =LexToken 4 (CharToken '\'')
c = (LexItemError $ "Unknown escape: " +++ toString c)
+
+ lexString :: Parser Char LexItem
+ lexString = item '"' *> (
+ many (satisfy ((<>) '"'))) <* item '"' >>= \cs->
+ pure $ LexToken (length cs) (StringToken cs)