Copyright | © 2021–present Megaparsec contributors |
---|---|
License | FreeBSD |
Maintainer | Mark Karpov <markkarpov92@gmail.com> |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Binary-format number parsers.
Since: 9.2.0
Synopsis
- class BinaryChunk chunk where
- convertChunkBE :: (Bits a, Num a) => chunk -> a
- convertChunkLE :: (Bits a, Num a) => chunk -> a
- anyLE :: forall a e s m. (MonadParsec e s m, FiniteBits a, Num a, BinaryChunk (Tokens s)) => Maybe String -> m a
- anyBE :: forall a e s m. (MonadParsec e s m, FiniteBits a, Num a, BinaryChunk (Tokens s)) => Maybe String -> m a
- word8 :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word8
- word16le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word16
- word16be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word16
- word32le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word32
- word32be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word32
- word64le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word64
- word64be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word64
- int8 :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int8
- int16le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int16
- int16be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int16
- int32le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int32
- int32be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int32
- int64le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int64
- int64be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int64
Generic parsers
class BinaryChunk chunk where Source #
Data types that can be converted to little- or big- endian numbers.
convertChunkBE :: (Bits a, Num a) => chunk -> a Source #
convertChunkLE :: (Bits a, Num a) => chunk -> a Source #
Instances
BinaryChunk ByteString Source # | |
Defined in Text.Megaparsec.Byte.Binary convertChunkBE :: (Bits a, Num a) => ByteString -> a Source # convertChunkLE :: (Bits a, Num a) => ByteString -> a Source # | |
BinaryChunk ByteString Source # | |
Defined in Text.Megaparsec.Byte.Binary convertChunkBE :: (Bits a, Num a) => ByteString -> a Source # convertChunkLE :: (Bits a, Num a) => ByteString -> a Source # |
:: forall a e s m. (MonadParsec e s m, FiniteBits a, Num a, BinaryChunk (Tokens s)) | |
=> Maybe String | Label, if any |
-> m a |
Parse a little-endian number.
You may wish to call this with a visible type application:
number <- anyLE (Just "little-endian 32 bit word") @Word32
:: forall a e s m. (MonadParsec e s m, FiniteBits a, Num a, BinaryChunk (Tokens s)) | |
=> Maybe String | Label, if any |
-> m a |
Parse a big-endian number.
You may wish to call this with a visible type application:
number <- anyBE (Just "big-endian 32 bit word") @Word32
Parsing unsigned values
word8 :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word8 Source #
Parse a Word8
.
word16le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word16 Source #
Parse a little-endian Word16
.
word16be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word16 Source #
Parse a big-endian Word16
.
word32le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word32 Source #
Parse a little-endian Word32
.
word32be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word32 Source #
Parse a big-endian Word32
.
word64le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word64 Source #
Parse a little-endian Word64
.
word64be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Word64 Source #
Parse a big-endian Word64
.
Parsing signed values
int8 :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int8 Source #
Parse a Int8
.
int16le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int16 Source #
Parse a little-endian Int16
.
int16be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int16 Source #
Parse a big-endian Int16
.
int32le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int32 Source #
Parse a little-endian Int32
.
int32be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int32 Source #
Parse a big-endian Int32
.
int64le :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int64 Source #
Parse a little-endian Int64
.
int64be :: (MonadParsec e s m, BinaryChunk (Tokens s)) => m Int64 Source #
Parse a big-endian Int64
.