{- | A simple, concrete instance of 'Cfg' that can be parsed from source. The grammar of Bnf source is: @ grammar ::= (production)+. production ::= LOWER_CASE_STRING "::=" right_hand_sides ".". right_hand_sides ::= right_hand_side ("|" right_hand_side)*. right_hand_side ::= term*. term ::= UPPER_CASE_STRING | LOWER_CASE_STRING. @ where /*/ means zero or more repetitions and /+/ means one or more repetitions. Terminals are indicated by strings of upper-case characters and underscores; nonterminals by strings of lower-case characters and underscores. Quoted strings are literal tokens. -} module Data.Cfg.Bnf ( Grammar(..), bnf, parse ) where import Data.Cfg.Bnf.Parser import Data.Cfg.Bnf.QQ import Data.Cfg.Bnf.Syntax