{-# OPTIONS --guardedness #-}

module index where

-- The core design decisions behind agdarsec are detailed in
-- https://gallais.github.io/pdf/agdarsec18.pdf

-- We have a simplified frontend with ready made default choices:

import Text.Parser

-- Otherwise you probably want to start with the main types:

import Text.Parser.Types

-- You can see the parser combinators themselves in:

import Text.Parser.Combinators
import Text.Parser.Combinators.Numbers
import Text.Parser.Combinators.Char

-- And even a concrete instance in:

import Text.Parser.JSON

-- We have some ready-to-use monads for parsing in:

import Text.Parser.Monad

-- We have a small lexer library

import Text.Lexer

-- We have some fully worked-out examples in:

import Expr
import STLC
import Parentheses
import RegExp
import NList
import SExp
import Vec
import Matrix

-- And even a parser returning a large type

import Large

-- The key ideas behind the implementation details are largely contained in

import Induction.Nat.Strong
import Text.Parser.Success