started working on displaying tokens
This commit is contained in:
parent
7df40c237c
commit
9299f07f8e
1 changed files with 14 additions and 9 deletions
|
|
@ -36,6 +36,11 @@ toTokens :: (Characters s) => String -> s -> Either (ParseErrorBundle s Void) [T
|
||||||
toTokens = parse tokens
|
toTokens = parse tokens
|
||||||
|
|
||||||
displayToken :: (ToText s) => Token s -> s
|
displayToken :: (ToText s) => Token s -> s
|
||||||
|
displayToken WhiteSpace = fromText " "
|
||||||
|
displayToken (Identifier i) = i
|
||||||
|
displayToken (HashBangComment text) = fromText ("#!" <> toText text)
|
||||||
|
displayToken (SingleLineComment text) = fromText ("//" <> toText text)
|
||||||
|
displayToken (MultiLineComment text) = fromText ("/*" <> toText text <> "*/")
|
||||||
displayToken _ = error "TODO"
|
displayToken _ = error "TODO"
|
||||||
|
|
||||||
-- yeah I guess I'm making a javascript tokenizer
|
-- yeah I guess I'm making a javascript tokenizer
|
||||||
|
|
@ -44,9 +49,9 @@ displayToken _ = error "TODO"
|
||||||
data Token s
|
data Token s
|
||||||
= WhiteSpace
|
= WhiteSpace
|
||||||
| LineTerminator
|
| LineTerminator
|
||||||
| SingleLineComment
|
| SingleLineComment s
|
||||||
| MultiLineComment
|
| MultiLineComment s
|
||||||
| HashBangComment
|
| HashBangComment s
|
||||||
| Identifier s
|
| Identifier s
|
||||||
| PrivateIdentifier s
|
| PrivateIdentifier s
|
||||||
| ReservedWord Reserved
|
| ReservedWord Reserved
|
||||||
|
|
@ -84,20 +89,20 @@ token =
|
||||||
hashbang_comment :: (Logger m, Characters s) => Parser s m (Token s)
|
hashbang_comment :: (Logger m, Characters s) => Parser s m (Token s)
|
||||||
hashbang_comment = do
|
hashbang_comment = do
|
||||||
string "#!"
|
string "#!"
|
||||||
many ((notFollowedBy newline) *> anySingle)
|
text <- many ((notFollowedBy newline) *> anySingle)
|
||||||
pure HashBangComment
|
pure $ HashBangComment $ fromString text
|
||||||
|
|
||||||
comment :: (Logger m, Characters s) => Parser s m (Token s)
|
comment :: (Logger m, Characters s) => Parser s m (Token s)
|
||||||
comment = (try singleline_com) <|> multiline_com
|
comment = (try singleline_com) <|> multiline_com
|
||||||
where
|
where
|
||||||
singleline_com = do
|
singleline_com = do
|
||||||
string "//"
|
string "//"
|
||||||
many ((notFollowedBy newline) *> anySingle)
|
text <- many ((notFollowedBy newline) *> anySingle)
|
||||||
pure SingleLineComment
|
pure $ SingleLineComment $ fromString text
|
||||||
multiline_com = do
|
multiline_com = do
|
||||||
string "/*"
|
string "/*"
|
||||||
many ((notFollowedBy $ string "*/") *> anySingle)
|
text <- many ((notFollowedBy $ string "*/") *> anySingle)
|
||||||
pure MultiLineComment
|
pure $ MultiLineComment $ fromString text
|
||||||
|
|
||||||
reserved_word :: (Logger m, Characters s) => Parser s m (Token s)
|
reserved_word :: (Logger m, Characters s) => Parser s m (Token s)
|
||||||
reserved_word = choice [try await, try break, try case_, try catch_, try class_, try const, try continue, try debugger, try default_, try delete, try do_, try else_, try enum, try export, try extends, try false, try finally_, try for_, try function, try if_, try import_, try in_, try instanceof, try new, try null, try return, try super, try switch, try this, try throw_, try true, try try_, try typeof, try var, try void, try while, try with, yield]
|
reserved_word = choice [try await, try break, try case_, try catch_, try class_, try const, try continue, try debugger, try default_, try delete, try do_, try else_, try enum, try export, try extends, try false, try finally_, try for_, try function, try if_, try import_, try in_, try instanceof, try new, try null, try return, try super, try switch, try this, try throw_, try true, try try_, try typeof, try var, try void, try while, try with, yield]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue