{-# LANGUAGE MagicHash, UnboxedTuples, ScopedTypeVariables #-} module UU.Scanner.GenTokenParser where import GHC.Exts ( Int(..) ) import UU.Parsing.Interface(IsParser(pCostSym, pSym), (<$>)) import UU.Scanner.GenToken(GenToken(..)) import UU.Scanner.Position(Pos, noPos) pCostReserved' :: IsParser p (GenToken key tp val) => Int -> key -> p (GenToken key tp val) pCostReserved' :: forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => Int -> key -> p (GenToken key tp val) pCostReserved' (I# Int# c) key key = let tok :: GenToken key tp val tok = key -> Pos -> GenToken key tp val forall key tp val. key -> Pos -> GenToken key tp val Reserved key key Pos noPos in Int# -> GenToken key tp val -> GenToken key tp val -> p (GenToken key tp val) forall (p :: * -> *) s. IsParser p s => Int# -> s -> s -> p s pCostSym Int# c GenToken key tp val forall {tp} {val}. GenToken key tp val tok GenToken key tp val forall {tp} {val}. GenToken key tp val tok pReserved' :: IsParser p (GenToken key tp val) => key -> p (GenToken key tp val) pReserved' :: forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => key -> p (GenToken key tp val) pReserved' key key = let tok :: GenToken key tp val tok = key -> Pos -> GenToken key tp val forall key tp val. key -> Pos -> GenToken key tp val Reserved key key Pos noPos in GenToken key tp val -> p (GenToken key tp val) forall (p :: * -> *) s. IsParser p s => s -> p s pSym GenToken key tp val forall {tp} {val}. GenToken key tp val tok pCostValToken' :: IsParser p (GenToken key tp val) => Int -> tp -> val -> p (GenToken key tp val) pCostValToken' :: forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => Int -> tp -> val -> p (GenToken key tp val) pCostValToken' (I# Int# c) tp tp val val = let tok :: GenToken key tp val tok = tp -> val -> Pos -> GenToken key tp val forall key tp val. tp -> val -> Pos -> GenToken key tp val ValToken tp tp val val Pos noPos in Int# -> GenToken key tp val -> GenToken key tp val -> p (GenToken key tp val) forall (p :: * -> *) s. IsParser p s => Int# -> s -> s -> p s pCostSym Int# c GenToken key tp val forall {key}. GenToken key tp val tok GenToken key tp val forall {key}. GenToken key tp val tok pValToken' :: IsParser p (GenToken key tp val) => tp -> val -> p (GenToken key tp val) pValToken' :: forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => tp -> val -> p (GenToken key tp val) pValToken' tp tp val val = let tok :: GenToken key tp val tok = tp -> val -> Pos -> GenToken key tp val forall key tp val. tp -> val -> Pos -> GenToken key tp val ValToken tp tp val val Pos noPos in GenToken key tp val -> p (GenToken key tp val) forall (p :: * -> *) s. IsParser p s => s -> p s pSym GenToken key tp val forall {key}. GenToken key tp val tok pCostReserved :: IsParser p (GenToken key tp val) => Int -> key -> p Pos pCostReserved :: forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => Int -> key -> p Pos pCostReserved Int c key key = let getPos :: GenToken key tp val -> Pos getPos GenToken key tp val x = case GenToken key tp val x of Reserved key _ Pos p -> Pos p ValToken tp _ val _ Pos p -> Pos p in GenToken key tp val -> Pos forall {key} {tp} {val}. GenToken key tp val -> Pos getPos (GenToken key tp val -> Pos) -> p (GenToken key tp val) -> p Pos forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Int -> key -> p (GenToken key tp val) forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => Int -> key -> p (GenToken key tp val) pCostReserved' Int c key key pCostValToken :: IsParser p (GenToken key tp val) => Int -> tp -> val -> p (val,Pos) pCostValToken :: forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => Int -> tp -> val -> p (val, Pos) pCostValToken Int c tp tp val val = let getVal :: GenToken key tp a -> (a, Pos) getVal GenToken key tp a x = case GenToken key tp a x of ValToken tp _ a v Pos p -> (a v,Pos p) GenToken key tp a _ -> [Char] -> (a, Pos) forall a. HasCallStack => [Char] -> a error [Char] "pValToken: cannot get value of Reserved" in GenToken key tp val -> (val, Pos) forall {key} {tp} {a}. GenToken key tp a -> (a, Pos) getVal (GenToken key tp val -> (val, Pos)) -> p (GenToken key tp val) -> p (val, Pos) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Int -> tp -> val -> p (GenToken key tp val) forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => Int -> tp -> val -> p (GenToken key tp val) pCostValToken' Int c tp tp val val pReserved :: IsParser p (GenToken key tp val) => key -> p Pos pReserved :: forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => key -> p Pos pReserved = Int -> key -> p Pos forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => Int -> key -> p Pos pCostReserved Int 5 pValToken :: IsParser p (GenToken key tp val) => tp -> val -> p (val,Pos) pValToken :: forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => tp -> val -> p (val, Pos) pValToken = Int -> tp -> val -> p (val, Pos) forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => Int -> tp -> val -> p (val, Pos) pCostValToken Int 5 pValTokenNoPos :: IsParser p (GenToken key tp val) => tp -> val -> p val pValTokenNoPos :: forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => tp -> val -> p val pValTokenNoPos tp tp val val = (val, Pos) -> val forall a b. (a, b) -> a fst ((val, Pos) -> val) -> p (val, Pos) -> p val forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> tp -> val -> p (val, Pos) forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => tp -> val -> p (val, Pos) pValToken tp tp val val