{"size": 834, "ext": "scrbl", "max_stars_repo_path": "megaparsack-doc/scribblings/megaparsack.scrbl", "max_stars_repo_name": "samdphillips/megaparsack", "max_stars_repo_stars_event_min_datetime": "2018-07-26T07:35:27.000Z", "max_stars_repo_stars_event_max_datetime": "2018-07-26T07:35:27.000Z", "max_issues_repo_path": "megaparsack-doc/scribblings/megaparsack.scrbl", "max_issues_repo_name": "Syntacticlosure/megaparsack", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "megaparsack-doc/scribblings/megaparsack.scrbl", "max_forks_repo_name": "Syntacticlosure/megaparsack", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": 1, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 36.2608695652, "max_line_length": 102, "alphanum_fraction": 0.7997601918}
#lang scribble/manual

@(require (for-label data/monad))

@title{Megaparsack: Practical Parser Combinators}

@author{@author+email["Alexis King" "lexi.lambda@gmail.com"]}

@defmodule[megaparsack]

Megaparsack is a @emph{parser combinator} library: a composable set of simple parsers that can be used
to create larger parsing systems that can parse arbitrary grammars, including context-sensitive ones.
Megaparsack uses the @racket[gen:monad] generic interface to provide a uniform interface to sequence
and compose different parsers using a base set of primitives.

@table-of-contents[]

@include-section["megaparsack/basics.scrbl"]
@include-section["megaparsack/choice.scrbl"]
@include-section["megaparsack/syntax.scrbl"]
@include-section["megaparsack/reference.scrbl"]
@include-section["megaparsack/differences-from-parsack.scrbl"]
