{-# LANGUAGE MagicHash, UnboxedTuples, ScopedTypeVariables #-} module UU.Scanner.GenTokenParser where import GHC.Base 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' :: Int -> key -> p (GenToken key tp val) pCostReserved' (I# c :: Int# c) key :: 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' :: key -> p (GenToken key tp val) pReserved' key :: 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' :: Int -> tp -> val -> p (GenToken key tp val) pCostValToken' (I# c :: Int# c) tp :: tp tp val :: 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' :: tp -> val -> p (GenToken key tp val) pValToken' tp :: tp tp val :: 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 :: Int -> key -> p Pos pCostReserved c :: Int c key :: key key = let getPos :: GenToken key tp val -> Pos getPos x :: GenToken key tp val x = case GenToken key tp val x of Reserved _ p :: Pos p -> Pos p ValToken _ _ p :: 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 :: Int -> tp -> val -> p (val, Pos) pCostValToken c :: Int c tp :: tp tp val :: val val = let getVal :: GenToken key tp a -> (a, Pos) getVal x :: GenToken key tp a x = case GenToken key tp a x of ValToken _ v :: a v p :: Pos p -> (a v,Pos p) _ -> [Char] -> (a, Pos) forall a. HasCallStack => [Char] -> a error "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 :: key -> p Pos pReserved = Int -> key -> p Pos forall (p :: * -> *) key tp val. IsParser p (GenToken key tp val) => Int -> key -> p Pos pCostReserved 5 pValToken :: IsParser p (GenToken key tp val) => tp -> val -> p (val,Pos) pValToken :: 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 5 pValTokenNoPos :: IsParser p (GenToken key tp val) => tp -> val -> p val pValTokenNoPos :: tp -> val -> p val pValTokenNoPos tp :: tp tp val :: 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