module Package.C.Triple.Parse ( parseTriple , parseTripleIO ) where import CPkgPrelude import Package.C.Error import Package.C.Triple.Type import Text.Megaparsec import Text.Megaparsec.Char type Parser = Parsec Void String parseTripleIO :: MonadIO m => String -> m TargetTriple parseTripleIO :: forall (m :: * -> *). MonadIO m => [Char] -> m TargetTriple parseTripleIO = Parser TargetTriple -> [Char] -> m TargetTriple forall (m :: * -> *) a. MonadIO m => Parser a -> [Char] -> m a parseIO Parser TargetTriple parseTriple parseIO :: MonadIO m => Parser a -> String -> m a parseIO :: forall (m :: * -> *) a. MonadIO m => Parser a -> [Char] -> m a parseIO Parser a p [Char] str = case Parser a -> [Char] -> [Char] -> Either (ParseErrorBundle [Char] Void) a forall e s a. Parsec e s a -> [Char] -> s -> Either (ParseErrorBundle s e) a parse Parser a p [Char] "(none)" [Char] str of Right a x -> a -> m a forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure a x Left ParseErrorBundle [Char] Void err -> [Char] -> m a forall (m :: * -> *) a. MonadIO m => [Char] -> m a parseErr (ParseErrorBundle [Char] Void -> [Char] forall s e. (VisualStream s, TraversableStream s, ShowErrorComponent e) => ParseErrorBundle s e -> [Char] errorBundlePretty ParseErrorBundle [Char] Void err) parseTriple :: Parser TargetTriple parseTriple :: Parser TargetTriple parseTriple = Arch -> Maybe Manufacturer -> OS -> Maybe ABI -> TargetTriple TargetTriple (Arch -> Maybe Manufacturer -> OS -> Maybe ABI -> TargetTriple) -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity (Maybe Manufacturer -> OS -> Maybe ABI -> TargetTriple) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> ParsecT Void [Char] Identity Arch parseArch ParsecT Void [Char] Identity (Maybe Manufacturer -> OS -> Maybe ABI -> TargetTriple) -> ParsecT Void [Char] Identity (Maybe Manufacturer) -> ParsecT Void [Char] Identity (OS -> Maybe ABI -> TargetTriple) forall a b. ParsecT Void [Char] Identity (a -> b) -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT Void [Char] Identity Manufacturer -> ParsecT Void [Char] Identity (Maybe Manufacturer) forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a) optional (ParsecT Void [Char] Identity Manufacturer -> ParsecT Void [Char] Identity Manufacturer forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall e s (m :: * -> *) a. MonadParsec e s m => m a -> m a try (Token [Char] -> ParsecT Void [Char] Identity (Token [Char]) forall e s (m :: * -> *). (MonadParsec e s m, Token s ~ Char) => Token s -> m (Token s) char Char Token [Char] '-' ParsecT Void [Char] Identity Char -> ParsecT Void [Char] Identity Manufacturer -> ParsecT Void [Char] Identity Manufacturer forall a b. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity b -> ParsecT Void [Char] Identity b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> ParsecT Void [Char] Identity Manufacturer parseManufacturer)) ParsecT Void [Char] Identity (OS -> Maybe ABI -> TargetTriple) -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity (Maybe ABI -> TargetTriple) forall a b. ParsecT Void [Char] Identity (a -> b) -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (Token [Char] -> ParsecT Void [Char] Identity (Token [Char]) forall e s (m :: * -> *). (MonadParsec e s m, Token s ~ Char) => Token s -> m (Token s) char Char Token [Char] '-' ParsecT Void [Char] Identity Char -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a b. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity b -> ParsecT Void [Char] Identity b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> ParsecT Void [Char] Identity OS parseOS) ParsecT Void [Char] Identity (Maybe ABI -> TargetTriple) -> ParsecT Void [Char] Identity (Maybe ABI) -> Parser TargetTriple forall a b. ParsecT Void [Char] Identity (a -> b) -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity (Maybe ABI) forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a) optional (Token [Char] -> ParsecT Void [Char] Identity (Token [Char]) forall e s (m :: * -> *). (MonadParsec e s m, Token s ~ Char) => Token s -> m (Token s) char Char Token [Char] '-' ParsecT Void [Char] Identity Char -> ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI forall a b. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity b -> ParsecT Void [Char] Identity b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> ParsecT Void [Char] Identity ABI parseABI) tryString :: String -> Parser String tryString :: [Char] -> Parser [Char] tryString = Parser [Char] -> Parser [Char] forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall e s (m :: * -> *) a. MonadParsec e s m => m a -> m a try (Parser [Char] -> Parser [Char]) -> ([Char] -> Parser [Char]) -> [Char] -> Parser [Char] forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> Parser [Char] Tokens [Char] -> ParsecT Void [Char] Identity (Tokens [Char]) forall e s (m :: * -> *). MonadParsec e s m => Tokens s -> m (Tokens s) string parseArch :: Parser Arch parseArch :: ParsecT Void [Char] Identity Arch parseArch = ([Char] -> Parser [Char] tryString [Char] "x86_64" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch X64) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "armv7l" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch Arm) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "arm" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch Arm) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "aarch64" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch AArch) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "riscv64" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch RISCV64) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "powerpc64le" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch PowerPC64le) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "powerpc64" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch PowerPC64) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "powerpc" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch PowerPC) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "sparc64" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch Sparc64) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "s390x" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch S390x) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "alpha" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch Alpha) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "m68k" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch M68k) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "mipsisa32r6el" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch MipsIsa32r6El) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "mipsisa32r6" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch MipsIsa32r6) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "mipsisa64r6el" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch MipsIsa64r6El) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "mipsisa64r6" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch MipsIsa64r6) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "mips64el" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch Mips64El) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "mips64" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch Mips64) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "mipsel" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch MipsEl) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "mips" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch Mips) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "i686" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch X86) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "sh4" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch SH4) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "hppa64" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch HPPA64) ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch -> ParsecT Void [Char] Identity Arch forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "hppa" Parser [Char] -> Arch -> ParsecT Void [Char] Identity Arch forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Arch HPPA) parseManufacturer :: Parser Manufacturer parseManufacturer :: ParsecT Void [Char] Identity Manufacturer parseManufacturer = ([Char] -> Parser [Char] tryString [Char] "unknown" Parser [Char] -> Manufacturer -> ParsecT Void [Char] Identity Manufacturer forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Manufacturer Unknown) ParsecT Void [Char] Identity Manufacturer -> ParsecT Void [Char] Identity Manufacturer -> ParsecT Void [Char] Identity Manufacturer forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "apple" Parser [Char] -> Manufacturer -> ParsecT Void [Char] Identity Manufacturer forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Manufacturer Apple) ParsecT Void [Char] Identity Manufacturer -> ParsecT Void [Char] Identity Manufacturer -> ParsecT Void [Char] Identity Manufacturer forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "ibm" Parser [Char] -> Manufacturer -> ParsecT Void [Char] Identity Manufacturer forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Manufacturer IBM) ParsecT Void [Char] Identity Manufacturer -> ParsecT Void [Char] Identity Manufacturer -> ParsecT Void [Char] Identity Manufacturer forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "pc" Parser [Char] -> Manufacturer -> ParsecT Void [Char] Identity Manufacturer forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> Manufacturer PC) parseOS :: Parser OS parseOS :: ParsecT Void [Char] Identity OS parseOS = ([Char] -> Parser [Char] tryString [Char] "darwin" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS Darwin) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "dragonfly" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS Dragonfly) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "freebsd" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS FreeBSD) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "linux" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS Linux) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "openbsd" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS OpenBSD) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "netbsd" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS NetBSD) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "solaris" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS Solaris) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "w64" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS Windows) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "redox" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS Redox) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "haiku" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS Haiku) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "ios" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS IOS) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "aix" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS AIX) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "hurd" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS Hurd) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "android" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS Android) ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS -> ParsecT Void [Char] Identity OS forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "none" Parser [Char] -> OS -> ParsecT Void [Char] Identity OS forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> OS NoOs) parseABI :: Parser ABI parseABI :: ParsecT Void [Char] Identity ABI parseABI = ([Char] -> Parser [Char] tryString [Char] "gnueabihf" Parser [Char] -> ABI -> ParsecT Void [Char] Identity ABI forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> ABI GNUeabihf) ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "gnuabi64" Parser [Char] -> ABI -> ParsecT Void [Char] Identity ABI forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> ABI GNUabi64) ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "gnueabi" Parser [Char] -> ABI -> ParsecT Void [Char] Identity ABI forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> ABI GNUeabi) ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "gnuspe" Parser [Char] -> ABI -> ParsecT Void [Char] Identity ABI forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> ABI GNUspe) ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "gnu" Parser [Char] -> ABI -> ParsecT Void [Char] Identity ABI forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> ABI GNU) ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI -> ParsecT Void [Char] Identity ABI forall a. ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a -> ParsecT Void [Char] Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ([Char] -> Parser [Char] tryString [Char] "mingw32" Parser [Char] -> ABI -> ParsecT Void [Char] Identity ABI forall (f :: * -> *) a b. Functor f => f a -> b -> f b $> ABI MinGw)