| Safe Haskell | Safe |
|---|---|
| Language | Haskell98 |
Data.Rewriting.Term.Parse
Synopsis
- fromString :: [String] -> String -> Either ParseError (Term String String)
- parse :: Stream s m Char => ParsecT s u m f -> ParsecT s u m v -> ParsecT s u m (Term f v)
- parseIO :: [String] -> String -> IO (Term String String)
- parseFun :: Stream s m Char => ParsecT s u m String -> ParsecT s u m String
- parseVar :: Stream s m Char => ParsecT s u m String -> [String] -> ParsecT s u m String
- parseWST :: Stream s m Char => [String] -> ParsecT s u m (Term String String)
Documentation
fromString :: [String] -> String -> Either ParseError (Term String String) Source #
fromString xs s parsers a term from the string s, where elements of xs
are considered as variables.
parse :: Stream s m Char => ParsecT s u m f -> ParsecT s u m v -> ParsecT s u m (Term f v) Source #
parse fun var is a parser for terms, where fun and var are
parsers for function symbols and variables, respectively. The var parser
has a higher priority than the fun parser. Hence, whenever var
succeeds, the token is treated as a variable.
Note that the user has to take care of handling trailing white space in
fun and var.
parseIO :: [String] -> String -> IO (Term String String) Source #
Like fromString, but the result is wrapped in the IO monad, making this
function useful for interactive testing.
>>>parseIO ["x","y"] "f(x,c)"Fun "f" [Var "x",Fun "c" []]
parseFun :: Stream s m Char => ParsecT s u m String -> ParsecT s u m String Source #
parseFun ident parses function symbols defined by ident.
parseVar :: Stream s m Char => ParsecT s u m String -> [String] -> ParsecT s u m String Source #
parseVar ident vars parses variables as defined by ident and with the
additional requirement that the result is a member of vars.
parseWST :: Stream s m Char => [String] -> ParsecT s u m (Term String String) Source #
parseWST xs is a parser for terms following the conventions of the
ancient ASCII input format of the termination competition: every Char that
is neither a white space (according to isSpace) nor one of '(',
')', or ',', is considered a letter. An identifier is a non-empty
sequence of letters and it is treated as variable iff it is contained in
xs.