packages feed

ptera-th 0.6.1.0 → 0.7.0.0

raw patch · 5 files changed

+48/−51 lines, 5 filesdep +enummapsetdep −enummapset-thdep ~ghc-primdep ~pteradep ~ptera-corePVP ok

version bump matches the API change (PVP)

Dependencies added: enummapset

Dependencies removed: enummapset-th

Dependency ranges changed: ghc-prim, ptera, ptera-core, template-haskell

API changes (from Hackage documentation)

- Language.Parser.Ptera.TH: TExpQ :: Q (TExp a) -> TExpQ a
- Language.Parser.Ptera.TH: [$sel:unTExpQ:TExpQ] :: TExpQ a -> Q (TExp a)
- Language.Parser.Ptera.TH: newtype TExpQ a
- Language.Parser.Ptera.TH.Class.LiftType: instance Language.Parser.Ptera.TH.Class.LiftType.LiftType GHC.Integer.Type.Integer
- Language.Parser.Ptera.TH.Syntax: TExpQ :: Q (TExp a) -> TExpQ a
- Language.Parser.Ptera.TH.Syntax: [$sel:unTExpQ:TExpQ] :: TExpQ a -> Q (TExp a)
- Language.Parser.Ptera.TH.Syntax: newtype TExpQ a
+ Language.Parser.Ptera.TH.Class.LiftType: instance Language.Parser.Ptera.TH.Class.LiftType.LiftType GHC.Num.Integer.Integer
- Language.Parser.Ptera.TH: (<::>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp (ActionTask ctx a))) -> AltM ctx rules tokens elem a
+ Language.Parser.Ptera.TH: (<::>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Code Q (ActionTask ctx a)) -> AltM ctx rules tokens elem a
- Language.Parser.Ptera.TH: (<:>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp a)) -> AltM ctx rules tokens elem a
+ Language.Parser.Ptera.TH: (<:>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Code Q a) -> AltM ctx rules tokens elem a
- Language.Parser.Ptera.TH: [DictF] :: forall k (a :: k -> Constraint) (b :: k). a b => DictF a b
+ Language.Parser.Ptera.TH: [DictF] :: forall {k} (a :: k -> Constraint) (b :: k). a b => DictF a b
- Language.Parser.Ptera.TH: [HFCons] :: forall k (a :: k -> Type) (x :: k) (xs :: [k]). a x -> HFList a xs -> HFList a (x : xs)
+ Language.Parser.Ptera.TH: [HFCons] :: forall {k} (a :: k -> Type) (x :: k) (xs :: [k]). a x -> HFList a xs -> HFList a (x : xs)
- Language.Parser.Ptera.TH: [HFNil] :: forall k (a :: k -> Type). HFList a ('[] :: [k])
+ Language.Parser.Ptera.TH: [HFNil] :: forall {k} (a :: k -> Type). HFList a ('[] :: [k])
- Language.Parser.Ptera.TH: pattern (:*) :: Q (TExp u) -> HTExpList us -> HTExpList (u : us)
+ Language.Parser.Ptera.TH: pattern (:*) :: Code Q u -> HTExpList us -> HTExpList (u : us)
- Language.Parser.Ptera.TH: type HTExpList = T TExpQ
+ Language.Parser.Ptera.TH: type HTExpList = T (Code Q)
- Language.Parser.Ptera.TH.Syntax: (<::>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp (ActionTask ctx a))) -> AltM ctx rules tokens elem a
+ Language.Parser.Ptera.TH.Syntax: (<::>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Code Q (ActionTask ctx a)) -> AltM ctx rules tokens elem a
- Language.Parser.Ptera.TH.Syntax: (<:>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp a)) -> AltM ctx rules tokens elem a
+ Language.Parser.Ptera.TH.Syntax: (<:>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Code Q a) -> AltM ctx rules tokens elem a
- Language.Parser.Ptera.TH.Syntax: [DictF] :: forall k (a :: k -> Constraint) (b :: k). a b => DictF a b
+ Language.Parser.Ptera.TH.Syntax: [DictF] :: forall {k} (a :: k -> Constraint) (b :: k). a b => DictF a b
- Language.Parser.Ptera.TH.Syntax: [HFCons] :: forall k (a :: k -> Type) (x :: k) (xs :: [k]). a x -> HFList a xs -> HFList a (x : xs)
+ Language.Parser.Ptera.TH.Syntax: [HFCons] :: forall {k} (a :: k -> Type) (x :: k) (xs :: [k]). a x -> HFList a xs -> HFList a (x : xs)
- Language.Parser.Ptera.TH.Syntax: [HFNil] :: forall k (a :: k -> Type). HFList a ('[] :: [k])
+ Language.Parser.Ptera.TH.Syntax: [HFNil] :: forall {k} (a :: k -> Type). HFList a ('[] :: [k])
- Language.Parser.Ptera.TH.Syntax: pattern (:*) :: Q (TExp u) -> HTExpList us -> HTExpList (u : us)
+ Language.Parser.Ptera.TH.Syntax: pattern (:*) :: Code Q u -> HTExpList us -> HTExpList (u : us)
- Language.Parser.Ptera.TH.Syntax: semAct :: T ctx => T a => (HTExpList us -> Q (TExp a)) -> T TTypeQ us -> SemActM ctx us a
+ Language.Parser.Ptera.TH.Syntax: semAct :: T ctx => T a => (HTExpList us -> Code Q a) -> T TTypeQ us -> SemActM ctx us a
- Language.Parser.Ptera.TH.Syntax: semActM :: forall ctx us a. T ctx => T a => (HTExpList us -> Q (TExp (ActionTask ctx a))) -> T TTypeQ us -> SemActM ctx us a
+ Language.Parser.Ptera.TH.Syntax: semActM :: forall ctx us a. T ctx => T a => (HTExpList us -> Code Q (ActionTask ctx a)) -> T TTypeQ us -> SemActM ctx us a
- Language.Parser.Ptera.TH.Syntax: type HTExpList = T TExpQ
+ Language.Parser.Ptera.TH.Syntax: type HTExpList = T (Code Q)

Files

ptera-th.cabal view
@@ -2,12 +2,12 @@ build-type:          Custom  name:                ptera-th-version:             0.6.1.0+version:             0.7.0.0 license:             Apache-2.0 OR MPL-2.0 license-file:        LICENSE copyright:           (c) 2021 Mizunashi Mana author:              Mizunashi Mana-maintainer:          mizunashi-mana@noreply.git+maintainer:          contact@mizunashi.work  category:            Parsing homepage:            https://github.com/mizunashi-mana/ptera@@ -89,18 +89,18 @@             -dcore-lint      build-depends:-        base                 >= 4.14.0 && < 5,+        base                    >= 4.14.0 && < 5,          -- project depends-        ptera-core              >= 0.1.0 && < 0.2,-        ptera                   >= 0.3.0 && < 0.4,-        ghc-prim                >= 0.6.1 && < 0.7,-        containers              >= 0.6.0 && < 0.7,-        unordered-containers    >= 0.2.0 && < 0.3,-        array                   >= 0.5.4 && < 0.6,-        membership              >= 0.0.1 && < 0.1,-        enummapset-th           >= 0.6.0 && < 0.7,-        template-haskell        >= 2.16.0 && < 2.17,+        ptera-core              >= 0.2.0  && < 0.3,+        ptera                   >= 0.4.0  && < 0.5,+        ghc-prim                >= 0.8.0  && < 1,+        containers              >= 0.6.0  && < 0.7,+        unordered-containers    >= 0.2.0  && < 0.3,+        array                   >= 0.5.4  && < 0.6,+        membership              >= 0.0.1  && < 0.1,+        enummapset              >= 0.7.1  && < 1,+        template-haskell        >= 2.17.0 && < 3,      autogen-modules:         Paths_ptera_th@@ -109,9 +109,9 @@  custom-setup     setup-depends:-        base,-        Cabal,-        cabal-doctest,+        base          >= 4.14.0 && < 5,+        Cabal         >= 3.6    && < 4,+        cabal-doctest >= 1.0.9  && < 2,  library     import:
src/Language/Parser/Ptera/TH.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TemplateHaskellQuotes #-}  module Language.Parser.Ptera.TH (     module Language.Parser.Ptera.TH.Syntax,
src/Language/Parser/Ptera/TH/ParserLib.hs view
@@ -54,9 +54,9 @@     ST.runST do         ST.ST \s0# -> do             let !(# s1#, r# #) = Prim.readWord8OffAddr# table# i# s0#-            case r# of-                255## -> (# s1#, -1 #)-                _     -> (# s1#, Types.I# do Prim.word2Int# r# #)+            case Prim.word2Int# do Prim.word8ToWord# r# of+                255# -> (# s1#, -1 #)+                ri#  -> (# s1#, Types.I# ri# #)  pteraTHLookupTable16 :: Int -> Prim.Addr# -> Int -> Int -> Int pteraTHLookupTable16 offset table# s c = do@@ -64,9 +64,9 @@     ST.runST do         ST.ST \s0# -> do             let !(# s1#, r# #) = Prim.readWord16OffAddr# table# i# s0#-            case r# of-                65535## -> (# s1#, -1 #)-                _       -> (# s1#, Types.I# do Prim.word2Int# r# #)+            case Prim.word2Int# do Prim.word16ToWord# r# of+                65535# -> (# s1#, -1 #)+                ri#    -> (# s1#, Types.I# ri# #)  pteraTHLookupTable32 :: Int -> Prim.Addr# -> Int -> Int -> Int pteraTHLookupTable32 offset table# s c = do@@ -74,10 +74,11 @@     ST.runST do         ST.ST \s0# -> do             let !(# s1#, r# #) = Prim.readInt32OffAddr# table# i# s0#-            (# s1#, Types.I# r# #)+            (# s1#, Types.I# do Prim.int32ToInt# r# #)  pteraTHUnsafeExtractReduceArgument :: ReduceArgument -> a-pteraTHUnsafeExtractReduceArgument (ReduceArgument x) = Unsafe.unsafeCoerce x+pteraTHUnsafeExtractReduceArgument = \case+    ReduceArgument x -> Unsafe.unsafeCoerce x  pteraTHUnsafeRunner :: RunnerParser ctx elem () -> Parser ctx rules elem initials pteraTHUnsafeRunner p = Runner.UnsafeRunnerM p
src/Language/Parser/Ptera/TH/Pipeline/SRB2ParserDec.hs view
@@ -253,11 +253,11 @@     | n == -1   = replicate unitSize 0xFF     | otherwise = error "unsupported"     where-        mod8bit = case Bits.bitSizeMaybe n of-            Nothing -> \x -> x Bits..&. 0xFF+        mod8bit x = case Bits.bitSizeMaybe n of+            Nothing -> x Bits..&. 0xFF             Just bs-                | bs <= 8   -> \x -> x-                | otherwise -> \x -> x Bits..&. 0xFF+                | bs <= 8   -> x+                | otherwise -> x Bits..&. 0xFF  toTransOpsExp :: OutTransOpsRepr -> TH.Q TH.Exp toTransOpsExp = \case@@ -387,15 +387,16 @@ outputRunnerFn     :: TH.Name -> TH.Name -> TH.Name -> TH.Name -> TH.Name -> TH.Name -> TH.Name -> TH.Name     -> TH.Q TH.Dec-outputRunnerFn runnerFnName = \-        parserInitialFnName-        parserGetTokenNumFnName-        parserTransFnName-        parserAltKindFnName-        parserStateHelpFnName-        parserAltHelpFnName-        parserActionFnName-    -> TH.ValD do TH.VarP runnerFnName+outputRunnerFn+    runnerFnName+    parserInitialFnName+    parserGetTokenNumFnName+    parserTransFnName+    parserAltKindFnName+    parserStateHelpFnName+    parserAltHelpFnName+    parserActionFnName+    = TH.ValD do TH.VarP runnerFnName         <$> fmap TH.NormalB [e|pteraTHUnsafeRunner parser|]         <*> [d|             parser = RunnerParser
src/Language/Parser/Ptera/TH/Syntax.hs view
@@ -23,7 +23,6 @@     HTExpList,     pattern HNil,     pattern (:*),-    TExpQ (..),     Syntax.ActionTask (..),     Syntax.ActionTaskResult (..),     Syntax.getAction,@@ -107,7 +106,7 @@     :: LiftType.T ctx     => LiftType.T a     => TypedExpr rules tokens elem us-    -> (HTExpList us -> TH.Q (TH.TExp a))+    -> (HTExpList us -> TH.Code TH.Q a)     -> AltM ctx rules tokens elem a e <:> act = unTypedExpr e SafeGrammar.<:> semAct act do getTypesOfExpr e @@ -117,7 +116,7 @@     :: LiftType.T ctx     => LiftType.T a     => TypedExpr rules tokens elem us-    -> (HTExpList us -> TH.Q (TH.TExp (ActionTask ctx a)))+    -> (HTExpList us -> TH.Code TH.Q (ActionTask ctx a))     -> AltM ctx rules tokens elem a e <::> act = unTypedExpr e SafeGrammar.<:> semActM act do getTypesOfExpr e @@ -160,19 +159,15 @@     do SafeGrammar.tokensMembership do proxy# @'(tokens, t)  -type HTExpList = HFList.T TExpQ--newtype TExpQ a = TExpQ-    { unTExpQ :: TH.Q (TH.TExp a)-    }+type HTExpList = HFList.T (TH.Code TH.Q)  pattern HNil :: HTExpList '[] pattern HNil = HFList.HFNil  {-# COMPLETE HNil #-} -pattern (:*) :: TH.Q (TH.TExp u) -> HTExpList us -> HTExpList (u ': us)-pattern e :* es = HFList.HFCons (TExpQ e) es+pattern (:*) :: TH.Code TH.Q u -> HTExpList us -> HTExpList (u ': us)+pattern e :* es = HFList.HFCons e es  infixr 6 :* @@ -189,7 +184,7 @@ semActM :: forall ctx us a     .  LiftType.T ctx     => LiftType.T a-    => (HTExpList us -> TH.Q (TH.TExp (ActionTask ctx a)))+    => (HTExpList us -> TH.Code TH.Q (ActionTask ctx a))     -> HFList.T TTypeQ us -> SemActM ctx us a semActM f xs0 = UnsafeSemActM go where     go = do@@ -202,7 +197,7 @@         let lp0 = pure do TH.ListP [TH.VarP n | n <- ns]         [e|\ $(lp) -> case $(le) of             $(lp0) ->-                $(TH.unType <$> f args) :: ActionTask $(tqCtx) $(tqA)+                $(TH.unTypeCode do f args) :: ActionTask $(tqCtx) $(tqA)             _ ->                 error "unreachable: unexpected arguments"             |]@@ -214,7 +209,7 @@         HFList.HFCons (TTypeQ t) xs -> do             n <- TH.newName "pteraTHSemActArg"             let e = pure do TH.VarE n-            let arg = TH.unsafeTExpCoerce+            let arg = TH.unsafeCodeCoerce                     [|pteraTHUnsafeExtractReduceArgument $(e) :: $(t)|]             (ns, args) <- actArgs xs             pure (n:ns, arg :* args)@@ -222,6 +217,6 @@ semAct     :: LiftType.T ctx     => LiftType.T a-    => (HTExpList us -> TH.Q (TH.TExp a))+    => (HTExpList us -> TH.Code TH.Q a)     -> HFList.T TTypeQ us -> SemActM ctx us a semAct f = semActM do \us -> [||pteraTHActionTaskPure $$(f us)||]