Safe Haskell | Safe-Infered |
---|
- data Parser t a
- data Token t = Token {
- tokenClass :: t
- tokenValue :: String
- (<|>) :: (Ord t, Ord a) => Parser t a -> Parser t a -> Parser t a
- (<~>) :: (Ord t, Ord a, Ord b) => Parser t a -> Parser t b -> Parser t (a, b)
- (==>) :: (Ord t, Ord a, Ord b) => Parser t a -> (a -> b) -> Parser t b
- nul :: (Ord t, Ord a) => Parser t a -> Parser t a
- ter :: Ord t => t -> Parser t String
- eps :: (Ord t, Ord a) => a -> Parser t a
- emp :: (Ord t, Ord a) => Parser t a
- derive :: Parser t a -> Token t -> Parser t a
- compact :: Parser t a -> Parser t a
- parseNull :: (Ord t, Ord a) => Parser t a -> Set a
- defaultCompactSteps :: Int
- compactNum :: Int -> Parser t a -> Parser t a
- deriveStepNum :: Int -> Parser t a -> Token t -> Parser t a
- runParseNum :: (Ord t, Ord a) => Int -> Parser t a -> [Token t] -> Set a
- runParseStagesNum :: (Ord t, Ord a) => Int -> Parser t a -> [Token t] -> [(Parser t a, Set a, [Token t])]
- runParseStages :: (Ord t, Ord a) => Parser t a -> [Token t] -> [(Parser t a, Set a, [Token t])]
- runParseLongestMatchNum :: (Ord t, Ord a) => Int -> Parser t a -> [Token t] -> Maybe (Int, Set a, [Token t])
- runParseLongestMatch :: (Ord t, Ord a) => Parser t a -> [Token t] -> Maybe (Int, Set a, [Token t])
- deriveStep :: Parser t a -> Token t -> Parser t a
- runParse :: (Ord t, Ord a) => Parser t a -> [Token t] -> Set a
- xsR :: () -> Parser String String
- xsL :: () -> Parser String String
- xsIn :: [Token String]
- parens :: () -> Parser String String
- parensIn :: [Token String]
- amb :: () -> Parser String String
- ambIn :: [Token String]
- sexp :: () -> Parser String String
- sexpIn :: [Token String]
- someStuff :: [Token String]
- someStuffG :: () -> Parser String String
Data Types
Represents both a formal context-free language and the
reduction of a member of that language to a value of type a
.
Token | |
|
Parser construction
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 t a -> Parser t aSource
A specified number of compactions.
deriveStepNum :: Int -> Parser t a -> Token t -> Parser t aSource
Derivation followed by a specified number of compactions.
runParseNum :: (Ord t, Ord a) => Int -> Parser t a -> [Token t] -> Set aSource
Parse using a specified number of intermediate compactions.
runParseStagesNum :: (Ord t, Ord a) => Int -> Parser t a -> [Token t] -> [(Parser t a, Set a, [Token t])]Source
runParseStages :: (Ord t, Ord a) => Parser t a -> [Token t] -> [(Parser t a, Set a, [Token t])]Source
runParseLongestMatchNum :: (Ord t, Ord a) => Int -> Parser t a -> [Token t] -> Maybe (Int, Set a, [Token t])Source
runParseLongestMatch :: (Ord t, Ord a) => Parser t a -> [Token t] -> Maybe (Int, Set a, [Token t])Source
deriveStep :: Parser t a -> Token t -> Parser t aSource
Derivation followed by the default number of compactions.
runParse :: (Ord t, Ord a) => Parser t a -> [Token t] -> 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]