git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Parser changes for top-level binders
commit32a3d4bae060bfbba8e8491ff14cb0b6747e520a authorPhil Freeman <paf31@cantab.net> dateThu 26 Dec 2013, 14:05 (13 years ago) parent1301ee6
3 files changed+17−3
examples/passing/List.purs+1−1 src/Language/PureScript/Parser/Declarations.hs+1−1 src/Language/PureScript/Parser/Values.hs+15−1
examples/passing/List.purs+1−1
@@ -8,7 +8,7 @@ data List a
88isNull Nil = true
99isNull _ = false
1010
11−concat (Nil) l2 = l2
11+concat Nil l2 = l2
1212concat (Cons x) l2 = Cons
1313 { head: x.head
1414 , tail: concat x.tail l2
src/Language/PureScript/Parser/Declarations.hs+1−1
@@ -57,7 +57,7 @@ parseValueDeclaration =
5757 <*> ((lexeme (indented *> P.char '=')) *> parseValue)
5858
5959parseTopLevelBinder :: P.Parsec String ParseState [Binder]
60−parseTopLevelBinder = return <$> P.try parseBinder <|> parens (commaSep parseBinder)
60+parseTopLevelBinder = return <$> P.try parseBinderNoParens <|> parens (commaSep parseBinder)
6161
6262parseExternDeclaration :: P.Parsec String ParseState Declaration
6363parseExternDeclaration = P.try (reserved "foreign") *> indented *> (reserved "import") *> indented *>
src/Language/PureScript/Parser/Values.hs+15−1
@@ -15,7 +15,8 @@
1515module Language.PureScript.Parser.Values (
1616 parseValue,
1717 parseGuard,
18− parseBinder
18+ parseBinder,
19+ parseBinderNoParens
1920) where
2021
2122import Language.PureScript.Values
@@ -265,6 +266,19 @@ parseBinder = (buildExpressionParser operators parseBinderAtom) P.<?> "expressio
265266 where
266267 operators = [ [ Infix ( C.lexeme (P.try $ C.indented *> C.reservedOp ":") >> return ConsBinder) AssocRight ] ]
267268
269+parseBinderNoParens :: P.Parsec String ParseState Binder
270+parseBinderNoParens = P.choice (map P.try
271+ [ parseNullBinder
272+ , parseStringBinder
273+ , parseBooleanBinder
274+ , parseNumberBinder
275+ , parseNamedBinder
276+ , parseVarBinder
277+ , parseNullaryBinder
278+ , parseObjectBinder
279+ , parseArrayBinder
280+ , C.parens parseBinder ]) P.<?> "binder"
281+
268282parseGuard :: P.Parsec String ParseState Guard
269283parseGuard = C.indented *> C.pipe *> C.indented *> parseValue
270284