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
.