GenI-0.24.3: A natural language generator (specifically, an FB-LTAG surface realiser)

Safe HaskellNone




This module provides basic datatypes specific to Tree Adjoining Grammar tree schemata.



data Ttree a Source




params :: [GeniVal]
pfamily :: Text
pidname :: Text
pinterface :: Flist GeniVal
ptype :: Ptype
psemantics :: Maybe Sem
ptrace :: [Text]
tree :: Tree a

root :: Tree a -> aSource

rootUpd :: Tree a -> a -> Tree aSource

setLexeme :: [Text] -> Tree (GNode a) -> Tree (GNode a)Source

Given a lexical item l and a tree node n (actually a subtree with no children), return the same node with the lexical item as its unique child. The idea is that it converts terminal lexeme nodes into preterminal nodes where the actual terminal is the given lexical item

setAnchor :: FullList Text -> Tree (GNode a) -> Tree (GNode a)Source

Given a lexical item s and a Tree GNode t, returns the tree t' where l has been assigned to the anchor node in t'

lexemeAttributes :: [Text]Source

Attributes recognised as lexemes, in order of preference

data AdjunctionConstraint Source

Essentially boolean representation of adjunction constraint



hard-coded null-adjunction constraint


inferred by GenI to be adjunction free (ie. during realisation)

addInferredAdjConstraint :: GNode gv -> GNode gvSource

Add an inferred adjunction constraint marker unless we already see an explicit one

data GNode gv Source

A single node of a TAG tree.




gnname :: NodeName
gup :: Flist gv

top feature structure

gdown :: Flist gv

bottom feature structure

ganchor :: Bool

False for na nodes

glexeme :: [Text]

[] for na nodes

gtype :: GType
gaconstr :: AdjunctionConstraint
gorigin :: Text

for TAG, this would be the elementary tree that this node originally came from


Typeable1 GNode 
Loadable Macros 
Eq gv => Eq (GNode gv) 
Data gv => Data (GNode gv) 
Binary gv => Binary (GNode gv) 
NFData gv => NFData (GNode gv)

A single node of a TAG tree.

Pretty (GNode GeniVal)

The default show for GNode tries to be very compact; it only shows the value for cat attribute and any flags which are marked on that node.

This is one the places where the pretty representation of a GenI object is different from its GenI-format one

GeniShow gv => GeniShow (GNode gv) 
DescendGeniVal v => DescendGeniVal (GNode v) 
Collectable gv => Collectable (GNode gv) 

type NodeName = TextSource

gCategory :: Flist GeniVal -> Maybe GeniValSource

Return the value of the cat attribute, if available

showLexeme :: [Text] -> TextSource

Fancy disjunction

data SchemaVal Source

A schema value is a disjunction of GenI values. It allows us to express “fancy” disjunctions in tree schemata, ie. disjunctions over variables and not just atoms (?X;?Y).

Our rule is that that when a tree schema is instantiated, any fancy disjunctions must be “crushed” into a single GeniVal lest it be rejected (see crushOne)

Note that this is still not recursive; we don't have disjunction over schema values, nor can schema values refer to schema values. It just allows us to express the idea that in tree schemata, you can have either variable ?X or ?Y.