-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Attempto Controlled English parser and printer
--   
--   Attempto Controlled English is a formally defined unambiguous language
--   which is a subset of the English language. This package provides a
--   tokenizer, parser and printer for that language. Specifically, it
--   implements the declarative mood and the interrogative mood. The
--   imperative mood is omitted at this time. Interpretation rules,
--   conversion to FoL, or any further analysis is not implemented by this
--   library.
@package ace
@version 0.6


-- | Pretty printing types and classes.
module ACE.Types.Pretty

-- | Pretty print a syntax tree node to a string.
class Pretty p
pretty :: Pretty p => p -> Builder

-- | Prints no string if nothing.
instance ACE.Types.Pretty.Pretty a => ACE.Types.Pretty.Pretty (GHC.Base.Maybe a)


-- | Types for the syntax tree.
module ACE.Types.Syntax

-- | Specifications consist of a sentence coordination followed by a period
--   and optionally one ore more subsequent specifications.
data Specification
Specification :: !SentenceCoord -> !(Maybe Specification) -> Specification

-- | Sentences can be coordinated by <tt>and</tt> and <tt>or</tt>.
--   <tt>And</tt> refers to the logical conjunction, while <tt>or</tt>
--   de-notes the logical disjunction. The logical conjunction has a higher
--   precedence than the disjunction.
--   
--   Both connectors are right-associative. The expression
--   
--   A or B and C or D
--   
--   is therefore ordered like
--   
--   A ∨ ((B ∧ C) ∨ D)
--   
--   To enable more combinations, we have introduced comma-and and
--   comma-or. These expressions reverse the order of precedence. To
--   achieve the order
--   
--   A ∨ (B ∧ (C ∨ D))
--   
--   we can write
--   
--   A, or B, and C or D
--   
--   A sentence coordination in general consists of a sentence coordination
--   of a lower level (thus ensuring right-associativity) optionally
--   followed by the respective connector and a sentence coordination of
--   the same level.
data SentenceCoord
SentenceCoord :: !SentenceCoord_1 -> !(Maybe SentenceCoord) -> SentenceCoord
data SentenceCoord_1
SentenceCoord_1 :: !SentenceCoord_2 -> !(Maybe SentenceCoord_1) -> SentenceCoord_1
data SentenceCoord_2
SentenceCoord_2 :: !SentenceCoord_3 -> !(Maybe SentenceCoord_2) -> SentenceCoord_2
data SentenceCoord_3
SentenceCoord_3 :: !TopicalizedSentence -> !(Maybe SentenceCoord_3) -> SentenceCoord_3

-- | A topicalized sentence can start with an existential topic or a
--   universal topic. It needs, however, not be topicalized at all but can
--   just be an ordinary composite sentence.
data TopicalizedSentence

-- | Example: "There is a card such that the code of the card is valid."
TopicalizedSentenceExistential :: !ExistentialTopic -> !(Maybe SentenceCoord) -> TopicalizedSentence

-- | Example: "For every code there is a card such that the code belongs to
--   it."
TopicalizedSentenceUniversal :: !UniversalTopic -> !SentenceCoord -> TopicalizedSentence

-- | Example: "Homer is a man."
TopicalizedSentenceComposite :: !CompositeSentence -> TopicalizedSentence
data UniversalTopic
UniversalTopic :: !UniversalGlobalQuantor -> !N' -> UniversalTopic
data CompositeSentence
CompositeSentenceCond :: !ConditionalSentence -> CompositeSentence
CompositeSentenceNeg :: !NegatedSentence -> CompositeSentence
CompositeSentence :: !Sentence -> CompositeSentence
data ConditionalSentence
ConditionalSentence :: !SentenceCoord -> !SentenceCoord -> ConditionalSentence
data NegatedSentence
NegatedSentence :: !SentenceCoord -> NegatedSentence
data Sentence
Sentence :: !NPCoord -> !VPCoord -> Sentence
data ExistentialTopic
ExistentialTopic :: !ExistentialGlobalQuantor -> !NPCoord -> ExistentialTopic
data NPCoord
NPCoordDistributed :: !DistributiveMarker -> !UnmarkedNPCoord -> NPCoord
NPCoordUnmarked :: !UnmarkedNPCoord -> NPCoord
data UnmarkedNPCoord
UnmarkedNPCoord :: !NP -> !(Maybe UnmarkedNPCoord) -> UnmarkedNPCoord

-- | Modified noun.
data N'
N' :: !(Maybe AdjectiveCoord) -> !N -> !(Maybe ApposCoord) -> !(Maybe NPCoord) -> !(Maybe RelativeClauseCoord) -> N'

-- | Noun-phrase.
data NP
NP :: !Specifier -> !N' -> NP
NPPro :: !Pronoun -> NP
NPProper :: !ProperName -> NP
NPVar :: !Variable -> NP

-- | A noun.
data N
N :: !Text -> N
data PP
PP :: !Preposition -> !NPCoord -> PP
data Preposition
Preposition :: !Text -> Preposition
data ApposCoord
ApposCoord :: !Apposition -> !(Maybe ApposCoord) -> ApposCoord
data Apposition
AppositionVar :: !Variable -> Apposition
AppositionQuote :: !Quotation -> Apposition
data Quotation
Quotation :: !Text -> Quotation
data Variable
Variable :: !Text -> Variable
data RelativeClauseCoord
RelativeClauseCoord :: !RelativeClause -> !(Maybe (Coord, RelativeClauseCoord)) -> RelativeClauseCoord
data PossessiveNPCoord
PossessiveNPCoordGen :: !GenitiveNPCoord -> PossessiveNPCoord
PossessiveNPCoordPronoun :: !PossessivePronounCoord -> PossessiveNPCoord
data GenitiveNPCoord
GenitiveNPCoord :: !GenitiveSpecifier -> !GenitiveN' -> !GenitiveTail -> GenitiveNPCoord
GenitiveNPCoordName :: !ProperName -> !GenitiveTail -> GenitiveNPCoord
data ProperName
ProperName :: !Text -> ProperName
data PossessivePronounCoord
PossessivePronounCoord :: !PossessivePronoun -> !(Maybe PossessivePronounCoord) -> PossessivePronounCoord
data GenitiveTail
GenitiveTailSaxonTail :: !SaxonGenitiveTail -> GenitiveTail
GenitiveTailCoordtail :: !GenitiveCoordTail -> GenitiveTail
data GenitiveCoordTail
GenitiveCoordTail :: !GenitiveNPCoord -> GenitiveCoordTail
data SaxonGenitiveTail
SaxonGenitiveTail :: !SaxonGenitiveMarker -> !(Maybe (GenitiveN', SaxonGenitiveTail)) -> SaxonGenitiveTail
data RelativeClause
RelativeClauseThat :: !VPCoord -> RelativeClause
RelativeClauseNP :: !NPCoord -> !VPCoord -> RelativeClause
RelativeClauseThatNPVP :: !NPCoord -> !VPCoord -> RelativeClause
RelativeClauseNPVP :: !NPCoord -> !NPCoord -> !VPCoord -> RelativeClause
RelativeClausePP :: !PP -> !NPCoord -> !VPCoord -> RelativeClause
data VPCoord
VPCoord' :: !VP -> !Coord -> !VPCoord -> VPCoord
VPCoordVP :: !VP -> VPCoord
data GenitiveSpecifier
GenitiveSpecifierD :: !Determiner -> GenitiveSpecifier
GenitiveSpecifierPPC :: !PossessivePronounCoord -> GenitiveSpecifier
GenitiveSpecifierN :: !Integer -> GenitiveSpecifier
data GenitiveN'
GenitiveN' :: !(Maybe AdjectiveCoord) -> !N -> !(Maybe ApposCoord) -> GenitiveN'
data VP
VP :: !V' -> VP
VPNeg :: !Copula -> !V' -> VP
data V'
V' :: !(Maybe AdverbCoord) -> !ComplV -> ![VModifier] -> V'
data AdverbCoord
AdverbCoord :: !Adverb -> !(Maybe AdverbCoord) -> AdverbCoord
data ComplV
ComplVIV :: !IntransitiveV -> ComplV
ComplVPI :: !PhrasalIntransitiveV -> !PhrasalParticle -> ComplV
ComplVTV :: !TransitiveV -> !Compl -> ComplV
ComplVPV :: !PhrasalTransitiveV -> !PhrasalParticle -> !Compl -> ComplV
ComplVPV' :: !PhrasalTransitiveV -> !Compl -> !PhrasalParticle -> ComplV
ComplVDisV :: !DistransitiveV -> !Compl -> !Compl -> ComplV
ComplVPDV :: !PhrasalDistransitiveV -> !Compl -> !PhrasalParticle -> !Compl -> ComplV
ComplVCopula :: !Copula -> !CopulaCompl -> ComplV
data PhrasalTransitiveV
PhrasalTransitiveV :: !Text -> PhrasalTransitiveV
data PhrasalDistransitiveV
PhrasalDistransitiveV :: !Text -> PhrasalDistransitiveV
data CopulaCompl
CopulaComplAPC :: !APCoord -> CopulaCompl
CopulaComplNPC :: !NPCoord -> CopulaCompl
CopulaComplPP :: !PP -> CopulaCompl
data APCoord
APCoordAnd :: !APgrad -> !APCoord -> APCoord
APCoord :: !APgrad -> APCoord
data APgrad
APgradAPThan :: !AP -> !NPCoord -> APgrad
APgradAP :: !AP -> APgrad
data AP
APIntrans :: !IntransitiveAdjective -> AP
APTrans :: !TransitiveAdjective -> !PP -> AP
data TransitiveAdjective
TransitiveAdjective :: !Text -> TransitiveAdjective
data Compl
ComplNP :: !NPCoord -> Compl
ComplPP :: !PP -> Compl
data PhrasalIntransitiveV
PhrasalIntransitiveV :: !Text -> PhrasalIntransitiveV
data PhrasalParticle
PhrasalParticle :: !Text -> PhrasalParticle
data IntransitiveV
IntransitiveV :: !Text -> IntransitiveV
data TransitiveV
TransitiveV :: !Text -> TransitiveV
data DistransitiveV
DistransitiveV :: !Text -> DistransitiveV
data IntransitiveAdjective
IntransitiveAdjective :: !Text -> IntransitiveAdjective
data VModifier
VModifierVC :: !AdverbCoord -> VModifier
VModifierPP :: !PP -> VModifier
VModifierAVPP :: !AdverbialPP -> VModifier
data AdverbialPP
AdverbialPP :: !Preposition -> !AdverbCoord -> AdverbialPP
data Adverb
Adverb :: !Text -> Adverb
data Specifier
SpecifyDeterminer :: !Determiner -> Specifier
SpecifyPossessive :: !PossessiveNPCoord -> Specifier
SpecifyNumberP :: !NumberP -> Specifier
data AdjectiveCoord
AdjectiveCoord :: !IntransitiveAdjective -> !(Maybe AdjectiveCoord) -> AdjectiveCoord
data NumberP
NumberP :: !(Maybe GeneralizedQuantor) -> !Integer -> NumberP
data ExistentialGlobalQuantor
ExistentialGlobalQuantor :: !Copula -> ExistentialGlobalQuantor
data ExistentialGlobalQuestionQuantor
ExistentialGlobalQuestionQuantor :: !Copula -> ExistentialGlobalQuestionQuantor
data Aux

-- | "do"
Do :: Aux

-- | "does"
Does :: Aux
data Coord

-- | "and"
And :: Coord

-- | "or"
Or :: Coord
data Copula

-- | "is"
Is :: Copula

-- | "are"
Are :: Copula
data Determiner

-- | "the"
The :: Determiner

-- | "a"
A :: Determiner

-- | "an"
An :: Determiner

-- | "some"
Some :: Determiner

-- | "no"
No :: Determiner

-- | "every" / "each"
EveryEach :: Determiner

-- | "all"
All :: Determiner

-- | "not every"
NotEvery :: Determiner

-- | "not each"
NotEach :: Determiner

-- | "not all"
NotAll :: Determiner

-- | "which"
Which :: Determiner
data DistributiveGlobalQuantor

-- | "for each of"
ForEachOf :: DistributiveGlobalQuantor
data DistributiveMarker

-- | "each of"
EachOf :: DistributiveMarker
data GeneralizedQuantor

-- | "at most"
AtMost :: GeneralizedQuantor

-- | "at least"
AtLeast :: GeneralizedQuantor

-- | "more than"
MoreThan :: GeneralizedQuantor

-- | "less than"
LessThan :: GeneralizedQuantor

-- | "not more than"
NotMoreThan :: GeneralizedQuantor

-- | "not less than"
NotLessThan :: GeneralizedQuantor
data PossessivePronoun

-- | "his"
His :: PossessivePronoun

-- | "her"
Her :: PossessivePronoun

-- | "his/her"
HisHer :: PossessivePronoun

-- | "its"
Its :: PossessivePronoun

-- | "their"
Their :: PossessivePronoun

-- | "his own" <i> "her own" </i> "his/her own"
HisHerOwn :: PossessivePronoun

-- | "its own"
ItsOwn :: PossessivePronoun

-- | "their own"
TheirOwn :: PossessivePronoun

-- | "whose"
Whose :: PossessivePronoun
data Pronoun
It :: Pronoun
He :: Pronoun
She :: Pronoun
HeShe :: Pronoun
Him :: Pronoun
HerP :: Pronoun
HimHer :: Pronoun
They :: Pronoun
Them :: Pronoun
Itself :: Pronoun
Himself :: Pronoun
Herself :: Pronoun
HimselfHerself :: Pronoun
Themselves :: Pronoun
Someone :: Pronoun
Somebody :: Pronoun
Something :: Pronoun
NoOne :: Pronoun
Nobody :: Pronoun
NoThing :: Pronoun
Everyone :: Pronoun
Everybody :: Pronoun
Everything :: Pronoun
NotEveryone :: Pronoun
NotEverybody :: Pronoun
NotEverything :: Pronoun
What :: Pronoun
Who :: Pronoun
Whom :: Pronoun
WhichP :: Pronoun

-- | The Saxon genitive used for possession.
data SaxonGenitiveMarker

-- | "'"
Apostrophe :: SaxonGenitiveMarker

-- | "'s"
ApostropheS :: SaxonGenitiveMarker
data UniversalGlobalQuantor

-- | "for every"
ForEvery :: UniversalGlobalQuantor

-- | "for each"
ForEach :: UniversalGlobalQuantor

-- | "for all"
ForAll :: UniversalGlobalQuantor
instance GHC.Classes.Eq ACE.Types.Syntax.Specification
instance GHC.Show.Show ACE.Types.Syntax.Specification
instance GHC.Classes.Eq ACE.Types.Syntax.ConditionalSentence
instance GHC.Show.Show ACE.Types.Syntax.ConditionalSentence
instance GHC.Classes.Eq ACE.Types.Syntax.SentenceCoord_3
instance GHC.Show.Show ACE.Types.Syntax.SentenceCoord_3
instance GHC.Classes.Eq ACE.Types.Syntax.SentenceCoord_2
instance GHC.Show.Show ACE.Types.Syntax.SentenceCoord_2
instance GHC.Classes.Eq ACE.Types.Syntax.SentenceCoord_1
instance GHC.Show.Show ACE.Types.Syntax.SentenceCoord_1
instance GHC.Classes.Eq ACE.Types.Syntax.SentenceCoord
instance GHC.Show.Show ACE.Types.Syntax.SentenceCoord
instance GHC.Classes.Eq ACE.Types.Syntax.NegatedSentence
instance GHC.Show.Show ACE.Types.Syntax.NegatedSentence
instance GHC.Classes.Eq ACE.Types.Syntax.CompositeSentence
instance GHC.Show.Show ACE.Types.Syntax.CompositeSentence
instance GHC.Classes.Eq ACE.Types.Syntax.TopicalizedSentence
instance GHC.Show.Show ACE.Types.Syntax.TopicalizedSentence
instance GHC.Classes.Eq ACE.Types.Syntax.UniversalTopic
instance GHC.Show.Show ACE.Types.Syntax.UniversalTopic
instance GHC.Classes.Eq ACE.Types.Syntax.UniversalGlobalQuantor
instance GHC.Show.Show ACE.Types.Syntax.UniversalGlobalQuantor
instance GHC.Classes.Eq ACE.Types.Syntax.Sentence
instance GHC.Show.Show ACE.Types.Syntax.Sentence
instance GHC.Classes.Eq ACE.Types.Syntax.ExistentialTopic
instance GHC.Show.Show ACE.Types.Syntax.ExistentialTopic
instance GHC.Classes.Eq ACE.Types.Syntax.AP
instance GHC.Show.Show ACE.Types.Syntax.AP
instance GHC.Classes.Eq ACE.Types.Syntax.APgrad
instance GHC.Show.Show ACE.Types.Syntax.APgrad
instance GHC.Classes.Eq ACE.Types.Syntax.APCoord
instance GHC.Show.Show ACE.Types.Syntax.APCoord
instance GHC.Classes.Eq ACE.Types.Syntax.CopulaCompl
instance GHC.Show.Show ACE.Types.Syntax.CopulaCompl
instance GHC.Classes.Eq ACE.Types.Syntax.Compl
instance GHC.Show.Show ACE.Types.Syntax.Compl
instance GHC.Classes.Eq ACE.Types.Syntax.ComplV
instance GHC.Show.Show ACE.Types.Syntax.ComplV
instance GHC.Classes.Eq ACE.Types.Syntax.UnmarkedNPCoord
instance GHC.Show.Show ACE.Types.Syntax.UnmarkedNPCoord
instance GHC.Classes.Eq ACE.Types.Syntax.NPCoord
instance GHC.Show.Show ACE.Types.Syntax.NPCoord
instance GHC.Classes.Eq ACE.Types.Syntax.PP
instance GHC.Show.Show ACE.Types.Syntax.PP
instance GHC.Classes.Eq ACE.Types.Syntax.VModifier
instance GHC.Show.Show ACE.Types.Syntax.VModifier
instance GHC.Classes.Eq ACE.Types.Syntax.V'
instance GHC.Show.Show ACE.Types.Syntax.V'
instance GHC.Classes.Eq ACE.Types.Syntax.VP
instance GHC.Show.Show ACE.Types.Syntax.VP
instance GHC.Classes.Eq ACE.Types.Syntax.VPCoord
instance GHC.Show.Show ACE.Types.Syntax.VPCoord
instance GHC.Classes.Eq ACE.Types.Syntax.RelativeClause
instance GHC.Show.Show ACE.Types.Syntax.RelativeClause
instance GHC.Classes.Eq ACE.Types.Syntax.RelativeClauseCoord
instance GHC.Show.Show ACE.Types.Syntax.RelativeClauseCoord
instance GHC.Classes.Eq ACE.Types.Syntax.N'
instance GHC.Show.Show ACE.Types.Syntax.N'
instance GHC.Classes.Eq ACE.Types.Syntax.NP
instance GHC.Show.Show ACE.Types.Syntax.NP
instance GHC.Classes.Eq ACE.Types.Syntax.Specifier
instance GHC.Show.Show ACE.Types.Syntax.Specifier
instance GHC.Classes.Eq ACE.Types.Syntax.PossessiveNPCoord
instance GHC.Show.Show ACE.Types.Syntax.PossessiveNPCoord
instance GHC.Classes.Eq ACE.Types.Syntax.GenitiveNPCoord
instance GHC.Show.Show ACE.Types.Syntax.GenitiveNPCoord
instance GHC.Classes.Eq ACE.Types.Syntax.GenitiveCoordTail
instance GHC.Show.Show ACE.Types.Syntax.GenitiveCoordTail
instance GHC.Classes.Eq ACE.Types.Syntax.GenitiveTail
instance GHC.Show.Show ACE.Types.Syntax.GenitiveTail
instance GHC.Classes.Eq ACE.Types.Syntax.SaxonGenitiveTail
instance GHC.Show.Show ACE.Types.Syntax.SaxonGenitiveTail
instance GHC.Classes.Eq ACE.Types.Syntax.SaxonGenitiveMarker
instance GHC.Show.Show ACE.Types.Syntax.SaxonGenitiveMarker
instance GHC.Classes.Eq ACE.Types.Syntax.Pronoun
instance GHC.Show.Show ACE.Types.Syntax.Pronoun
instance GHC.Classes.Eq ACE.Types.Syntax.GenitiveSpecifier
instance GHC.Show.Show ACE.Types.Syntax.GenitiveSpecifier
instance GHC.Classes.Eq ACE.Types.Syntax.PossessivePronounCoord
instance GHC.Show.Show ACE.Types.Syntax.PossessivePronounCoord
instance GHC.Classes.Eq ACE.Types.Syntax.PossessivePronoun
instance GHC.Show.Show ACE.Types.Syntax.PossessivePronoun
instance GHC.Classes.Eq ACE.Types.Syntax.NumberP
instance GHC.Show.Show ACE.Types.Syntax.NumberP
instance GHC.Classes.Eq ACE.Types.Syntax.GeneralizedQuantor
instance GHC.Show.Show ACE.Types.Syntax.GeneralizedQuantor
instance GHC.Classes.Eq ACE.Types.Syntax.DistributiveMarker
instance GHC.Show.Show ACE.Types.Syntax.DistributiveMarker
instance GHC.Classes.Eq ACE.Types.Syntax.DistributiveGlobalQuantor
instance GHC.Show.Show ACE.Types.Syntax.DistributiveGlobalQuantor
instance GHC.Classes.Eq ACE.Types.Syntax.Determiner
instance GHC.Show.Show ACE.Types.Syntax.Determiner
instance GHC.Classes.Eq ACE.Types.Syntax.ExistentialGlobalQuantor
instance GHC.Show.Show ACE.Types.Syntax.ExistentialGlobalQuantor
instance GHC.Classes.Eq ACE.Types.Syntax.ExistentialGlobalQuestionQuantor
instance GHC.Show.Show ACE.Types.Syntax.ExistentialGlobalQuestionQuantor
instance GHC.Classes.Eq ACE.Types.Syntax.Copula
instance GHC.Show.Show ACE.Types.Syntax.Copula
instance GHC.Classes.Eq ACE.Types.Syntax.Coord
instance GHC.Show.Show ACE.Types.Syntax.Coord
instance GHC.Classes.Eq ACE.Types.Syntax.Aux
instance GHC.Show.Show ACE.Types.Syntax.Aux
instance GHC.Classes.Eq ACE.Types.Syntax.GenitiveN'
instance GHC.Show.Show ACE.Types.Syntax.GenitiveN'
instance GHC.Classes.Eq ACE.Types.Syntax.AdjectiveCoord
instance GHC.Show.Show ACE.Types.Syntax.AdjectiveCoord
instance GHC.Classes.Eq ACE.Types.Syntax.AdverbialPP
instance GHC.Show.Show ACE.Types.Syntax.AdverbialPP
instance GHC.Classes.Eq ACE.Types.Syntax.AdverbCoord
instance GHC.Show.Show ACE.Types.Syntax.AdverbCoord
instance GHC.Classes.Eq ACE.Types.Syntax.Adverb
instance GHC.Show.Show ACE.Types.Syntax.Adverb
instance GHC.Classes.Eq ACE.Types.Syntax.IntransitiveAdjective
instance GHC.Show.Show ACE.Types.Syntax.IntransitiveAdjective
instance GHC.Classes.Eq ACE.Types.Syntax.DistransitiveV
instance GHC.Show.Show ACE.Types.Syntax.DistransitiveV
instance GHC.Classes.Eq ACE.Types.Syntax.TransitiveV
instance GHC.Show.Show ACE.Types.Syntax.TransitiveV
instance GHC.Classes.Eq ACE.Types.Syntax.IntransitiveV
instance GHC.Show.Show ACE.Types.Syntax.IntransitiveV
instance GHC.Classes.Eq ACE.Types.Syntax.PhrasalParticle
instance GHC.Show.Show ACE.Types.Syntax.PhrasalParticle
instance GHC.Classes.Eq ACE.Types.Syntax.PhrasalIntransitiveV
instance GHC.Show.Show ACE.Types.Syntax.PhrasalIntransitiveV
instance GHC.Classes.Eq ACE.Types.Syntax.TransitiveAdjective
instance GHC.Show.Show ACE.Types.Syntax.TransitiveAdjective
instance GHC.Classes.Eq ACE.Types.Syntax.PhrasalDistransitiveV
instance GHC.Show.Show ACE.Types.Syntax.PhrasalDistransitiveV
instance GHC.Classes.Eq ACE.Types.Syntax.PhrasalTransitiveV
instance GHC.Show.Show ACE.Types.Syntax.PhrasalTransitiveV
instance GHC.Classes.Eq ACE.Types.Syntax.ProperName
instance GHC.Show.Show ACE.Types.Syntax.ProperName
instance GHC.Classes.Eq ACE.Types.Syntax.ApposCoord
instance GHC.Show.Show ACE.Types.Syntax.ApposCoord
instance GHC.Classes.Eq ACE.Types.Syntax.Apposition
instance GHC.Show.Show ACE.Types.Syntax.Apposition
instance GHC.Classes.Eq ACE.Types.Syntax.Variable
instance GHC.Show.Show ACE.Types.Syntax.Variable
instance GHC.Classes.Eq ACE.Types.Syntax.Quotation
instance GHC.Show.Show ACE.Types.Syntax.Quotation
instance GHC.Classes.Eq ACE.Types.Syntax.Preposition
instance GHC.Show.Show ACE.Types.Syntax.Preposition
instance GHC.Classes.Eq ACE.Types.Syntax.N
instance GHC.Show.Show ACE.Types.Syntax.N


-- | Pretty printing classes.
module ACE.Pretty
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Specification
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.SentenceCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.SentenceCoord_1
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.SentenceCoord_2
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.SentenceCoord_3
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.TopicalizedSentence
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.UniversalTopic
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.CompositeSentence
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.ConditionalSentence
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.NegatedSentence
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Sentence
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.ExistentialTopic
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.NPCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.UnmarkedNPCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.N'
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.NP
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.N
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.PP
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Preposition
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.ApposCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Apposition
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Quotation
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Variable
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.RelativeClauseCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.PossessiveNPCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.GenitiveNPCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.ProperName
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.PossessivePronounCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.GenitiveTail
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.GenitiveCoordTail
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.SaxonGenitiveTail
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.RelativeClause
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.VPCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.GenitiveSpecifier
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.GenitiveN'
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.VP
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.V'
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.AdverbCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.ComplV
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.PhrasalTransitiveV
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.PhrasalDistransitiveV
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.CopulaCompl
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.APCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.APgrad
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.AP
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.TransitiveAdjective
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Compl
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.PhrasalIntransitiveV
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.PhrasalParticle
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.IntransitiveV
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.TransitiveV
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.DistransitiveV
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.IntransitiveAdjective
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.VModifier
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.AdverbialPP
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Adverb
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Specifier
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.AdjectiveCoord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.NumberP
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.ExistentialGlobalQuantor
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.ExistentialGlobalQuestionQuantor
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Aux
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Coord
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Copula
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Determiner
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.DistributiveGlobalQuantor
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.DistributiveMarker
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.GeneralizedQuantor
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.PossessivePronoun
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.Pronoun
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.SaxonGenitiveMarker
instance ACE.Types.Pretty.Pretty ACE.Types.Syntax.UniversalGlobalQuantor


-- | Instances for pretty printing as HTML.
module ACE.Html
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Specification
instance Text.Blaze.ToMarkup ACE.Types.Syntax.SentenceCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.SentenceCoord_1
instance Text.Blaze.ToMarkup ACE.Types.Syntax.SentenceCoord_2
instance Text.Blaze.ToMarkup ACE.Types.Syntax.SentenceCoord_3
instance Text.Blaze.ToMarkup ACE.Types.Syntax.TopicalizedSentence
instance Text.Blaze.ToMarkup ACE.Types.Syntax.UniversalTopic
instance Text.Blaze.ToMarkup ACE.Types.Syntax.CompositeSentence
instance Text.Blaze.ToMarkup ACE.Types.Syntax.ConditionalSentence
instance Text.Blaze.ToMarkup ACE.Types.Syntax.NegatedSentence
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Sentence
instance Text.Blaze.ToMarkup ACE.Types.Syntax.ExistentialTopic
instance Text.Blaze.ToMarkup ACE.Types.Syntax.NPCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.UnmarkedNPCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.N'
instance Text.Blaze.ToMarkup ACE.Types.Syntax.NP
instance Text.Blaze.ToMarkup ACE.Types.Syntax.N
instance Text.Blaze.ToMarkup ACE.Types.Syntax.PP
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Preposition
instance Text.Blaze.ToMarkup ACE.Types.Syntax.ApposCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Apposition
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Quotation
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Variable
instance Text.Blaze.ToMarkup ACE.Types.Syntax.RelativeClauseCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.PossessiveNPCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.GenitiveNPCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.ProperName
instance Text.Blaze.ToMarkup ACE.Types.Syntax.PossessivePronounCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.GenitiveTail
instance Text.Blaze.ToMarkup ACE.Types.Syntax.GenitiveCoordTail
instance Text.Blaze.ToMarkup ACE.Types.Syntax.SaxonGenitiveTail
instance Text.Blaze.ToMarkup ACE.Types.Syntax.RelativeClause
instance Text.Blaze.ToMarkup ACE.Types.Syntax.VPCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.GenitiveSpecifier
instance Text.Blaze.ToMarkup ACE.Types.Syntax.GenitiveN'
instance Text.Blaze.ToMarkup ACE.Types.Syntax.VP
instance Text.Blaze.ToMarkup ACE.Types.Syntax.V'
instance Text.Blaze.ToMarkup ACE.Types.Syntax.AdverbCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.ComplV
instance Text.Blaze.ToMarkup ACE.Types.Syntax.PhrasalTransitiveV
instance Text.Blaze.ToMarkup ACE.Types.Syntax.PhrasalDistransitiveV
instance Text.Blaze.ToMarkup ACE.Types.Syntax.CopulaCompl
instance Text.Blaze.ToMarkup ACE.Types.Syntax.APCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.APgrad
instance Text.Blaze.ToMarkup ACE.Types.Syntax.AP
instance Text.Blaze.ToMarkup ACE.Types.Syntax.TransitiveAdjective
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Compl
instance Text.Blaze.ToMarkup ACE.Types.Syntax.PhrasalIntransitiveV
instance Text.Blaze.ToMarkup ACE.Types.Syntax.PhrasalParticle
instance Text.Blaze.ToMarkup ACE.Types.Syntax.IntransitiveV
instance Text.Blaze.ToMarkup ACE.Types.Syntax.TransitiveV
instance Text.Blaze.ToMarkup ACE.Types.Syntax.DistransitiveV
instance Text.Blaze.ToMarkup ACE.Types.Syntax.IntransitiveAdjective
instance Text.Blaze.ToMarkup ACE.Types.Syntax.VModifier
instance Text.Blaze.ToMarkup ACE.Types.Syntax.AdverbialPP
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Adverb
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Specifier
instance Text.Blaze.ToMarkup ACE.Types.Syntax.AdjectiveCoord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.NumberP
instance Text.Blaze.ToMarkup ACE.Types.Syntax.ExistentialGlobalQuantor
instance Text.Blaze.ToMarkup ACE.Types.Syntax.ExistentialGlobalQuestionQuantor
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Aux
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Coord
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Copula
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Determiner
instance Text.Blaze.ToMarkup ACE.Types.Syntax.DistributiveGlobalQuantor
instance Text.Blaze.ToMarkup ACE.Types.Syntax.DistributiveMarker
instance Text.Blaze.ToMarkup ACE.Types.Syntax.GeneralizedQuantor
instance Text.Blaze.ToMarkup ACE.Types.Syntax.PossessivePronoun
instance Text.Blaze.ToMarkup ACE.Types.Syntax.Pronoun
instance Text.Blaze.ToMarkup ACE.Types.Syntax.SaxonGenitiveMarker
instance Text.Blaze.ToMarkup ACE.Types.Syntax.UniversalGlobalQuantor


-- | Tokens for ACE.
module ACE.Types.Tokens

-- | A token
data Token
Word :: !(Int, Int) -> !Text -> Token
QuotedString :: !(Int, Int) -> !Text -> Token
Period :: !(Int, Int) -> Token
Comma :: !(Int, Int) -> Token
QuestionMark :: !(Int, Int) -> Token
Genitive :: !(Int, Int) -> !Bool -> Token
Number :: !(Int, Int) -> !Integer -> Token

-- | Get the position of the token.
tokenPos :: Token -> (Int, Int)
instance GHC.Classes.Eq ACE.Types.Tokens.Token


-- | Tokenizer for ACE. Tokens retain source locations (line and column).
module ACE.Tokenizer

-- | Tokenize some complete ACE text.
tokenize :: Text -> Either String [Token]

-- | The tokenizer.
tokenizer :: Parser ([Token], (Int, Int))

-- | Parse a token.
token :: (Int, Int) -> Parser (Token, (Int, Int))

-- | Parse a number.
number :: (Int, Int) -> Parser (Token, (Int, Int))

-- | Parse a quoted string, <tt>"foobar"</tt>.
quotedString :: (Int, Int) -> Parser (Token, (Int, Int))

-- | Parse a period ".".
period :: (Int, Int) -> Parser (Token, (Int, Int))

-- | Parse a comma ",".
comma :: (Int, Int) -> Parser (Token, (Int, Int))

-- | Parse a question mark "?".
questionMark :: (Int, Int) -> Parser (Token, (Int, Int))

-- | Parse a word, which is any sequence of non-whitespace words containing
--   none of the other token characters.
word :: (Int, Int) -> Parser (Token, (Int, Int))

-- | Parse the Saxon genitive ' or 's. This is ran after parsing every
--   token, but is expected to fail most of the time.
genitive :: (Int, Int) -> Parser (Maybe (Token, (Int, Int)))

-- | Like <a>many</a>, but retains the current source position and supports
--   postfix-parsing of the genitive apostrophe.
manyWithPos :: (Monad m, Alternative m) => ((t, t1) -> m (a, (t, t1))) -> ((t, t1) -> m (Maybe (a, (t, t1)))) -> (t, t1) -> m ([a], (t, t1))

-- | Skip spaces (space, newline, tab (=4 spaces)) and keep positioning
--   information up to date.
spaces :: (Int, Int) -> Parser (Int, Int)


-- | Parser combinators.
module ACE.Combinators

-- | Match a word with the given string.
string :: Stream s m Token => Text -> ParsecT s u m Text

-- | Match a Saxon genitive.
genitive :: Stream s m Token => ParsecT s u m Bool

-- | Match a word with the given string.
number :: Stream s m Token => ParsecT s u m Integer

-- | Quoted string.
quoted :: Stream s m Token => ParsecT s u m Text

-- | A comma.
comma :: Stream s m Token => ParsecT s u m ()

-- | A period.
period :: Stream s m Token => ParsecT s u m ()

-- | Try to match all the given strings, or none at all.
strings :: Stream s m Token => [Text] -> ParsecT s u m ()

-- | Satisfy the given predicate from the token stream.
satisfy :: Stream s m Token => (Token -> Maybe a) -> ParsecT s u m a

-- | The parser <tt>anyToken</tt> accepts any kind of token. It is for
--   example used to implement <a>eof</a>. Returns the accepted token.
anyToken :: (Stream s m Token) => ParsecT s u m Token

-- | Make a string out of the token, for error message purposes.
tokenString :: Token -> [Char]

-- | Update the position by the token.
tokenPosition :: SourcePos -> Token -> t -> SourcePos

-- | <tt>notFollowedBy p</tt> only succeeds when parser <tt>p</tt> fails.
--   This parser does not consume any input. This parser can be used to
--   implement the 'longest match' rule. For example, when recognizing
--   keywords (for example <tt>let</tt>), we want to make sure that a
--   keyword is not followed by a legal identifier character, in which case
--   the keyword is actually an identifier (for example <tt>lets</tt>). We
--   can program this behaviour as follows:
--   
--   <pre>
--   keywordLet  = try (do{ string "let"
--                        ; notFollowedBy alphaNum
--                        })
--   </pre>
notFollowedBy :: (Stream s m Token) => ParsecT s u m Token -> ParsecT s u m ()

-- | This parser only succeeds at the end of the input. This is not a
--   primitive parser but it is defined using <a>notFollowedBy</a>.
--   
--   <pre>
--   eof  = notFollowedBy anyToken &lt;?&gt; "end of input"
--   </pre>
eof :: (Stream s m Token) => ParsecT s u m ()


-- | Parsers for ACE syntax types.
module ACE.Parsers

-- | Parser configuration.
data ACEParser s m
ACE :: ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ParsecT s (ACEParser s m) m Text -> ACEParser s m

-- | Parser for intransitive adjectives.
[aceIntransitiveAdjective] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for transitive adjectives.
[aceTransitiveAdjective] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for nouns.
[aceNoun] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for prepositions.
[acePreposition] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for variables.
[aceVariable] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for proper names.
[aceProperName] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for adverbs.
[aceAdverb] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for intransitive verbs.
[aceIntransitiveVerb] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for phrasal transitive verbs.
[acePhrasalTransitiveV] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for phrasal distransitive verbs.
[acePhrasalDistransitiveV] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for transitive verbs.
[aceTransitiveVerb] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for distransitive verbs.
[aceDistransitiveVerb] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for phrasal particles.
[acePhrasalParticle] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | Parser for phrasal intransitive verbs.
[acePhrasalIntransitiveV] :: ACEParser s m -> ParsecT s (ACEParser s m) m Text

-- | A default ACE parser configuration. Just fills in all the parsers as
--   blanks: <tt>&lt;noun&gt;</tt>, <tt>&lt;prep&gt;</tt>, etc.
defaultACEParser :: Stream s m Token => ACEParser s m

-- | Some specification. A <a>sentenceCoord</a> followed by a
--   <a>period</a>, and optionally another <a>specification</a>.
specification :: Stream s m Token => ParsecT s ACEParser s m m Specification

-- | Coordinated sentence, by: or
sentenceCoord :: Stream s m Token => ParsecT s ACEParser s m m SentenceCoord

-- | Coordinated sentence, by: and
sentenceCoord_1 :: Stream s m Token => ParsecT s ACEParser s m m SentenceCoord_1

-- | Coordinated sentence, by: or
sentenceCoord_2 :: Stream s m Token => ParsecT s ACEParser s m m SentenceCoord_2

-- | Coordinated sentence, by: and
sentenceCoord_3 :: Stream s m Token => ParsecT s ACEParser s m m SentenceCoord_3

-- | A topicalized sentence.
topicalizedSentence :: Stream s m Token => ParsecT s ACEParser s m m TopicalizedSentence

-- | A universally quantified topic.
universalTopic :: Stream s m Token => ParsecT s ACEParser s m m UniversalTopic

-- | A composite sentence: <a>conditionalSentence</a>,
--   <a>negatedSentence</a> or <a>sentence</a>.
compositeSentence :: Stream s m Token => ParsecT s ACEParser s m m CompositeSentence

-- | A negated sentence: it is not the case that <a>sentenceCoord</a>
negatedSentence :: Stream s m Token => ParsecT s ACEParser s m m NegatedSentence

-- | A condition if <a>sentenceCoord</a> then <a>sentenceCoord</a>.
conditionalSentence :: Stream s m Token => ParsecT s ACEParser s m m ConditionalSentence

-- | Sentence: <a>npCoord</a> <a>vpCoord</a>: a cat meows
sentence :: Stream s m Token => ParsecT s ACEParser s m m Sentence

-- | Existential topic, a <a>existentialGlobalQuantor</a> and a
--   <a>npCoord</a>: there is a chair
existentialTopic :: Stream s m Token => ParsecT s ACEParser s m m ExistentialTopic

-- | A noun specifier: "a", "some", "1", "<a>proper-name</a>'s".
specifier :: Stream s m Token => ParsecT s ACEParser s m m Specifier

-- | A preposition. Configured by <a>acePreposition</a>.
preposition :: Monad m => ParsecT s ACEParser s m m Preposition

-- | A genitive tail: dave's and a dog's
genitiveTail :: Stream s m Token => ParsecT s ACEParser s m m GenitiveTail

-- | A genitive coordination tail: dave's and a dog's
genitiveCoordTail :: Stream s m Token => ParsecT s ACEParser s m m GenitiveCoordTail

-- | Genitive tail.
saxonGenitiveTail :: Stream s m Token => ParsecT s ACEParser s m m SaxonGenitiveTail

-- | Apposition: either a <a>variable</a> or a <a>quotation</a>.
apposition :: Stream s m Token => ParsecT s ACEParser s m m Apposition

-- | A apposition coordination: X and Y.
apposCoord :: Stream s m Token => ParsecT s ACEParser s m m ApposCoord

-- | A prepositional noun phrase coordination.
pp :: Stream s m Token => ParsecT s ACEParser s m m PP

-- | A <a>relativeClause</a> coordination: person that walks and cake a
--   person made.
relativeClauseCoord :: Stream s m Token => ParsecT s ACEParser s m m RelativeClauseCoord

-- | A noun surrounded by optional <a>adjectiveCoord</a>, a noun word
--   <a>n</a>, an optional <a>apposCoord</a>, an optional <a>ofPP</a>, an
--   optional <a>relativeClauseCoord</a>.
n' :: Stream s m Token => Bool -> ParsecT s ACEParser s m m N'

-- | Unmarked noun phrase coordination: some thing and a thing.
unmarkedNPCoord :: Stream s m Token => Bool -> ParsecT s ACEParser s m m UnmarkedNPCoord

-- | A noun phrase: a thing, some stuff, the thing.
np :: Stream s m Token => Bool -> ParsecT s ACEParser s m m NP

-- | A coordinated noun phrase. See <a>npCoordX</a>.
npCoord :: Stream s m Token => ParsecT s ACEParser s m m NPCoord

-- | A coordinated noun phrase. Inside a relative clause. See
--   <a>npCoordX</a>.
npCoord' :: Stream s m Token => ParsecT s ACEParser s m m NPCoord

-- | Relative clause: person that walks, cake a person made, cake that a
--   person made, etc.
relativeClause :: Stream s m Token => ParsecT s ACEParser s m m RelativeClause

-- | An "of" prepositional phrase: of the bank
ofPP :: Stream s m Token => ParsecT s ACEParser s m m NPCoord

-- | A coordinated noun phrase: each of some customers, some customers
npCoordX :: Stream s m Token => Bool -> ParsecT s ACEParser s m m NPCoord

-- | A variable. Customized by <a>aceVariable</a>.
variable :: Monad m => ParsecT s ACEParser s m m Variable

-- | A proper name. Customized by <a>aceProperName</a>.
properName :: Monad m => ParsecT s ACEParser s m m ProperName

-- | Some quotation: "foo bar"
quotation :: Stream s m Token => ParsecT s u m Quotation

-- | A noun. Customized by <a>aceNoun</a>.
n :: Monad m => ParsecT s ACEParser s m m N

-- | A verb phrase coordination is either a <a>vp</a> followed by a
--   <a>coord</a> and more <a>vpCoord</a>, or just a <a>vp</a>: walks,
--   walks and runs, bad and is not valid
vpCoord :: Stream s m Token => ParsecT s ACEParser s m m VPCoord

-- | A verb phrase. Can be normal <a>v'</a> or a <a>copula</a> followed by
--   "not" then <a>v'</a>: walks, is not valid, etc.
vp :: Stream s m Token => ParsecT s ACEParser s m m VP

-- | A genitive noun: dog, red cat, person 1, movie "We Need to Talk About
--   Kevin".
genitiveN' :: Stream s m Token => ParsecT s ACEParser s m m GenitiveN'

-- | A verb modifier: quickly and loudly, to a house, from now and forever
vModifier :: Stream s m Token => ParsecT s ACEParser s m m VModifier

-- | Adverbial prepositional phrase: until here, by then, until now and
--   then
adverbialPP :: Stream s m Token => ParsecT s ACEParser s m m AdverbialPP

-- | A verb. Consists of an optional <a>adverbCoord</a>, a complemented
--   verb (<a>complV</a>), and one or more verb modifiers.
--   
--   TODO: I'm not actually sure whether it should be zero-to-1 or
--   zero-to-many. The paper isn't clear what VModifier* means.
v' :: Stream s m Token => ParsecT s ACEParser s m m V'

-- | Genitive specifier: a, 1, some, his
genitiveSpecifier :: Stream s m Token => ParsecT s u m GenitiveSpecifier

-- | Either a <a>genitiveNPCoord</a>, or a <a>possessivePronounCoord</a>.
possessiveNPCoord :: Stream s m Token => ParsecT s ACEParser s m m PossessiveNPCoord

-- | A ' or 's saxon genitive.
saxonGenitiveMarker :: Stream s m Token => ParsecT s u m SaxonGenitiveMarker

-- | Possessive pronoun coordination: his and her
possessivePronounCoord :: Stream s m Token => ParsecT s u m PossessivePronounCoord

-- | A genitive noun phrase coordination: dave's, a dog's, a man and a
--   dog's
genitiveNPCoord :: Stream s m Token => ParsecT s ACEParser s m m GenitiveNPCoord

-- | A complemented verb. One of <a>complVCopula</a>, <a>complVPDV</a>,
--   <a>complVDisV</a>, <a>complVPV</a>, <a>complVPV'</a>, <a>complVTV</a>.
complV :: Stream s m Token => ParsecT s ACEParser s m m ComplV

-- | A complemented copula: is valid
complVCopula :: Stream s m Token => ParsecT s ACEParser s m m ComplV

-- | A distransitive phrasal verb: puts an error down to a customer
complVPDV :: Stream s m Token => ParsecT s ACEParser s m m ComplV

-- | A distransitive complemented verb: gives a card to a customer
complVDisV :: Stream s m Token => ParsecT s ACEParser s m m ComplV

-- | A complemented phrasal transitive verb: gives away a code
complVPV :: Stream s m Token => ParsecT s ACEParser s m m ComplV

-- | A complemented phrasal transitive verb, flipped: gives a code away
complVPV' :: Stream s m Token => ParsecT s ACEParser s m m ComplV

-- | Complemented transitive verb: inserts a card
complVTV :: Stream s m Token => ParsecT s ACEParser s m m ComplV

-- | A phrasal distransitive verb: puts an error down to a customer
phrasalDistransitiveV :: Monad m => ParsecT s ACEParser s m m PhrasalDistransitiveV

-- | A phrasal transitive verb: give away a thing
phrasalTransitiveV :: Monad m => ParsecT s ACEParser s m m PhrasalTransitiveV

-- | Complemented non-copula verb, e.g. Mary sees him.
compl :: Stream s m Token => ParsecT s ACEParser s m m Compl

-- | An intransitive verb. Takes no complement. E.g. walks.
complVIV :: Monad m => ParsecT s ACEParser s m m ComplV

-- | A phrasal intransitive verb with a complement, in this case a
--   particle: gets in, sits up.
complVPI :: Monad m => ParsecT s ACEParser s m m ComplV

-- | A phrasal intransitive verb: gives, sits (e.g. gives up, sits down).
--   This is customized by <a>acePhrasalIntransitiveV</a>.
phrasalIntransitiveV :: Monad m => ParsecT s ACEParser s m m PhrasalIntransitiveV

-- | A phrasal verb particle, e.g. in, up, out (get in, get up, get out).
--   This is customized via <a>acePhrasalParticle</a>.
phrasalParticle :: Monad m => ParsecT s ACEParser s m m PhrasalParticle

-- | Either a graded adjective coordination ("better than a duck and faster
--   than a mouse"), or a noun phrase coordination ("a goose and an
--   ocelot"), or a prepositional phrase ("to a bucket or a kettle").
copulaCompl :: Stream s m Token => ParsecT s ACEParser s m m CopulaCompl

-- | A coordination of a graded adjective: "better than a potato and nicer
--   than some bacon"
apCoord :: Stream s m Token => ParsecT s ACEParser s m m APCoord

-- | A graded adjective. Either comparative adjective phrase ("better than
--   a potato"), or a simple adjective phrase (see <a>ap</a>).
apGrad :: Stream s m Token => ParsecT s ACEParser s m m APgrad

-- | An adjective phrase. Transitive (fond of Mary, interested in an
--   account) or intransitive (correct, green, valid).
ap :: Stream s m Token => ParsecT s ACEParser s m m AP

-- | Some intransitive verb: walks
intransitiveV :: Monad m => ParsecT s ACEParser s m m IntransitiveV

-- | Some transitive verb: inserts
transitiveV :: Monad m => ParsecT s ACEParser s m m TransitiveV

-- | Some distransitive verb: inserts
distransitiveV :: Monad m => ParsecT s ACEParser s m m DistransitiveV

-- | Adverb coordination: quickly and hastily and manually
adverbCoord :: Stream s m Token => ParsecT s ACEParser s m m AdverbCoord

-- | Adverb: quickly
adverb :: Monad m => ParsecT s ACEParser s m m Adverb

-- | Adjective coordination: correct and green
adjectiveCoord :: Stream s m Token => ParsecT s ACEParser s m m AdjectiveCoord

-- | Intransitive adjective: correct, green, valid
--   
--   The actual parser for this is provided as
--   <a>aceIntransitiveAdjective</a> in the parser configuration. You can
--   configure this.
intransitiveAdjective :: Monad m => ParsecT s ACEParser s m m IntransitiveAdjective

-- | Transitive adjective: correct, green, valid
transitiveAdjective :: Monad m => ParsecT s ACEParser s m m TransitiveAdjective

-- | A determiner: the, an, not every, etc.
determiner :: Stream s m Token => ParsecT s u m Determiner

-- | A number phrase: more than 5
numberP :: Stream s m Token => ParsecT s u m NumberP

-- | There is/are.
existentialGlobalQuantor :: Stream s m Token => ParsecT s u m ExistentialGlobalQuantor

-- | Is/are there?
existentialGlobalQuestionQuantor :: Stream s m Token => ParsecT s u m ExistentialGlobalQuestionQuantor

-- | Do/does.
aux :: Stream s m Token => ParsecT s u m Aux

-- | Pronouns.
pronoun :: Stream s m Token => ParsecT s u m Pronoun

-- | And/or.
coord :: Stream s m Token => ParsecT s u m Coord

-- | Is/are.
copula :: Stream s m Token => ParsecT s u m Copula

-- | A distributive global quantor: for each of
distributiveGlobalQuantor :: Stream s m Token => ParsecT s u m DistributiveGlobalQuantor

-- | A distributive marker: each of
distributiveMarker :: Stream s m Token => ParsecT s u m DistributiveMarker

-- | A generalized quantor: at most, at least, etc.
generalizedQuantor :: Stream s m Token => ParsecT s u m GeneralizedQuantor

-- | A possessive pronoun: his, her, his/her.
possessivePronoun :: Stream s m Token => ParsecT s u m PossessivePronoun

-- | A universal global quantor: for every/for each, for all.
universalGlobalQuantor :: Stream s m Token => ParsecT s u m UniversalGlobalQuantor


-- | Attempto Controlled English parser and printer.
module ACE
