{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LANGUAGE TypeFamilies #-}

-- | Examples for the use of Pinchot.
-- You wil want to look at the source code for the modules; examining
-- just the Haddocks shows you the code that the Template Haskell
-- ultimately generates.
--
-- In "Pinchot.Examples.Postal" is an example grammar for US postal
-- addresses.
--
-- "Pinchot.Examples.PostalAstAllRules" shows you how to use
-- 'allRulesToTypes' and 'earleyGrammar', while
-- "Pinchot.Examples.PostalAstRuleTree" shows you how to use
-- 'ruleTreeToTypes' and 'earleyGrammar'.
--
-- "Pinchot.Examples.AllEarleyGrammars" shows you how to use
-- 'allEarleyGrammars'.
--
-- Three executables are included in the @pinchot@ package.  To get
-- them, compile @pinchot@ with the @executables@ Cabal flag.
--
-- The @print-postal-grammar@ executable will pretty print the Haskell
-- source that results from applying 'earleyGrammar' to the 'postal'
-- grammar.
--
-- The @postal-parser@ executable takes as its first and sole argument
-- a string.  It parses the string using the 'postal' grammar and
-- pretty prints the resultin parses to standard output.
--
-- The @parrot@ executable takes as its first and sole argument a
-- string.  It parses the string using the 'postal' grammar.  For
-- every result that is returned (there might be zero, or one, or more
-- than one) the result is reduced to terminal symbols using the
-- 'terminals' function and the result is printed to standard output.

module Pinchot.Examples where

import Pinchot
import Pinchot.Examples.Postal