ptera-th 0.6.0.0 → 0.6.1.0
raw patch · 3 files changed
+24/−20 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Language.Parser.Ptera.TH.ParserLib: type PteraTHArray = Array
- Language.Parser.Ptera.TH.ParserLib: pteraTHArrayFromList :: Int -> [e] -> Array Int e
+ Language.Parser.Ptera.TH.ParserLib: pteraTHArrayFromList :: Int -> [e] -> PteraTHArray Int e
- Language.Parser.Ptera.TH.ParserLib: pteraTHArrayIndex :: Array Int e -> Int -> e
+ Language.Parser.Ptera.TH.ParserLib: pteraTHArrayIndex :: PteraTHArray Int e -> Int -> e
Files
- ptera-th.cabal +1/−1
- src/Language/Parser/Ptera/TH/ParserLib.hs +5/−2
- src/Language/Parser/Ptera/TH/Pipeline/SRB2ParserDec.hs +18/−17
ptera-th.cabal view
@@ -2,7 +2,7 @@ build-type: Custom name: ptera-th-version: 0.6.0.0+version: 0.6.1.0 license: Apache-2.0 OR MPL-2.0 license-file: LICENSE copyright: (c) 2021 Mizunashi Mana
src/Language/Parser/Ptera/TH/ParserLib.hs view
@@ -2,6 +2,7 @@ module Language.Parser.Ptera.Runner.Parser, module Data.Proxy, Parser,+ PteraTHArray, pteraTHTokenToTerminal, pteraTHArrayIndex, pteraTHArrayFromList,@@ -36,13 +37,15 @@ type Parser = Runner.T +type PteraTHArray = Array.Array+ pteraTHTokenToTerminal :: GrammarToken tokens elem => Proxy tokens -> elem -> Int pteraTHTokenToTerminal p t = HEnum.unsafeHEnum do tokenToTerminal p t -pteraTHArrayIndex :: Array.Array Int e -> Int -> e+pteraTHArrayIndex :: PteraTHArray Int e -> Int -> e pteraTHArrayIndex arr i = arr Array.! i -pteraTHArrayFromList :: Int -> [e] -> Array.Array Int e+pteraTHArrayFromList :: Int -> [e] -> PteraTHArray Int e pteraTHArrayFromList b l = Array.listArray (0, b) l pteraTHLookupTable8 :: Int -> Prim.Addr# -> Int -> Int -> Int
src/Language/Parser/Ptera/TH/Pipeline/SRB2ParserDec.hs view
@@ -109,6 +109,7 @@ else Nothing |] <*> [d|+ table :: PteraTHArray Int (Maybe Int) table = pteraTHArrayFromList $(TH.lift ub) $(TH.ListE <$> qes) |] where@@ -121,7 +122,7 @@ Nothing -> [e|Nothing|] Just (SRB.StateNum s) ->- [e|Just $(TH.lift s)|]+ [e|Just $(TH.lift s) :: Maybe Int|] [0..ub] outputParserTransFn :: TH.Name@@ -302,12 +303,12 @@ -> TH.Q TH.Dec outputParserAltKindFn parserAltKindFnName alts = TH.ValD do TH.VarP parserAltKindFnName- <$> fmap TH.NormalB [e|- let arr = pteraTHArrayFromList $(TH.lift do length alts - 1)- $(TH.ListE <$> traverse altKindExp do toList alts)- in \i -> pteraTHArrayIndex arr i+ <$> fmap TH.NormalB [e|\i -> pteraTHArrayIndex table i|]+ <*> [d|+ table :: PteraTHArray Int AltKind+ table = pteraTHArrayFromList $(TH.lift do length alts - 1)+ $(TH.ListE <$> traverse altKindExp do toList alts) |]- <*> pure [] where altKindExp alt = case LAPEG.altKind alt of AltSeq -> [e|AltSeq|]@@ -320,19 +321,19 @@ -> TH.Q TH.Dec outputParserStateHelpFn fnName states = TH.ValD do TH.VarP fnName- <$> fmap TH.NormalB [e|- let arr = pteraTHArrayFromList $(TH.lift do length states - 1)- $(TH.ListE <$> traverse stateHelpExp do toList states)- in \i -> pteraTHArrayIndex arr i+ <$> fmap TH.NormalB [e|\i -> pteraTHArrayIndex table i|]+ <*> [d|+ table :: PteraTHArray Int [(Int, Int)]+ table = pteraTHArrayFromList $(TH.lift do length states - 1)+ $(TH.ListE <$> traverse stateHelpExp do toList states) |]- <*> pure [] where stateHelpExp st = let altItems = SRB.stateAltItems st in TH.ListE <$> forM altItems \altItem -> do let altNum :: Int = coerce do SRB.altItemAltNum altItem pos :: Int = coerce do SRB.altItemCurPos altItem- [e|($(TH.lift altNum), $(TH.lift pos))|]+ [e|($(TH.lift altNum) :: Int, $(TH.lift pos) :: Int)|] outputParserAltHelpFn :: TH.Name@@ -341,12 +342,12 @@ -> TH.Q TH.Dec outputParserAltHelpFn parserAltHelpFnName alts vars = TH.ValD do TH.VarP parserAltHelpFnName- <$> fmap TH.NormalB [e|- let arr = pteraTHArrayFromList $(TH.lift do length alts - 1)- $(TH.ListE <$> traverse altHelpExp do toList alts)- in \i -> pteraTHArrayIndex arr i+ <$> fmap TH.NormalB [e|\i -> pteraTHArrayIndex table i|]+ <*> [d|+ table :: PteraTHArray Int (StringLit, Maybe ())+ table = pteraTHArrayFromList $(TH.lift do length alts - 1)+ $(TH.ListE <$> traverse altHelpExp do toList alts) |]- <*> pure [] where altHelpExp alt = let v = AlignableArray.forceIndex vars do LAPEG.altVar alt