git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Lex underscores explicitly
e33e9d2Gary Burgess
src/Language/PureScript/Parser/Declarations.hs+1−1
@@ -437,7 +437,7 @@ parseNamedBinder = NamedBinder <$> (C.parseIdent <* C.indented <* at)
437 <*> (C.indented *> parseBinder)
437 <*> (C.indented *> parseBinder)
438
438
439parseNullBinder :: TokenParser Binder
439parseNullBinder :: TokenParser Binder
440−parseNullBinder = reserved "_" *> return NullBinder
440+parseNullBinder = underscore *> return NullBinder
441
441
442parseIdentifierAndBinder :: TokenParser (String, Binder)
442parseIdentifierAndBinder :: TokenParser (String, Binder)
443parseIdentifierAndBinder = do
443parseIdentifierAndBinder = do
src/Language/PureScript/Parser/Lexer.hs+7
@@ -47,6 +47,7 @@ module Language.PureScript.Parser.Lexer
47 , comma
47 , comma
48 , semi
48 , semi
49 , at
49 , at
50+ , underscore
50 , semiSep
51 , semiSep
51 , semiSep1
52 , semiSep1
52 , commaSep
53 , commaSep
@@ -105,6 +106,7 @@ data Token
105 | Comma
106 | Comma
106 | Semi
107 | Semi
107 | At
108 | At
109+ | Underscore
108 | LName String
110 | LName String
109 | UName String
111 | UName String
110 | Qualifier String
112 | Qualifier String
@@ -133,6 +135,7 @@ prettyPrintToken Dot = "."
133prettyPrintToken Comma = ","
135prettyPrintToken Comma = ","
134prettyPrintToken Semi = ";"
136prettyPrintToken Semi = ";"
135prettyPrintToken At = "@"
137prettyPrintToken At = "@"
138+prettyPrintToken Underscore = "_"
136prettyPrintToken (Indent n) = "indentation at level " ++ show n
139prettyPrintToken (Indent n) = "indentation at level " ++ show n
137prettyPrintToken (LName s) = show s
140prettyPrintToken (LName s) = show s
138prettyPrintToken (UName s) = show s
141prettyPrintToken (UName s) = show s
@@ -196,6 +199,7 @@ parseToken = P.choice
196 , P.try $ P.char '.' *> P.notFollowedBy symbolChar *> pure Dot
199 , P.try $ P.char '.' *> P.notFollowedBy symbolChar *> pure Dot
197 , P.try $ P.char ';' *> P.notFollowedBy symbolChar *> pure Semi
200 , P.try $ P.char ';' *> P.notFollowedBy symbolChar *> pure Semi
198 , P.try $ P.char '@' *> P.notFollowedBy symbolChar *> pure At
201 , P.try $ P.char '@' *> P.notFollowedBy symbolChar *> pure At
202+ , P.try $ P.char '_' *> P.notFollowedBy identLetter *> pure Underscore
199 , LName <$> parseLName
203 , LName <$> parseLName
200 , do uName <- parseUName
204 , do uName <- parseUName
201 (guard (validModuleName uName) >> Qualifier uName <$ P.char '.') <|> pure (UName uName)
205 (guard (validModuleName uName) >> Qualifier uName <$ P.char '.') <|> pure (UName uName)
@@ -349,6 +353,9 @@ semi = match Semi
349at :: TokenParser ()
353at :: TokenParser ()
350at = match At
354at = match At
351
355
356+underscore :: TokenParser ()
357+underscore = match Underscore
358+
352-- |
359-- |
353-- Parse zero or more values separated by semicolons
360-- Parse zero or more values separated by semicolons
354--
361--