License | BSD-3-Clause |
---|---|
Maintainer | Jamie Willis |
Stability | unstable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
This module exposes all of the required functionality found in the internals of the library out to the user API.
Since: 0.1.0.0
Synopsis
- module Parsley.Internal.Core
- data Reg (r :: Type) a
- pure :: Defunc a -> Parser a
- satisfy :: Defunc (Char -> Bool) -> Parser Char
- conditional :: [(Defunc (a -> Bool), Parser b)] -> Parser a -> Parser b -> Parser b
- (<*>) :: Parser (a -> b) -> Parser a -> Parser b
- (<*) :: Parser a -> Parser b -> Parser a
- (*>) :: Parser a -> Parser b -> Parser b
- empty :: Parser a
- (<|>) :: Parser a -> Parser a -> Parser a
- lookAhead :: Parser a -> Parser a
- notFollowedBy :: Parser a -> Parser ()
- try :: Parser a -> Parser a
- branch :: Parser (Either a b) -> Parser (a -> c) -> Parser (b -> c) -> Parser c
- loop :: Parser () -> Parser a -> Parser a
- newRegister :: Parser a -> (forall r. Reg r a -> Parser b) -> Parser b
- get :: Reg r a -> Parser a
- put :: Reg r a -> Parser a -> Parser ()
- line :: Parser Int
- col :: Parser Int
- debug :: String -> Parser a -> Parser a
- class Quapplicative q where
- data WQ a
- type Code a = Code Q a
- class Trace where
- class (InputPrep input, Ops input) => Input input
- parse :: (Trace, Input input) => Parser a -> Code (input -> Maybe a)
- parseWithOpts :: (Trace, Input input) => Flags -> Parser a -> Code (input -> Maybe a)
Documentation
module Parsley.Internal.Core
data Reg (r :: Type) a Source #
This is an opaque representation of a parsing register. It cannot be manipulated as a user, and the
type parameter r
is used to ensure that it cannot leak out of the scope it has been created in.
It is the abstracted representation of a runtime storage location.
Since: 0.1.0.0
notFollowedBy :: Parser a -> Parser () Source #
class Quapplicative q where Source #
This class is used to manipulate the representations of both user-land values and defunctionalised representations. It can be used to construct these values as well as extract their underlying value and code representation on demand.
It is named after the Applicative
class, with the Q
standing for "code". The (
operator
is analogous to >*<
)(<*>)
and makeQ
analogous to pure
.
Since: 0.1.0.0
makeQ :: a -> Code a -> q a Source #
Combines a value with its representation to build one of the representation types.
Since: 0.1.0.0
Extracts the regular value out of the representation.
Since: 0.1.0.0
_code :: q a -> Code a Source #
Extracts the representation of the value as code.
Since: 0.1.0.0
(>*<) :: q (a -> b) -> q a -> q b infixl 9 Source #
Pronounced "quapp", this can be used to combine the code of a function with the code of a value.
const5 = makeQ const [||const||] >*< makeQ 5 [||5||]
is the same as saying
const5 = makeQ (const 5) [||const 5||]
It is more idiomatically found as the output to the IdiomsPlugin
.
Since: 0.1.0.0
Instances
Quapplicative WQ Source # | This instance is used to manipulate values of Since: 0.1.0.0 |
Quapplicative Defunc Source # | This instance is used to manipulate values of Since: 0.1.0.0 |
Pronounced "with code", this datatype is the representation for user-land values. It pairs
a value up with its representation as Haskell Code
. It should be manipulated using
Quapplicative
.
Since: 0.1.0.0
type Code a = Code Q a Source #
A type alias for typed template haskell code, which represents the Haskell AST for a given value.
Since: 0.1.0.0
Used to produce debug output within parsley.
Since: 0.1.0.0
class (InputPrep input, Ops input) => Input input Source #
This class is exposed to parsley itself and is used to denote which types may be used as input for a parser.
Since: 0.1.0.0
Instances
Input ByteString Source # | |
Defined in Parsley.Internal.Backend.Machine | |
Input ByteString Source # | |
Defined in Parsley.Internal.Backend.Machine | |
Input CharList Source # | |
Defined in Parsley.Internal.Backend.Machine | |
Input Stream Source # | |
Defined in Parsley.Internal.Backend.Machine | |
Input Text16 Source # | |
Defined in Parsley.Internal.Backend.Machine | |
Input Text Source # | |
Defined in Parsley.Internal.Backend.Machine | |
Input String Source # | |
Defined in Parsley.Internal.Backend.Machine | |
Input (UArray Int Char) Source # | |
Defined in Parsley.Internal.Backend.Machine |