git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Lex underscores explicitly
commite33e9d2cf6201ae26c42665461103f807cf6bdfe authorGary Burgess <gary.burgess@gmail.com> dateFri 6 Feb 2015, 15:46 (12 years ago) parentde41349
2 files changed+8−1
src/Language/PureScript/Parser/Declarations.hs+1−1 src/Language/PureScript/Parser/Lexer.hs+7
src/Language/PureScript/Parser/Declarations.hs+1−1
@@ -437,7 +437,7 @@ parseNamedBinder = NamedBinder <$> (C.parseIdent <* C.indented <* at)
437437 <*> (C.indented *> parseBinder)
438438
439439parseNullBinder :: TokenParser Binder
440−parseNullBinder = reserved "_" *> return NullBinder
440+parseNullBinder = underscore *> return NullBinder
441441
442442parseIdentifierAndBinder :: TokenParser (String, Binder)
443443parseIdentifierAndBinder = do
src/Language/PureScript/Parser/Lexer.hs+7
@@ -47,6 +47,7 @@ module Language.PureScript.Parser.Lexer
4747 , comma
4848 , semi
4949 , at
50+ , underscore
5051 , semiSep
5152 , semiSep1
5253 , commaSep
@@ -105,6 +106,7 @@ data Token
105106 | Comma
106107 | Semi
107108 | At
109+ | Underscore
108110 | LName String
109111 | UName String
110112 | Qualifier String
@@ -133,6 +135,7 @@ prettyPrintToken Dot = "."
133135prettyPrintToken Comma = ","
134136prettyPrintToken Semi = ";"
135137prettyPrintToken At = "@"
138+prettyPrintToken Underscore = "_"
136139prettyPrintToken (Indent n) = "indentation at level " ++ show n
137140prettyPrintToken (LName s) = show s
138141prettyPrintToken (UName s) = show s
@@ -196,6 +199,7 @@ parseToken = P.choice
196199 , P.try $ P.char '.' *> P.notFollowedBy symbolChar *> pure Dot
197200 , P.try $ P.char ';' *> P.notFollowedBy symbolChar *> pure Semi
198201 , P.try $ P.char '@' *> P.notFollowedBy symbolChar *> pure At
202+ , P.try $ P.char '_' *> P.notFollowedBy identLetter *> pure Underscore
199203 , LName <$> parseLName
200204 , do uName <- parseUName
201205 (guard (validModuleName uName) >> Qualifier uName <$ P.char '.') <|> pure (UName uName)
@@ -349,6 +353,9 @@ semi = match Semi
349353at :: TokenParser ()
350354at = match At
351355
356+underscore :: TokenParser ()
357+underscore = match Underscore
358+
352359-- |
353360-- Parse zero or more values separated by semicolons
354361--