hasktorch-codegen 0.0.1.0 → 0.0.1.1
raw patch · 4 files changed
+36/−12 lines, 4 filesdep ~megaparsec
Dependency ranges changed: megaparsec
Files
- hasktorch-codegen.cabal +3/−3
- src/CodeGen/Parse.hs +4/−4
- src/CodeGen/Prelude.hs +14/−0
- src/CodeGen/Render.hs +15/−5
hasktorch-codegen.cabal view
@@ -9,7 +9,7 @@ -- 'dhall-to-cabal -- ffi/codegen/hasktorch-codegen.dhall > hasktorch-codegen.cabal'. -- * * * * * * * * * * * * WARNING * * * * * * * * * * * * name: hasktorch-codegen-version: 0.0.1.0+version: 0.0.1.1 license: BSD-3-Clause maintainer: Sam Stites <fnz@fgvgrf.vb>, Austin Huang <nhfgvau@nyhz.zvg.rqh> - cipher:ROT13 author: Hasktorch dev team@@ -51,7 +51,7 @@ containers ==0.5.10 || >0.5.10, directory ==1.3.0 || >1.3.0, hashable ==1.2.7 || >1.2.7,- megaparsec ==6.5.0 || >6.5.0,+ megaparsec (==6.0.0 || >6.0.0) && <8.0.0, pretty-show ==1.7 || >1.7, text ==1.2.2 || >1.2.2, unordered-containers ==0.2.9 || >0.2.9@@ -88,7 +88,7 @@ hasktorch-codegen -any, hspec ==2.4.4 || >2.4.4, hspec-discover ==2.5.0 || >2.5.0,- megaparsec ==6.5.0 || >6.5.0,+ megaparsec (==6.0.0 || >6.0.0) && <8.0.0, pretty-show ==1.7 || >1.7, text ==1.2.2 || >1.2.2
src/CodeGen/Parse.hs view
@@ -119,12 +119,12 @@ endsInComma :: Parser () endsInComma = try (void (char ',' >> space >> eol))- <|> try (void (char ',' >> space >> string "//" >> some (notChar '\n') >> eol))+ <|> try (void (char ',' >> space >> string "//" >> some (anySingleBut '\n') >> eol)) <|> void (char ',') endsInParen :: Parser () endsInParen- = try (space >> string "//" >> some (notChar '\n') >> eol >> space >> lookAhead (void $ char ')'))+ = try (space >> string "//" >> some (anySingleBut '\n') >> eol >> space >> lookAhead (void $ char ')')) <|> lookAhead (void $ char ')') functionArgs :: Parser [Arg]@@ -168,7 +168,7 @@ space string "//" some (alphaNumChar <|> char '_' <|> char ' ')- void $ eol <|> (some (notChar '\n') >> eol)+ void $ eol <|> (some (anySingleBut '\n') >> eol) -- | skip over a _single-line_ of block comment -- something which seems standard in the libTH. comment :: Parser ()@@ -191,7 +191,7 @@ skip :: Parser (Maybe Function) skip = do (not <$> atEnd) >>= guard- void $ many (notChar '\n') <* (void eol <|> eof)+ void $ many (anySingleBut '\n') <* (void eol <|> eof) pure Nothing
src/CodeGen/Prelude.hs view
@@ -1,8 +1,10 @@+{-# LANGUAGE CPP #-} module CodeGen.Prelude ( module X , impossible , tshow , tputStrLn+ , anySingleBut ) where import Prelude as X@@ -28,6 +30,10 @@ import qualified Data.Text as T +import Text.Megaparsec (Token, MonadParsec)+import qualified Text.Megaparsec as Compat.Megaparsec+import qualified Text.Megaparsec.Char as Compat.Megaparsec+ impossible :: Show msg => msg -> a impossible x = error (show x) @@ -36,3 +42,11 @@ tputStrLn :: Text -> IO () tputStrLn = putStrLn . T.unpack++#if MIN_VERSION_megaparsec(7,0,0)+anySingleBut :: MonadParsec e s m => Token s -> m (Token s)+anySingleBut = Compat.Megaparsec.anySingleBut+#else+anySingleBut :: MonadParsec e s m => Token s -> m (Token s)+anySingleBut = Compat.Megaparsec.notChar+#endif
src/CodeGen/Render.hs view
@@ -1,10 +1,10 @@ {-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE CPP #-} module CodeGen.Render ( makeModule , writeHaskellModule , parseFile- , cleanList , renderFunctions ) where@@ -23,6 +23,9 @@ import CodeGen.Parse.Cases (checkFunction, type2hsreal) import qualified CodeGen.Parse as CG (parser) +#if MIN_VERSION_megaparsec(7,0,0)+import Text.Megaparsec.Error (ParseErrorBundle)+#endif -- ---------------------------------------- -- helper data and functions for templating@@ -151,19 +154,26 @@ -- Execution -- ---------------------------------------- --- | Remove if list was returned, extract non-Nothing values, o/w empty list-cleanList :: Either (ParseError Char Void) [Maybe Function] -> [Function]-cleanList = either (const []) catMaybes- parseFile :: LibType -> CodeGenType -> String -> IO [Function] parseFile _ _ file = do putStrLn $ "\nParsing " ++ file ++ " ... " res <- parseFromFile CG.parser file pure $ cleanList res where+ -- | Remove if list was returned, extract non-Nothing values, o/w empty list+ cleanList :: Either s [Maybe Function] -> [Function]+ cleanList = either (const []) catMaybes++#if MIN_VERSION_megaparsec(7,0,0) parseFromFile :: Parser [Maybe Function] -> String+ -> IO (Either (ParseErrorBundle String Void) [Maybe Function])+#else+ parseFromFile+ :: Parser [Maybe Function]+ -> String -> IO (Either (ParseError Char Void) [Maybe Function])+#endif parseFromFile p file = runParser p file <$> readFile file