Parsec (parser)
Parsec is a library for writing parsers written in the programming language Haskell.[3] It is based on higher-order parser combinators, so a complicated parser can be made out of many smaller ones.[4] It has been reimplemented in many other languages, including Erlang,[5] Elixir,[6] OCaml,[7] Racket,[8] F#,[9][10] and the imperative programming languages C#,[11] and Java.[12] Because a parser combinator-based program is generally slower than a parser generator-based program,[citation needed] Parsec is normally used for small domain-specific languages, while Happy is used for compilers such as the Glasgow Haskell Compiler (GHC).[13] Other Haskell parser combinator libraries that have been derived from Parsec include Megaparsec[14] and Attoparsec.[15] Parsec is free software released under the BSD-3-Clause license.[16] ExampleParsers written in Parsec start with simpler parsers, such as ones that recognize certain strings, and combine them to build a parser with more complicated behavior. For example,
Parser combinator libraries like Parsec provide utility functions to run the parsers on real values. A parser to recognize a single digit from a string can be split into two functions: one to create the parser, and a import Text.Parsec -- has general parsing utility functions
import Text.Parsec.Char -- contains specific basic combinators
type Parser = Stream s m Char => ParsecT s u m String
parser :: Parser
parser = string "hello"
main :: IO ()
main = print (parse parser "<test>" "hello world")
-- prints 'Right "hello"'
We define a parser = string "hello" <|> string "goodbye"
References
External links
|