diff --git a/haskell-experiments/src/Datalog/DatalogParser.hs b/haskell-experiments/src/Datalog/DatalogParser.hs index 19dea5e..cedcc05 100644 --- a/haskell-experiments/src/Datalog/DatalogParser.hs +++ b/haskell-experiments/src/Datalog/DatalogParser.hs @@ -134,12 +134,12 @@ statement = do try <$> [ do -- Query _ <- symbol "?-" body <- literal `sepBy` (symbol "," <* sc) + let pick construct = construct $> Query [] body choice [ do arrow; sc; vars <- variable `sepBy` (symbol "," <* sc); dot; pure $ Query vars body - , dot *> pure (Query [] body) - , eof *> pure (Query [] body) + , pick dot + , pick eof ] - , do -- Rule: head :- body . hd <- parserHead arrow @@ -168,5 +168,5 @@ parseDatalog = parse (statement <* sc <* eof) "" -- Multi-statement parser (for whole files) parseDatalogFile :: Text -> Either (ParseErrorBundle Text Void) [Statement] -parseDatalogFile src = parse (many (statement <* sc)) "" src +parseDatalogFile = parse (many (statement <* sc)) ""