- data Parser a
- data Token = Token {
- tokenClass :: String
- tokenValue :: String
- (<|>) :: ResultType a => Parser a -> Parser a -> Parser a
- (<~>) :: (ResultType a, ResultType b) => Parser a -> Parser b -> Parser (a, b)
- (==>) :: (ResultType a, ResultType b) => Parser a -> (a -> b) -> Parser b
- (==>|) :: (ResultType a, ResultType b) => Parser a -> (Set a -> Set b) -> Parser b
- nul :: ResultType a => Parser a -> Parser a
- pzip :: (ResultType a, ResultType b) => Parser a -> Context a b -> Parser b
- ter :: String -> Parser String
- eps :: ResultType a => a -> Parser a
- epsM :: ResultType a => Set a -> Parser a
- emp :: ResultType a => Parser a
- derive :: Parser a -> Token -> Parser a
- compact :: Parser a -> Parser a
- parseNull :: ResultType a => Parser a -> Set a
- defaultCompactSteps :: Int
- compactNum :: Int -> Parser a -> Parser a
- deriveStepNum :: Int -> Parser a -> Token -> Parser a
- runParseNum :: ResultType a => Int -> Parser a -> [Token] -> Set a
- deriveStep :: Parser a -> Token -> Parser a
- runParse :: ResultType a => Parser a -> [Token] -> Set a
- xsR :: () -> Parser String
- xsL :: () -> Parser String
- xsIn :: [Token]
- parens :: () -> Parser String
- parensIn :: [Token]
- amb :: () -> Parser String
- ambIn :: [Token]
- sexp :: () -> Parser String
- sexpIn :: [Token]
Data Types
Represents both a formal context-free language and the
reduction of a member of that language to a value of type a
.
The input type for parsing. For example the parser:
(ter "x")
will parse:
(Token "x" "foo")
into:
(eps "foo")
Token | |
|
Parser construction
(==>|) :: (ResultType a, ResultType b) => Parser a -> (Set a -> Set b) -> Parser bSource
Set generalized version of ==>
.
pzip :: (ResultType a, ResultType b) => Parser a -> Context a b -> Parser bSource
One-hole-context focus.
Parser computation steps
Full parsing and result extraction
defaultCompactSteps :: IntSource
The number of compact steps that usually keeps a parser constant in size while parsing.
compactNum :: Int -> Parser a -> Parser aSource
A specified number of compactions.
deriveStepNum :: Int -> Parser a -> Token -> Parser aSource
Derivation followed by specified number of compactions.
runParseNum :: ResultType a => Int -> Parser a -> [Token] -> Set aSource
Parse using a specified number of intermediate compactions.
deriveStep :: Parser a -> Token -> Parser aSource
Derivation followed by the default number of compactions.
runParse :: ResultType a => Parser a -> [Token] -> Set aSource
Parse using the default number of intermediate compactions. This is the main parsing function. Examples:
let e = ter "num" <|> e <~> ter "+" <~> e ==> (\(x1,(o,x2)) -> "(" ++ x1 ++ o ++ x2 ++ ")") in runParse e [Token "num" "1", Token "+" "+", Token "num" 3", Token "+" "+", Token "num" "5"]
evaluates to:
Set.fromList ["((1+3)+5)", "(1+(3+5))"]
let e = ter "num" ==> read <|> e <~> ter "+" <~> e ==> (\(x1,(_,x2)) -> x1 + x2) in runParse e [Token "num" "1", Token "+" "+", Token "num" 3", Token "+" "+", Token "num" "5"]
evaluates to:
Set.fromList [9]