From 8e5989362d74f4f1de03cf1690765bbea35bbf85 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 20 Jun 2008 14:01:53 +0000 Subject: [PATCH] restored Makfile and synopsis in 1.4 --- lib/resource-1.4/Makefile | 25 + lib/resource-1.4/abstract/Numeral.gf | 6 +- lib/resource-1.4/abstract/Structural.gf | 38 +- lib/resource-1.4/api/Constructors.gf | 256 +- lib/resource-1.4/doc/MkSynopsis.hs | 240 + lib/resource-1.4/doc/categories-imagemap.html | 53 + lib/resource-1.4/doc/categories-intro.txt | 19 + lib/resource-1.4/doc/categories.dot | 149 + lib/resource-1.4/doc/categories.png | Bin 0 -> 123025 bytes lib/resource-1.4/doc/synopsis-browse.txt | 34 + lib/resource-1.4/doc/synopsis-example.txt | 51 + lib/resource-1.4/doc/synopsis-intro.txt | 26 + lib/resource-1.4/doc/synopsis.html | 6263 +++++++++++++++++ lib/resource-1.4/doc/synopsis.txt | 1582 +++++ 14 files changed, 8644 insertions(+), 98 deletions(-) create mode 100644 lib/resource-1.4/Makefile create mode 100644 lib/resource-1.4/doc/MkSynopsis.hs create mode 100644 lib/resource-1.4/doc/categories-imagemap.html create mode 100644 lib/resource-1.4/doc/categories-intro.txt create mode 100644 lib/resource-1.4/doc/categories.dot create mode 100644 lib/resource-1.4/doc/categories.png create mode 100644 lib/resource-1.4/doc/synopsis-browse.txt create mode 100644 lib/resource-1.4/doc/synopsis-example.txt create mode 100644 lib/resource-1.4/doc/synopsis-intro.txt create mode 100644 lib/resource-1.4/doc/synopsis.html create mode 100644 lib/resource-1.4/doc/synopsis.txt diff --git a/lib/resource-1.4/Makefile b/lib/resource-1.4/Makefile new file mode 100644 index 000000000..a1160d995 --- /dev/null +++ b/lib/resource-1.4/Makefile @@ -0,0 +1,25 @@ +RUNGHC=runghc +RUNMAKE=$(RUNGHC) Make.hs + +all: link present alltenses math + +present: + $(RUNMAKE) present lang + $(RUNMAKE) present api + +alltenses: + $(RUNMAKE) lang + $(RUNMAKE) api + +test: + $(RUNMAKE) test + +synopsis: + cd doc ; $(RUNGHC) MkSynopsis ; cd .. + +link: + chmod a+x mkPresent + +clean: + $(RUNMAKE) clean + diff --git a/lib/resource-1.4/abstract/Numeral.gf b/lib/resource-1.4/abstract/Numeral.gf index 68fcb90d0..43c6f8111 100644 --- a/lib/resource-1.4/abstract/Numeral.gf +++ b/lib/resource-1.4/abstract/Numeral.gf @@ -49,11 +49,11 @@ fun -- Numerals as sequences of digits have a separate, simpler grammar cat - Dig ; + Dig ; -- single digit 0..9 fun - IDig : Dig -> Digits ; - IIDig : Dig -> Digits -> Digits ; + IDig : Dig -> Digits ; -- 8 + IIDig : Dig -> Digits -> Digits ; -- 876 D_0, D_1, D_2, D_3, D_4, D_5, D_6, D_7, D_8, D_9 : Dig ; diff --git a/lib/resource-1.4/abstract/Structural.gf b/lib/resource-1.4/abstract/Structural.gf index 5784c02dc..b1e772dd2 100644 --- a/lib/resource-1.4/abstract/Structural.gf +++ b/lib/resource-1.4/abstract/Structural.gf @@ -12,7 +12,7 @@ abstract Structural = Cat ** { -- This is an alphabetical list of structural words - above_Prep : Prep ; + above_Prep : Prep ; after_Prep : Prep ; all_Predet : Predet ; almost_AdA : AdA ; @@ -24,18 +24,18 @@ abstract Structural = Cat ** { before_Prep : Prep ; behind_Prep : Prep ; between_Prep : Prep ; - both7and_DConj : Conj ; + both7and_DConj : Conj ; -- both...and ---b both7and_DConj : DConj ; but_PConj : PConj ; - by8agent_Prep : Prep ; - by8means_Prep : Prep ; + by8agent_Prep : Prep ; -- by (agent) + by8means_Prep : Prep ; -- by (means of) can8know_VV : VV ; can_VV : VV ; during_Prep : Prep ; - either7or_DConj : Conj ; + either7or_DConj : Conj ; -- either...or ---b either7or_DConj : DConj ; every_Det : Det ; - everybody_NP : NP ; + everybody_NP : NP ; -- everybody everything_NP : NP ; everywhere_Adv : Adv ; --- first_Ord : Ord ; DEPRECATED @@ -44,13 +44,13 @@ abstract Structural = Cat ** { from_Prep : Prep ; he_Pron : Pron ; here_Adv : Adv ; - here7to_Adv : Adv ; - here7from_Adv : Adv ; + here7to_Adv : Adv ; -- to here + here7from_Adv : Adv ; -- from here how_IAdv : IAdv ; how8many_IDet : IDet ; i_Pron : Pron ; if_Subj : Subj ; - in8front_Prep : Prep ; + in8front_Prep : Prep ; -- in front of in_Prep : Prep ; it_Pron : Pron ; less_CAdv : CAdv ; @@ -68,7 +68,7 @@ abstract Structural = Cat ** { otherwise_PConj : PConj ; part_Prep : Prep ; please_Voc : Voc ; - possess_Prep : Prep ; + possess_Prep : Prep ; -- of (possessive) quite_Adv : AdA ; she_Pron : Pron ; so_AdA : AdA ; @@ -79,8 +79,8 @@ abstract Structural = Cat ** { somewhere_Adv : Adv ; that_Quant : Quant ; there_Adv : Adv ; - there7to_Adv : Adv ; - there7from_Adv : Adv ; + there7to_Adv : Adv ; -- to there + there7from_Adv : Adv ; -- from there therefore_PConj : PConj ; they_Pron : Pron ; this_Quant : Quant ; @@ -91,21 +91,21 @@ abstract Structural = Cat ** { very_AdA : AdA ; want_VV : VV ; we_Pron : Pron ; - whatPl_IP : IP ; - whatSg_IP : IP ; + whatPl_IP : IP ; -- what (plural) + whatSg_IP : IP ; -- what (singular) when_IAdv : IAdv ; when_Subj : Subj ; where_IAdv : IAdv ; which_IQuant : IQuant ; - whoPl_IP : IP ; - whoSg_IP : IP ; + whoPl_IP : IP ; -- who (plural) + whoSg_IP : IP ; -- who (singular) why_IAdv : IAdv ; with_Prep : Prep ; without_Prep : Prep ; ---b yes_Phr : Phr ; yes_Utt : Utt ; - youSg_Pron : Pron ; - youPl_Pron : Pron ; - youPol_Pron : Pron ; + youSg_Pron : Pron ; -- you (singular) + youPl_Pron : Pron ; -- you (plural) + youPol_Pron : Pron ; -- you (polite) } diff --git a/lib/resource-1.4/api/Constructors.gf b/lib/resource-1.4/api/Constructors.gf index fba76be90..02d8e9bc6 100644 --- a/lib/resource-1.4/api/Constructors.gf +++ b/lib/resource-1.4/api/Constructors.gf @@ -238,41 +238,44 @@ incomplete resource Constructors = open Grammar in { mkCl : NP -> VQ -> QS -> Cl ; -- 6. John wonders if it is good mkCl : NP -> VA -> AP -> Cl ; -- 7. John becomes old mkCl : NP -> V2A -> NP -> AP -> Cl ; -- 8. John paints it red - mkCl : NP -> A -> Cl ; -- 9. John is old - mkCl : NP -> A -> NP -> Cl ; -- 10. John is older than her - mkCl : NP -> A2 -> NP -> Cl ; -- 11. John is married to her - mkCl : NP -> AP -> Cl ; -- 12. John is very old - mkCl : NP -> N -> Cl ; -- 13. John is a man - mkCl : NP -> CN -> Cl ; -- 14. John is an old man - mkCl : NP -> NP -> Cl ; -- 15. John is the man - mkCl : NP -> Adv -> Cl ; -- 16. John is here + mkCl : NP -> V2S -> NP -> S -> Cl ; -- 9. John tells her that we are here + mkCl : NP -> V2Q -> NP -> QS -> Cl ; -- 10. John asks her who is here + mkCl : NP -> V2V -> NP -> VP -> Cl ; -- 11. John forces us to sleep + mkCl : NP -> A -> Cl ; -- 12. John is old + mkCl : NP -> A -> NP -> Cl ; -- 13. John is older than her + mkCl : NP -> A2 -> NP -> Cl ; -- 14. John is married to her + mkCl : NP -> AP -> Cl ; -- 15. John is very old + mkCl : NP -> N -> Cl ; -- 16. John is a man + mkCl : NP -> CN -> Cl ; -- 17. John is an old man + mkCl : NP -> NP -> Cl ; -- 18. John is the man + mkCl : NP -> Adv -> Cl ; -- 19. John is here -- As the general rule, a clause can be built from a subject noun phrase and -- a verb phrase. - mkCl : NP -> VP -> Cl ; -- 17. John walks here + mkCl : NP -> VP -> Cl ; -- 20. John walks here -- Subjectless verb phrases are used for impersonal actions. - mkCl : V -> Cl ; -- 18. it rains - mkCl : VP -> Cl ; -- 19. it is raining + mkCl : V -> Cl ; -- 21. it rains + mkCl : VP -> Cl ; -- 22. it is raining -- Existentials are a special form of clauses. - mkCl : N -> Cl ; -- 20. there is a house - mkCl : CN -> Cl ; -- 21. there is an old houses - mkCl : NP -> Cl ; -- 22. there are five houses + mkCl : N -> Cl ; -- 23. there is a house + mkCl : CN -> Cl ; -- 24. there is an old houses + mkCl : NP -> Cl ; -- 25. there are five houses -- There are also special forms in which a noun phrase or an adverb is -- emphasized. - mkCl : NP -> RS -> Cl ; -- 23. it is John that walks - mkCl : Adv -> S -> Cl -- 24. it is here John walks + mkCl : NP -> RS -> Cl ; -- 26. it is John that walks + mkCl : Adv -> S -> Cl -- 27. it is here John walks } ; -- Generic clauses are one with an impersonal subject. - genericCl : VP -> Cl ; -- 25. one walks + genericCl : VP -> Cl ; -- 28. one walks --2 Verb phrases and imperatives @@ -306,7 +309,13 @@ incomplete resource Constructors = open Grammar in { -- A verb phrase can be modified with a postverbal or a preverbal adverb. mkVP : VP -> Adv -> VP ; -- 17. sleep here - mkVP : AdV -> VP -> VP -- 18. always sleep + mkVP : AdV -> VP -> VP ; -- 18. always sleep + +-- Objectless verb phrases can be taken to verb phrases in two ways. + + mkVP : VPSlash -> NP -> VP ; -- 19. paint it black + mkVP : VPSlash -> VP ; -- 20. paint itself black + } ; -- Two-place verbs can be used reflexively. @@ -346,12 +355,12 @@ incomplete resource Constructors = open Grammar in { -- special case of a simple common noun ($N$) is always provided. mkNP : overload { - mkNP : Det -> N -> NP ; -- 1. the first man - mkNP : Det -> CN -> NP ; -- 2. the first old man - mkNP : Quant -> N -> NP ; -- 3. this man - mkNP : Quant -> CN -> NP ; -- 4. this old man - mkNP : Quant -> Num -> N -> NP ; -- 5. these men - mkNP : Quant -> Num -> CN -> NP ; -- 6. these old men + mkNP : Art -> NP ; -- 1. the man + mkNP : Art -> (Num) -> CN -> NP ; -- 2. the five old men + mkNP : Quant -> N -> NP ; -- 3. this men + mkNP : Quant -> (Num) -> CN -> NP; -- 4. these five old men + mkNP : Det -> N -> NP ; -- 5. the first man + mkNP : Det -> CN -> NP ; -- 6. the first old man mkNP : Numeral -> N -> NP ; -- 7. twenty men mkNP : Numeral -> CN -> NP ; -- 8. twenty old men mkNP : Digits -> N -> NP ; -- 9. 45 men @@ -366,18 +375,28 @@ incomplete resource Constructors = open Grammar in { mkNP : PN -> NP ; -- 15. John mkNP : Pron -> NP ; -- 16. he +-- Determiners alone can form noun phrases (this excludes articles, $Art$) + + mkNP : Quant -> NP ; -- 17. this + mkNP : Det -> NP ; -- 18. these five + +-- Determinesless mass noun phrases. + + mkNP : N -> NP ; -- 19. beer + mkNP : CN -> NP ; -- 20. beer + -- A noun phrase once formed can be prefixed by a predeterminer and -- suffixed by a past participle or an adverb. - mkNP : Predet -> NP -> NP ; -- 17. only John - mkNP : NP -> V2 -> NP ; -- 18. John killed - mkNP : NP -> Adv -> NP ; -- 19. John in Paris + mkNP : Predet -> NP -> NP ; -- 21. only John + mkNP : NP -> V2 -> NP ; -- 22. John killed + mkNP : NP -> Adv -> NP ; -- 23. John in Paris -- A conjunction can be formed both from two noun phrases and a longer -- list of them. - mkNP : Conj -> NP -> NP -> NP ; -- 20. John and I - mkNP : Conj -> ListNP -> NP ; -- 21. John, I, and that + mkNP : Conj -> NP -> NP -> NP ; -- 22. John and I + mkNP : Conj -> ListNP -> NP ; -- 23. John, I, and that } ; @@ -410,51 +429,12 @@ incomplete resource Constructors = open Grammar in { mkDet : Pron -> Num -> Det -- 11. my (houses) } ; +--3 Art, articles -{- --- The definite and indefinite articles are commonly used determiners. +-- There are definite and indefinite articles. - defSgDet : Det ; -- 11. the (house) - defPlDet : Det ; -- 12. the (houses) - indefSgDet : Det ; -- 13. a (house) - indefPlDet : Det ; -- 14. (houses) - - ---3 QuantSg, singular quantifiers - --- From quantifiers that can have both forms, this constructor --- builds the singular form. - - mkQuantSg : Quant -> QuantSg ; -- 1. this - --- The mass noun phrase constructor is treated as a singular quantifier. - - massQuant : QuantSg ; -- 2. (mass terms) - --- More singular quantifiers are available in the $Structural$ module. --- The following singular cases of quantifiers are often used. - - the_QuantSg : QuantSg ; -- 3. the - a_QuantSg : QuantSg ; -- 4. a - this_QuantSg : QuantSg ; -- 5. this - that_QuantSg : QuantSg ; -- 6. that - - ---3 QuantPl, plural quantifiers - --- From quantifiers that can have both forms, this constructor --- builds the plural form. - - mkQuantPl : Quant -> QuantPl ; -- 1. these - --- More plural quantifiers are available in the $Structural$ module. --- The following plural cases of quantifiers are often used. - - the_QuantPl : QuantPl ; -- 2. the - a_QuantPl : QuantPl ; -- 3. (indefinite plural) - these_QuantPl : QuantPl ; -- 4. these - those_QuantPl : QuantPl ; -- 5. those --} + the_Art : Art ; -- the + a_Art : Art ; -- a --3 Num, cardinal numerals @@ -470,6 +450,10 @@ incomplete resource Constructors = open Grammar in { mkNum : AdN -> Num -> Num -- 3. almost ten } ; +-- Dummy numbers are sometimes to select the grammatical number of a determiner. + + sgNum : Num ; -- singular + plNum : Num ; -- plural --3 Ord, ordinal numerals @@ -512,6 +496,11 @@ incomplete resource Constructors = open Grammar in { -- See $Numeral$ for the full set of constructors, and use the category -- $Digits$ for other numbers from one million. + mkDigits : overload { + mkDigits : Dig -> Digits ; -- 1. 8 + mkDigits : Dig -> Digits -> Digits ; -- 2. 876 + } ; + n1_Digits : Digits ; -- 1. 1 n2_Digits : Digits ; -- 2. 2 n3_Digits : Digits ; -- 3. 3 @@ -526,8 +515,20 @@ incomplete resource Constructors = open Grammar in { n100_Digits : Digits ; -- 12. 100 n1000_Digits : Digits ; -- 13. 1,000 +--3 Dig, single digits + n0_Dig : Dig ; -- 0. 0 + n1_Dig : Dig ; -- 1. 1 + n2_Dig : Dig ; -- 2. 2 + n3_Dig : Dig ; -- 3. 3 + n4_Dig : Dig ; -- 4. 4 + n5_Dig : Dig ; -- 5. 5 + n6_Dig : Dig ; -- 6. 6 + n7_Dig : Dig ; -- 7. 7 + n8_Dig : Dig ; -- 8. 8 + n9_Dig : Dig ; -- 9. 9 + --2 Nouns --3 CN, common noun phrases @@ -779,7 +780,7 @@ incomplete resource Constructors = open Grammar in { mkRP : Prep -> NP -> RP -> RP ; -- 2. all the houses in which ---3 Slash, objectless sentences +--3 ClSlash, objectless sentences mkClSlash : overload { @@ -803,6 +804,22 @@ incomplete resource Constructors = open Grammar in { } ; +--3 VPSlash, verb phrases missing an object + + mkVPSlash : overload { + +-- This is the deep level of many-argument predication, permitting extraction. + + mkVPSlash : V2 -> VPSlash ; -- 1. (whom) (John) loves + mkVPSlash : V3 -> NP -> VPSlash ; -- 2. (whom) (John) gives an apple + mkVPSlash : V2A -> AP -> VPSlash ; -- 3. (whom) (John) paints red + mkVPSlash : V2Q -> QS -> VPSlash ; -- 4. (whom) (John) asks who sleeps + mkVPSlash : V2S -> S -> VPSlash ; -- 5. (whom) (John) tells that we sleep + mkVPSlash : V2V -> VP -> VPSlash ; -- 6. (whom) (John) forces to sleep + + } ; + + --2 Lists for coordination -- The rules in this section are very uniform: a list can be built from two or more @@ -948,10 +965,10 @@ incomplete resource Constructors = open Grammar in { mkNP = overload { - mkNP : Art -> CN -> NP -- the old man --n14 - = DetArtSg ; mkNP : Art -> N -> NP -- the man --n14 = \d,n -> DetArtSg d (UseN n) ; + mkNP : Art -> CN -> NP -- the old man --n14 + = DetArtSg ; mkNP : Art -> Num -> CN -> NP -- the old men --n14 = \d,nu,cn -> case nu.n of { Sg => DetArtSg d cn ; @@ -986,6 +1003,8 @@ incomplete resource Constructors = open Grammar in { = DetCN ; mkNP : Det -> N -> NP -- the man = \d,n -> DetCN d (UseN n) ; + mkNP : Quant -> NP -- this + = \q -> DetNP (DetQuant q sgNum) ; mkNP : Det -> NP -- this = DetNP ; mkNP : Card -> CN -> NP -- forty-five old men @@ -1076,6 +1095,8 @@ incomplete resource Constructors = open Grammar in { } ; + the_Art : Art = DefArt ; -- the + a_Art : Art = IndefArt ; -- a -- 1.4 -- defSgDet : Det = DetSg (SgQuant DefArt) NoOrd ; -- the (man) @@ -1164,6 +1185,23 @@ incomplete resource Constructors = open Grammar in { mkAdN : CAdv -> AdN = AdnCAdv ; -- more (than five) + mkDigits = overload { + mkDigits : Dig -> Digits = IDig ; + mkDigits : Dig -> Digits -> Digits = IIDig ; + } ; + + n0_Dig = D_0 ; + n1_Dig = D_1 ; + n2_Dig = D_2 ; + n3_Dig = D_3 ; + n4_Dig = D_4 ; + n5_Dig = D_5 ; + n6_Dig = D_6 ; + n7_Dig = D_7 ; + n8_Dig = D_8 ; + n9_Dig = D_9 ; + + mkCN = overload { @@ -1522,11 +1560,33 @@ incomplete resource Constructors = open Grammar in { mkVP : VP -> Adv -> VP -- sleep here = AdvVP ; mkVP : AdV -> VP -> VP -- always sleep - = AdVVP + = AdVVP ; + mkVP : VPSlash -> NP -> VP -- always sleep + = ComplSlash ; + mkVP : VPSlash -> VP + = ReflVP } ; reflexiveVP : V2 -> VP = \v -> ReflVP (SlashV2a v) ; + mkVPSlash = overload { + + mkVPSlash : V2 -> VPSlash -- 1. (whom) (John) loves + = SlashV2a ; + mkVPSlash : V3 -> NP -> VPSlash -- 2. (whom) (John) gives an apple + = Slash2V3 ; + mkVPSlash : V2A -> AP -> VPSlash -- 3. (whom) (John) paints red + = SlashV2A ; + mkVPSlash : V2Q -> QS -> VPSlash -- 4. (whom) (John) asks who sleeps + = SlashV2Q ; + mkVPSlash : V2S -> S -> VPSlash -- 5. (whom) (John) tells that we sleep + = SlashV2S ; + mkVPSlash : V2V -> VP -> VPSlash -- 6. (whom) (John) forces to sleep + = SlashV2V ; + } ; + + + passiveVP = overload { passiveVP : V2 -> VP = PassV2 ; passiveVP : V2 -> NP -> VP = \v,np -> @@ -1573,5 +1633,49 @@ incomplete resource Constructors = open Grammar in { ComplV3 : V3 -> NP -> NP -> VP = \v,o,d -> ComplSlash (Slash2V3 v o) d ; +{- +-- The definite and indefinite articles are commonly used determiners. + + defSgDet : Det ; -- 11. the (house) + defPlDet : Det ; -- 12. the (houses) + indefSgDet : Det ; -- 13. a (house) + indefPlDet : Det ; -- 14. (houses) + + +--3 QuantSg, singular quantifiers + +-- From quantifiers that can have both forms, this constructor +-- builds the singular form. + + mkQuantSg : Quant -> QuantSg ; -- 1. this + +-- The mass noun phrase constructor is treated as a singular quantifier. + + massQuant : QuantSg ; -- 2. (mass terms) + +-- More singular quantifiers are available in the $Structural$ module. +-- The following singular cases of quantifiers are often used. + + the_QuantSg : QuantSg ; -- 3. the + a_QuantSg : QuantSg ; -- 4. a + this_QuantSg : QuantSg ; -- 5. this + that_QuantSg : QuantSg ; -- 6. that + + +--3 QuantPl, plural quantifiers + +-- From quantifiers that can have both forms, this constructor +-- builds the plural form. + + mkQuantPl : Quant -> QuantPl ; -- 1. these + +-- More plural quantifiers are available in the $Structural$ module. +-- The following plural cases of quantifiers are often used. + + the_QuantPl : QuantPl ; -- 2. the + a_QuantPl : QuantPl ; -- 3. (indefinite plural) + these_QuantPl : QuantPl ; -- 4. these + those_QuantPl : QuantPl ; -- 5. those +-} } diff --git a/lib/resource-1.4/doc/MkSynopsis.hs b/lib/resource-1.4/doc/MkSynopsis.hs new file mode 100644 index 000000000..57f1fe31b --- /dev/null +++ b/lib/resource-1.4/doc/MkSynopsis.hs @@ -0,0 +1,240 @@ +import System +import Char +import List + +type Cats = [(String,String,String)] +type Rules = [(String,String,String)] + +main = do + xx <- getArgs + let isLatex = case xx of + "-tex":_ -> True + _ -> False + cs1 <- getCats commonAPI + cs2 <- getCats catAPI + let cs = sortCats (cs1 ++ cs2) + writeFile synopsis "GF Resource Grammar Library: Synopsis" + append "B. Bringert and A. Ranta" + space + append "%!postproc(html): '(SRC=\"categories.png\")' '\\1 USEMAP=\"#categories\"'" + append "%!postproc(html): '#LParadigms' ''" + append "%!postproc(tex): '#LParadigms' ''" + delimit $ addToolTips cs + include "synopsis-intro.txt" + title "Categories" + space + link "Source 1:" commonAPI + space + link "Source 2:" catAPI + space + append "==A hierarchic view==\n" + include "categories-intro.txt" + append "==Explanations==\n" + delimit $ mkCatTable isLatex cs + space + title "Syntax Rules and Structural Words" + space + link "Source 1:" syntaxAPI + space + link "Source 2:" structuralAPI + space + rs <- getRules syntaxAPI + rs2 <- getRules structuralAPI + delimit $ mkSplitTables True isLatex cs $ rs ++ rs2 + space +-- title "Structural Words" +-- space +-- link "Source:" structuralAPI +-- space +-- rs <- rulesTable False isLatex cs structuralAPI +-- delimit rs + space + title "Lexical Paradigms" + mapM_ (putParadigms isLatex cs) paradigmFiles + space + include "synopsis-browse.txt" + space + title "An Example of Usage" + space + include "synopsis-example.txt" + space + let format = if isLatex then "tex" else "html" + system $ "txt2tags -t" ++ format ++ " --toc " ++ synopsis + if isLatex then (system $ "pdflatex synopsis.tex") >> return () else return () + +addToolTips :: Cats -> [String] +addToolTips = map f + where f (n,e,_) = "%!postproc(html): '(?i)(HREF=\"#" ++ n ++ "\")( TITLE=\"[^\"]*\")?' '\\1 TITLE=\"" ++ e' ++ "\"'" + where e' = n ++ if null e then "" else " - " ++ e + +getCats :: FilePath -> IO Cats +getCats file = do + ss <- readFile file >>= return . lines + return $ getrs [] ss + where + getrs rs ss = case ss of + ('-':'-':'.':_):_ -> reverse rs + [] -> reverse rs + ('-':'-':_):ss2 -> getrs rs ss2 + s:ss2 -> case words s of + cat:";":"--":exp -> getrs ((cat,unwords expl, unwords (tail ex)):rs) ss2 where + (expl,ex) = span (/="e.g.") exp + _ -> getrs rs ss2 + +rulesTable :: Bool -> Bool -> Cats -> FilePath -> IO [String] +rulesTable hasEx isLatex cs file = do + rs <- getRules file + return $ mkTable hasEx isLatex cs rs + + +getRules :: FilePath -> IO Rules +getRules file = do + ss <- readFile file >>= return . lines + return $ getrs [] ss + where + getrs rs ss = case ss of + ('-':'-':'.':_):_ -> reverse rs + [] -> reverse rs + ('-':'-':_):ss2 -> getrs rs ss2 + s:ss2 -> case words s of + _:_:"overload":_ -> getrs rs ss2 + _:":":_ -> getrs (rule s:rs) ss2 + _ -> getrs rs ss2 + rule s = (name, typ, ex) + where + ws = words s + name = head ws + (t,e) = span (/="--") (tail ws) + typ = unwords $ filtype (drop 1 t) + filtype = filter (/=";") + ex = if null e then "" else unwords $ unnumber $ drop 1 e + unnumber e = case e of + n:ws | last n == '.' && not (null (init n)) && all isDigit (init n) -> ws + _ -> e + +putParadigms :: Bool -> Cats -> (String, FilePath) -> IO () +putParadigms isLatex cs (lang,file) = do + stitle ("Paradigms for " ++ lang) + append "#LParadigms" + space + link "source" file + space + rs <- rulesTable False isLatex cs file + space + delimit rs + space + +inChunks :: Int -> ([a] -> [String]) -> [a] -> [String] +inChunks i f = concat . intersperse ["\n\n"] . map f . chunks i where + chunks _ [] = [] + chunks i xs = x : chunks i y where (x,y) = splitAt i xs + +-- Makes one table per result category. +-- Adds a subsection header for each table. +mkSplitTables :: Bool -> Bool -> Cats -> Rules -> [String] +mkSplitTables hasEx isLatex cs = concatMap t . addLexicalCats cs . sortRules + where t (c, xs) = [subtitle c expl] ++ tableOrLink + where + expl = case [e | (n,e,_) <- cs, n == c] of + [] -> "" + e:_ -> e + tableOrLink = if null xs then parad else mkTable hasEx isLatex cs xs + parad = [ + "Lexical category, constructors given in", + "[lexical paradigms #RParadigms]." + ] + +mkTable :: Bool -> Bool -> Cats -> Rules -> [String] +mkTable hasEx isLatex cs = inChunks chsize (\rs -> header : map (unwords . row) rs) + where + chsize = if isLatex then 40 else 1000 + header = if hasEx then "|| Function | Type | Example ||" + else "|| Function | Type ||" + row (name,typ,ex) + = if hasEx then ["|", name', "|", typ', "|", ex', "|"] + else ["|", name', "|", typ', "|"] + where + name' = ttf name + typ' = showTyp cs typ + ex' = if null ex then itf (takeWhile (/='_') name) else itf ex + +mkCatTable :: Bool -> Cats -> [String] +mkCatTable isLatex cs = inChunks chsize (\rs -> header ++ map mk1 rs) cs + where + header = ["|| Category | Explanation | Example ||"] + chsize = if isLatex then 40 else 1000 + mk1 (name,expl,ex) = unwords ["|", showCat cs name, "|", expl, "|", typo ex, "|"] + typo ex = if take 1 ex == "\"" then itf (init (tail ex)) else ex + +synopsis = "synopsis.txt" +commonAPI = "../abstract/Common.gf" +catAPI = "../abstract/Cat.gf" +syntaxAPI = "../api/Constructors.gf" +structuralAPI = "../abstract/Structural.gf" +paradigmFiles = [ + ("Bulgarian", "../bulgarian/ParadigmsBul.gf"), + ("Danish", "../danish/ParadigmsDan.gf"), + ("English", "../english/ParadigmsEng.gf"), + ("Finnish", "../finnish/ParadigmsFin.gf"), + ("French", "../french/ParadigmsFre.gf"), + ("German", "../german/ParadigmsGer.gf"), +-- ("Interlingua", "../interlingua/ParadigmsIna.gf"), + ("Italian", "../italian/ParadigmsIta.gf"), + ("Norwegian", "../norwegian/ParadigmsNor.gf"), + ("Russian", "../russian/ParadigmsRus.gf"), + ("Spanish", "../spanish/ParadigmsSpa.gf"), + ("Swedish", "../swedish/ParadigmsSwe.gf") + ] + +append s = appendFile synopsis ('\n':s) +title s = append $ "=" ++ s ++ "=" +stitle s = append $ "==" ++ s ++ "==" +include s = append $ "%!include: " ++ s +space = append "\n" +delimit ss = mapM_ append ss +link s f = append $ s ++ " [``" ++ fa ++ "`` " ++ f ++ "]" where + fa = "http://www.cs.chalmers.se/~aarne/GF/lib/resource" ++ dropWhile (=='.') f + +ttf s = "``" ++ s ++ "``" +itf s = "//" ++ s ++ "//" + +----------------- + +-- sort category synopsis by category, retain one table +sortCats :: Cats -> Cats +sortCats = sortBy compareCat + where compareCat (n1,_,_) (n2,_,_) = compare n1 n2 + +-- sort function synopsis by category, into separate tables +sortRules :: Rules -> [Rules] +sortRules = groupBy sameCat . sortBy compareRules + where sameCat r1 r2 = resultCat r1 == resultCat r2 + compareRules r1@(n1,_,_) r2@(n2,_,_) + = compare (resultCat r1,n1) (resultCat r2,n2) + +addLexicalCats :: Cats -> [Rules] -> [(String,Rules)] +addLexicalCats cs rss = + map head $ groupBy fstEq $ sortBy (\x y -> compare (fst x) (fst y)) $ + [ (resultCat r, rs) | rs@(r:_) <- rss] ++ [(n,[]) | (n,_,_) <- cs] + where fstEq p1 p2 = fst p1 == fst p2 + +resultCat :: (String,String,String) -> String +resultCat (_,t,_) = last (words t) + + +subtitle cat expl = "==" ++ cat ++ e ++ "==" ++ "[" ++ cat ++ "]" + where e = if null expl then "" else " - " ++ expl + +showCat :: Cats -> String -> String +showCat cs cat = "[" ++ cat ++ " #" ++ cat ++ "]" + +showTyp :: Cats -> String -> String +showTyp cs = unwords . map f . words + where f s | head s == '(' && last s == ')' && isCat c + = "(" ++ showCat cs c ++ ")" + | isCat s = showCat cs s + | otherwise = ttf s + where c = init (tail s) + isCat cat = cat `notElem` ["Str","Int"] + && all (\c -> isAlphaNum c || c == '\'') cat + && isUpper (head cat) diff --git a/lib/resource-1.4/doc/categories-imagemap.html b/lib/resource-1.4/doc/categories-imagemap.html new file mode 100644 index 000000000..31f01eef5 --- /dev/null +++ b/lib/resource-1.4/doc/categories-imagemap.html @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/resource-1.4/doc/categories-intro.txt b/lib/resource-1.4/doc/categories-intro.txt new file mode 100644 index 000000000..f5498fcfe --- /dev/null +++ b/lib/resource-1.4/doc/categories-intro.txt @@ -0,0 +1,19 @@ + + +The chart below shows the categories in a hierarchical top-down order. +The edges do not define the complete dependency structure; if they did, +the graph would have many many more edges, and also many cycles. The precise +meaning of a directed edge from //C// to //D// is: there is a constructor +of //C// that takes //D// as an argument. What the constructors exactly are, +and what other arguments they take, is described by separate tables for +each category. + + | [categories.png] | + +%!include(html): ''categories-imagemap.html'' + + +The rectangular boxes mark open lexical categories, which have constructors +also in the ``Paradigms`` modules. + + diff --git a/lib/resource-1.4/doc/categories.dot b/lib/resource-1.4/doc/categories.dot new file mode 100644 index 000000000..69cf67e74 --- /dev/null +++ b/lib/resource-1.4/doc/categories.dot @@ -0,0 +1,149 @@ + +digraph categories { + +size = "11,11" ; +node [href="#\N"]; + +Text [style = "solid", shape = "ellipse"]; +Text -> Punct [style = "solid"]; +Text -> Phr [style = "solid"]; + +Punct [style = "solid", shape = "ellipse"]; + +Phr [style = "solid", shape = "ellipse"]; +Phr -> PConj [style = "solid"]; +Phr -> Utt [style = "solid"]; +Phr -> Voc [style = "solid"]; + +PConj [style = "solid", shape = "ellipse"]; +Voc [style = "solid", shape = "ellipse"]; + +Utt [style = "solid", shape = "ellipse"]; +Utt -> Imp [style = "solid"]; +Utt -> S [style = "solid"]; +Utt -> QS [style = "solid"]; + +Imp [style = "solid", shape = "ellipse"]; + +S [style = "solid", shape = "ellipse"]; +S -> Tense [style = "solid"]; +S -> Ant [style = "solid"]; +S -> Pol [style = "solid"]; +S -> Cl [style = "solid"]; +S -> ListS [style = "solid"]; +S -> Conjs [style = "solid"]; + +Conjs [label = "Conj", href="#Conj", style = "solid", shape = "ellipse"]; + +Tense [style = "solid", shape = "ellipse"]; +Ant [style = "solid", shape = "ellipse"]; +Pol [style = "solid", shape = "ellipse"]; + +Cl [style = "solid", shape = "ellipse"]; +Cl -> NP [style = "solid"]; +Cl -> VP [style = "solid"]; +Cl -> Adv [style = "solid"]; + +Adv [style = "solid", shape = "rectangle"]; +Adv -> Subj [style = "solid"]; +Adv -> ListAdj [style = "solid"]; + + +NP [style = "solid", shape = "ellipse"]; +NP -> Predet [style = "solid"]; +NP -> Pron [style = "solid"]; +NP -> PN [style = "solid"]; +NP -> Det [style = "solid"]; +NP -> CN [style = "solid"]; +NP -> ListNP [style = "solid"]; + +Predet [style = "solid", shape = "ellipse"]; + +Pron [style = "solid", shape = "ellipse"]; +PN [style = "solid", shape = "rectangle"]; + +Det [style = "solid", shape = "ellipse"]; +Det -> Art [style = "solid"]; +Det -> Quant [style = "solid"]; +Det -> Num [style = "solid"]; +Det -> Ord [style = "solid"]; + + +Art [label = "Art", style = "solid", shape = "ellipse"]; +Quant [label = "Quant", style = "solid", shape = "ellipse"]; + + +Num [style = "solid", shape = "ellipse"]; +Num -> Card [style = "solid"]; + +Card [style = "solid", shape = "ellipse"]; +Card -> Numerals [style = "solid"]; +Card -> AdN [style = "solid"]; + +AdN [style = "solid", shape = "ellipse"]; +AdN -> CAdv [style = "solid"]; + +Numerals [label = "Numeral,Digits", href="#Numeral", style = "solid", shape = "ellipse"]; + + +Ord [style = "solid", shape = "ellipse"]; + +CN [style = "solid", shape = "ellipse"]; +CN -> Ns [style = "solid"]; +CN -> RS [style = "solid"]; + +Ns [label = "N,N2,N3", href="#N", style = "solid", shape = "rectangle"]; + + +VP [style = "solid", shape = "ellipse"]; +VP -> AdV [style = "solid"]; +VP -> Vs [style = "solid"]; +VP -> AP [style = "solid"]; + +AdV [style = "solid", shape = "ellipse"]; + +Vs [label = "V,V2,V3,V*,V2*", href="#V", style = "solid", shape = "rectangle"]; + +AP [style = "solid", shape = "ellipse"]; +AP -> AdA [style = "solid"]; +AP -> As [style = "solid"]; +AP -> ListAP [style = "solid"]; + +As [label = "A, A2", href="#A", style = "solid", shape = "rectangle"]; + + + + +QS [style = "solid", shape = "ellipse"]; +QS -> QCl [style = "solid"]; + +QCl [style = "solid", shape = "ellipse"]; +QCl -> IP [style = "solid"]; +QCl -> IAdv [style = "solid"]; +QCl -> ClSlash [style = "solid"]; + +IP [style = "solid", shape = "ellipse"]; +IP -> IDet [style = "solid"]; + +IDet [style = "solid", shape = "ellipse"]; +IDet -> IQuant [style = "solid"]; + +IQuant [style = "solid", shape = "ellipse"]; + +IAdv [style = "solid", shape = "ellipse"]; + +ClSlash [style = "solid", shape = "ellipse"]; +ClSlash -> VPSlash [style = "solid"]; + +VPSlash [style = "solid", shape = "ellipse"]; + +RS [style = "solid", shape = "ellipse"]; +RS -> RCl [style = "solid"]; + +RCl [style = "solid", shape = "ellipse"]; +RCl -> RP [style = "solid"]; + +RP [style = "solid", shape = "ellipse"]; + + +} diff --git a/lib/resource-1.4/doc/categories.png b/lib/resource-1.4/doc/categories.png new file mode 100644 index 0000000000000000000000000000000000000000..590540fc51dc4187be56636998adde51d4f5c469 GIT binary patch literal 123025 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 L`njxgN@xNANfd0H literal 0 HcmV?d00001 diff --git a/lib/resource-1.4/doc/synopsis-browse.txt b/lib/resource-1.4/doc/synopsis-browse.txt new file mode 100644 index 000000000..4d26fc600 --- /dev/null +++ b/lib/resource-1.4/doc/synopsis-browse.txt @@ -0,0 +1,34 @@ + + + + +=Browsing the libraries with GF commands= + +**New**: Browsing by syntax editor +[directly on the web ../../../demos/resource-api/editor.html]. + +All of the following assume +``` + cd $GF_LIB_PATH +``` +To try out inflection paradigms: +``` + > i -path=alltenses -retain alltenses/ParadigmsGer.gfo + > cc mkN "Farbe" +``` +To try out overloaded syntax, test lexicon, and inflection paradigms: +``` + > i -path=alltenses -retain alltenses/TryGer.gfo + > cc mkCl (mkNP this_Quant (mkN "Farbe")) (mkA "dunkel") +``` +% To look for a syntax tree in the overload API by parsing: +% ``` +% > i -path=alltenses alltenses/OverLangEng.gf +% > p -cat=S -overload "this grammar is too big" +% ``` +% To view linearizations in all languages by parsing from English: +% ``` +% > i alltenses/langs.gfcm +% > p -cat=S -lang=LangEng "this grammar is too big" | tb +% ``` + diff --git a/lib/resource-1.4/doc/synopsis-example.txt b/lib/resource-1.4/doc/synopsis-example.txt new file mode 100644 index 000000000..8c992339e --- /dev/null +++ b/lib/resource-1.4/doc/synopsis-example.txt @@ -0,0 +1,51 @@ + +The standard way of building an application has the following modules. + +An abstract syntax: +``` + abstract Music = { + cat + Kind, + Property ; + fun + PropKind : Kind -> Property -> Kind ; + Song : Kind ; + American : Property ; + } +``` +A domain lexicon interface: +``` + interface LexMusic = open Cat in { + oper + song_N : N ; + american_A : A ; + } +``` +A functor on ``Syntax`` and the domain lexicon interface: +``` + incomplete concrete MusicI of Music = open Syntax, MusicLex in { + lincat + Kind = CN ; + Property = AP ; + lin + PropKind k p = mkCN p k ; + Song = mkCN song_N ; + American = mkAP american_A ; + } +``` +For each language, an instance of the domain lexicon: +``` + instance LexMusicGer of LexMusic = CatGer ** open ParadigmsGer in { + oper + song_N = mkN "Lied" "Lieder" neuter ; + american_A = mkA "amerikanisch" ; + } +``` +For each language, an instantiation of the functor: +``` + --# -path=.:present:prelude + + concrete MusicGer of Music = MusicI with + (Syntax = SyntaxGer), + (LexMusic = LexMusicGer) ; +``` diff --git a/lib/resource-1.4/doc/synopsis-intro.txt b/lib/resource-1.4/doc/synopsis-intro.txt new file mode 100644 index 000000000..5a473d241 --- /dev/null +++ b/lib/resource-1.4/doc/synopsis-intro.txt @@ -0,0 +1,26 @@ + + + +=Introduction= + +This document contains the most important parts of the GF Resource Grammar API. +It has been machine-generated from the source files; each chapter gives a link +to the relevant source files, which give more information. Some of the files have +not yet been prepared so that the machine generated documentation has the right +format. + +Since the character encoding is UTF-8 for Russian and Latin-1 for other +languages, you +may have to change the encoding preference of your browser when reading different +parts of the document. + +The second-last chapter gives instructions on how to "browse" the library by +loading the grammars into the ``gf`` command editor. + +**New**: Browsing by syntax editor +[directly on the web ../../../demos/resource-api/editor.html]. + +The last chapter contains a brief example of how application grammars can +import resource modules. At the same time, it illustrates a "design pattern" for +using the resource API to build functor-based applications + diff --git a/lib/resource-1.4/doc/synopsis.html b/lib/resource-1.4/doc/synopsis.html new file mode 100644 index 000000000..b89e82bd0 --- /dev/null +++ b/lib/resource-1.4/doc/synopsis.html @@ -0,0 +1,6263 @@ + + + + +GF Resource Grammar Library: Synopsis + +

GF Resource Grammar Library: Synopsis

+ +B. Bringert and A. Ranta
+
+ +

+
+

+ + +

+
+

+ +

Introduction

+

+This document contains the most important parts of the GF Resource Grammar API. +It has been machine-generated from the source files; each chapter gives a link +to the relevant source files, which give more information. Some of the files have +not yet been prepared so that the machine generated documentation has the right +format. +

+

+Since the character encoding is UTF-8 for Russian and Latin-1 for other +languages, you +may have to change the encoding preference of your browser when reading different +parts of the document. +

+

+The second-last chapter gives instructions on how to "browse" the library by +loading the grammars into the gf command editor. +

+

+New: Browsing by syntax editor +directly on the web. +

+

+The last chapter contains a brief example of how application grammars can +import resource modules. At the same time, it illustrates a "design pattern" for +using the resource API to build functor-based applications +

+ +

Categories

+

+Source 1: http://www.cs.chalmers.se/~aarne/GF/lib/resource/abstract/Common.gf +

+

+Source 2: http://www.cs.chalmers.se/~aarne/GF/lib/resource/abstract/Cat.gf +

+ +

A hierarchic view

+

+The chart below shows the categories in a hierarchical top-down order. +The edges do not define the complete dependency structure; if they did, +the graph would have many many more edges, and also many cycles. The precise +meaning of a directed edge from C to D is: there is a constructor +of C that takes D as an argument. What the constructors exactly are, +and what other arguments they take, is described by separate tables for +each category. +

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+The rectangular boxes mark open lexical categories, which have constructors +also in the Paradigms modules. +

+ +

Explanations

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CategoryExplanationExample
Aone-place adjectivewarm
A2two-place adjectivedivisible
APadjectival phrasevery warm
AdAadjective-modifying adverbvery
AdNnumeral-modifying adverbmore than
AdVadverb directly attached to verbalways
Advverb-phrase-modifying adverbin the house
Antanterioritysimultaneous, anterior
Artarticlethe
CAdvcomparative adverbmore
CNcommon noun (without determiner)red house
Cardcardinal numberseven
Cldeclarative clause, with all tensesshe looks at this
Compcomplement of copula, such as APvery warm
Conjconjunctionand
Detdeterminer phrasethose seven
Digitscardinal or ordinal in digits1,000/1,000th
IAdvinterrogative adverbwhy
ICompinterrogative complement of copulawhere
IDetinterrogative determinerhow many
IPinterrogative pronounwho
Impimperativelook at this
Ncommon nounhouse
N2relational nounson
N3three-place relational nounconnection
NPnoun phrase (subject or object)the red house
Numnumber determining elementseven
Numeralcardinal or ordinal in wordsfive/fifth
Ordordinal number (used in Det)seventh
PConjphrase-beginning conjunctiontherefore
PNproper nameParis
Phrphrase in a textbut be quiet please
Polpolaritypositive, negative
Predetpredeterminer (prefixed Quant)all
Preppreposition, or just casein
Pronpersonal pronounshe
QClquestion clause, with all tenseswhy does she walk
QSquestionwhere did she live
Quantquantifier ('nucleus' of Det)this/these
RClrelative clause, with all tensesin which she lives
RPrelative pronounin which
RSrelativein which she lived
Sdeclarative sentenceshe lived here
SCembedded sentence or questionthat it rains
Subjsubjunctionif
Tensetensepresent, past, future
Texttext consisting of several phrasesHe is here. Why?
Uttsentence, question, word...be quiet
Vone-place verbsleep
V2two-place verblove
V2Averb with NP and AP complementpaint
V2Qverb with NP and Q complementask
V2Sverb with NP and S complementtell
V2Vverb with NP and V complementcause
V3three-place verbshow
VAadjective-complement verblook
VPverb phraseis very warm
VPSlashverb phrase missing complementgive to John
VQquestion-complement verbwonder
VSsentence-complement verbclaim
VVverb-phrase-complement verbwant
Vocvocative or "please"my darling
+ + +

Syntax Rules and Structural Words

+

+Source 1: http://www.cs.chalmers.se/~aarne/GF/lib/resource/api/Constructors.gf +

+

+Source 2: http://www.cs.chalmers.se/~aarne/GF/lib/resource/abstract/Structural.gf +

+ +

A - one-place adjective

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

A2 - two-place adjective

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

AP - adjectival phrase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkAPA -> APold
mkAPA -> NP -> APolder than John
mkAPA2 -> NP -> APmarried to her
mkAPA2 -> APmarried to myself
mkAPAP -> S -> APprobable that John walks
mkAPAP -> QS -> APuncertain if John walks
mkAPAP -> VP -> APready to go
mkAPAdA -> A -> APvery old
mkAPAdA -> AP -> APvery very old
mkAPConj -> AP -> AP -> APold and big
mkAPConj -> ListAP -> APold, big, and warm
+ + +

AdA - adjective-modifying adverb

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
almost_AdAAdAalmost
quite_AdvAdAquite
so_AdAAdAso
too_AdAAdAtoo
very_AdAAdAvery
+ + +

AdN - numeral-modifying adverb

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
almost_AdNAdNalmost
mkAdNCAdv -> AdNmore than
+ + +

AdV - adverb directly attached to verb

+ + + + + + + + + + + +
FunctionTypeExample
always_AdVAdValways
+ + +

Adv - verb-phrase-modifying adverb

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
everywhere_AdvAdveverywhere
here7from_AdvAdvfrom here
here7to_AdvAdvto here
here_AdvAdvhere
mkAdvA -> Advwarmly
mkAdvPrep -> NP -> Advwith John
mkAdvSubj -> S -> Advwhen John walks
mkAdvCAdv -> A -> NP -> Advmore warmly than John
mkAdvCAdv -> A -> S -> Advmore warmly than John walks
mkAdvAdA -> Adv -> Advvery warmly
mkAdvConj -> Adv -> Adv -> Advhere and now
mkAdvConj -> ListAdv -> Advwith John, here and now
somewhere_AdvAdvsomewhere
there7from_AdvAdvfrom there
there7to_AdvAdvto there
there_AdvAdvthere
+ + +

Ant - anteriority

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
anteriorAntAnt(John has walked) --# notpresent
simultaneousAntAnt(John walks) [default]
+ + +

Art - article

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
a_ArtArta
the_ArtArtthe
+ + +

CAdv - comparative adverb

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
less_CAdvCAdvless
more_CAdvCAdvmore
+ + +

CN - common noun (without determiner)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkCNN -> CNhouse
mkCNN2 -> NP -> CNmother of John
mkCNN3 -> NP -> NP -> CNdistance from this city to Paris
mkCNN2 -> CNson
mkCNN3 -> CNflight
mkCNA -> N -> CNbig house
mkCNA -> CN -> CNbig blue house
mkCNAP -> N -> CNvery big house
mkCNAP -> CN -> CNvery big blue house
mkCNN -> RS -> CNhouse that John loves
mkCNCN -> RS -> CNbig house that John loves
mkCNN -> Adv -> CNhouse in the city
mkCNCN -> Adv -> CNbig house in the city
mkCNCN -> S -> CNrule that John walks
mkCNCN -> QS -> CNquestion if John walks
mkCNCN -> VP -> CNreason to walk
mkCNN -> NP -> CNking John
mkCNCN -> NP -> CNold king John
+ + +

Card - cardinal number

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

Cl - declarative clause, with all tenses

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
genericClVP -> Clone walks
mkClNP -> V -> ClJohn walks
mkClNP -> V2 -> NP -> ClJohn loves her
mkClNP -> V3 -> NP -> NP -> ClJohn sends it to her
mkClNP -> VV -> VP -> ClJohn wants to walk
mkClNP -> VS -> S -> ClJohn says that it is good
mkClNP -> VQ -> QS -> ClJohn wonders if it is good
mkClNP -> VA -> AP -> ClJohn becomes old
mkClNP -> V2A -> NP -> AP -> ClJohn paints it red
mkClNP -> V2S -> NP -> S -> ClJohn tells her that we are here
mkClNP -> V2Q -> NP -> QS -> ClJohn asks her who is here
mkClNP -> V2V -> NP -> VP -> ClJohn forces us to sleep
mkClNP -> A -> ClJohn is old
mkClNP -> A -> NP -> ClJohn is older than her
mkClNP -> A2 -> NP -> ClJohn is married to her
mkClNP -> AP -> ClJohn is very old
mkClNP -> N -> ClJohn is a man
mkClNP -> CN -> ClJohn is an old man
mkClNP -> NP -> ClJohn is the man
mkClNP -> Adv -> ClJohn is here
mkClNP -> VP -> ClJohn walks here
mkClV -> Clit rains
mkClVP -> Clit is raining
mkClN -> Clthere is a house
mkClCN -> Clthere is an old houses
mkClNP -> Clthere are five houses
mkClNP -> RS -> Clit is John that walks
mkClAdv -> S -> Clit is here John walks
+ + +

ClSlash

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkClSlashNP -> V2 -> ClSlash(whom) John loves
mkClSlashNP -> VV -> V2 -> ClSlash(whom) John wants to see
mkClSlashCl -> Prep -> ClSlash(with whom) John walks
mkClSlashClSlash -> Adv -> ClSlash(whom) John loves today
+ + +

Comp - complement of copula, such as AP

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

Conj - conjunction

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
and_ConjConjand
both7and_DConjConjboth...and
either7or_DConjConjeither...or
or_ConjConjor
+ + +

Det - determiner phrase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
every_DetDetevery
few_DetDetfew
many_DetDetmany
mkDetQuant -> Detthis
mkDetQuant -> (Ord) -> Detthis first
mkDetQuant -> Num -> Detthese
mkDetQuant -> Num -> (Ord) -> Detthese five best
mkDetQuant -> Detthis
mkDetQuant -> Num -> Detthese five
mkDetCard -> Detalmost twenty
mkDetNumeral -> Detfive
mkDetDigits -> Det51
mkDetPron -> Detmy (house)
mkDetPron -> Num -> Detmy (houses)
much_DetDetmuch
somePl_DetDetsomePl
someSg_DetDetsomeSg
+ + +

Dig

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
n0_DigDig0
n1_DigDig1
n2_DigDig2
n3_DigDig3
n4_DigDig4
n5_DigDig5
n6_DigDig6
n7_DigDig7
n8_DigDig8
n9_DigDig9
+ + +

Digits - cardinal or ordinal in digits

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkDigitsDig -> Digits8
mkDigitsDig -> Digits -> Digits876
n1000_DigitsDigits1,000
n100_DigitsDigits100
n10_DigitsDigits10
n1_DigitsDigits1
n20_DigitsDigits20
n2_DigitsDigits2
n3_DigitsDigits3
n4_DigitsDigits4
n5_DigitsDigits5
n6_DigitsDigits6
n7_DigitsDigits7
n8_DigitsDigits8
n9_DigitsDigits9
+ + +

IAdv - interrogative adverb

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
how_IAdvIAdvhow
mkIAdvPrep -> IP -> IAdvin which city
when_IAdvIAdvwhen
where_IAdvIAdvwhere
why_IAdvIAdvwhy
+ + +

IComp - interrogative complement of copula

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

IDet - interrogative determiner

+ + + + + + + + + + + +
FunctionTypeExample
how8many_IDetIDethow8many
+ + +

IP - interrogative pronoun

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkIPIQuant -> N -> IPwhich city
mkIPIQuant -> (Num) -> CN -> IPwhich five big cities
mkIPIP -> Adv -> IPwho in Paris
whatPl_IPIPwhat (plural)
whatSg_IPIPwhat (singular)
whoPl_IPIPwho (plural)
whoSg_IPIPwho (singular)
+ + +

IQuant

+ + + + + + + + + + + +
FunctionTypeExample
which_IQuantIQuantwhich
+ + +

Imp - imperative

+ + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkImpV -> Impgo
mkImpV2 -> NP -> Imptake it
mkImpVP -> Impgo there now
+ + +

ImpForm

+ + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
pluralImpFormImpForm(help yourselves)
politeImpFormImpForm(help yourself) (polite singular)
singularImpFormImpForm(help yourself) [default]
+ + +

ListAP

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
mkListAPAP -> AP -> ListAPold, big
mkListAPAP -> ListAP -> ListAPold, big, warm
+ + +

ListAdv

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
mkListAdvAdv -> Adv -> ListAdvhere, now
mkListAdvAdv -> ListAdv -> ListAdvto me, here, now
+ + +

ListNP

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
mkListNPNP -> NP -> ListNPJohn, I
mkListNPNP -> ListNP -> ListNPJohn, I, that
+ + +

ListS

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
mkListSS -> S -> ListShe walks, I run
mkListSS -> ListS -> ListSJohn walks, I run, you sleep
+ + +

N - common noun

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

N2 - relational noun

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

N3 - three-place relational noun

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

NP - noun phrase (subject or object)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
everybody_NPNPeverybody
everything_NPNPeverything
mkNPArt -> NPthe man
mkNPArt -> (Num) -> CN -> NPthe five old men
mkNPQuant -> N -> NPthis men
mkNPDet -> N -> NPthe first man
mkNPDet -> CN -> NPthe first old man
mkNPNumeral -> N -> NPtwenty men
mkNPNumeral -> CN -> NPtwenty old men
mkNPDigits -> N -> NP45 men
mkNPDigits -> CN -> NP45 old men
mkNPCard -> N -> NPalmost twenty men
mkNPCard -> CN -> NPalmost twenty old men
mkNPPron -> N -> NPmy man
mkNPPron -> CN -> NPmy old man
mkNPPN -> NPJohn
mkNPPron -> NPhe
mkNPQuant -> NPthis
mkNPDet -> NPthese five
mkNPN -> NPbeer
mkNPCN -> NPbeer
mkNPPredet -> NP -> NPonly John
mkNPNP -> V2 -> NPJohn killed
mkNPNP -> Adv -> NPJohn in Paris
mkNPConj -> NP -> NP -> NPJohn and I
mkNPConj -> ListNP -> NPJohn, I, and that
somebody_NPNPsomebody
something_NPNPsomething
+ +

+==NP;==[NP;] +

+ + + + + + + + + + + +
FunctionTypeExample
mkNPQuant -> (Num) -> CN -> NP;these five old men
+ + +

Num - number determining element

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkNumNumeral -> Numtwenty
mkNumDigits -> Num51
mkNumAdN -> Num -> Numalmost ten
plNumNumplural
sgNumNumsingular
+ + +

Numeral - cardinal or ordinal in words

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
n1000_NumeralNumeralthousand
n100_NumeralNumeralhundred
n10_NumeralNumeralten
n1_NumeralNumeralone
n20_NumeralNumeraltwenty
n2_NumeralNumeraltwo
n3_NumeralNumeralthree
n4_NumeralNumeralfour
n5_NumeralNumeralfive
n6_NumeralNumeralsix
n7_NumeralNumeralseven
n8_NumeralNumeraleight
n9_NumeralNumeralnine
+ + +

Ord - ordinal number (used in Det)

+ + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkOrdNumeral -> Ordtwentieth
mkOrdDigits -> Ord51st
mkOrdA -> Ordbest
+ + +

PConj - phrase-beginning conjunction

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
but_PConjPConjbut
mkPConjConj -> PConjand
otherwise_PConjPConjotherwise
therefore_PConjPConjtherefore
+ + +

PN - proper name

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

Phr - phrase in a text

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkPhrUtt -> Phrwhy
mkPhr(PConj) -> Utt -> (Voc) -> Phrbut why John
mkPhrS -> PhrJohn walked
mkPhrCl -> PhrJohn walks
mkPhrQS -> Phrdid John walk
mkPhrImp -> Phrwalk
+ + +

Pol - polarity

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
negativePolPol(John doesn't walk)
positivePolPol(John walks) [default]
+ + +

Predet - predeterminer (prefixed Quant)

+ + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
all_PredetPredetall
most_PredetPredetmost
only_PredetPredetonly
+ + +

Prep - preposition, or just case

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
above_PrepPrepabove
after_PrepPrepafter
before_PrepPrepbefore
behind_PrepPrepbehind
between_PrepPrepbetween
by8agent_PrepPrepby (agent)
by8means_PrepPrepby (means of)
during_PrepPrepduring
for_PrepPrepfor
from_PrepPrepfrom
in8front_PrepPrepin front of
in_PrepPrepin
on_PrepPrepon
part_PrepPreppart
possess_PrepPrepof (possessive)
through_PrepPrepthrough
to_PrepPrepto
under_PrepPrepunder
with_PrepPrepwith
without_PrepPrepwithout
+ + +

Pron - personal pronoun

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
he_PronPronhe
i_PronProni
it_PronPronit
she_PronPronshe
they_PronPronthey
we_PronPronwe
youPl_PronPronyou (plural)
youPol_PronPronyou (polite)
youSg_PronPronyou (singular)
+ + +

Punct

+ + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
exclMarkPunctPunct!
fullStopPunctPunct.
questMarkPunctPunct?
+ + +

QCl - question clause, with all tenses

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkQClCl -> QCldoes John walk
mkQClIP -> VP -> QClwho walks
mkQClIP -> NP -> V2 -> QClwhom does John love
mkQClIP -> ClSlash -> QClwhom does John love today
mkQClIAdv -> Cl -> QClwhy does John walk
mkQClPrep -> IP -> Cl -> QClwith who does John walk
mkQClIAdv -> NP -> QClwhere is John
mkQClIP -> QClwhat is there
+ + +

QS - question

+ + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkQSQCl -> QSwho walks
mkQS(Tense) -> (Ant) -> (Pol) -> QCl -> QSwho wouldn't have walked
mkQSCl -> QSdoes John walk
+ + +

Quant - quantifier ('nucleus' of Det)

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
that_QuantQuantthat
this_QuantQuantthis
+ + +

RCl - relative clause, with all tenses

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkRClRP -> VP -> RClthat walk
mkRClRP -> NP -> V2 -> RClwhich John loves
mkRClRP -> ClSlash -> RClwhich John loves today
mkRClCl -> RClsuch that John loves her
+ + +

RP - relative pronoun

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
mkRPPrep -> NP -> RP -> RPall the houses in which
which_RPRPwhich
+ + +

RS - relative

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
mkRSRCl -> RSthat walk
mkRS(Tense) -> (Ant) -> (Pol) -> RCl -> RSthat wouldn't have walked
+ + +

S - declarative sentence

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkSCl -> SJohn walks
mkS(Tense) -> (Ant) -> (Pol) -> Cl -> SJohn wouldn't have walked
mkSConj -> S -> S -> SJohn walks and I run
mkSConj -> ListS -> SJohn walks, I run and you sleep
mkSAdv -> S -> Stoday, John walks
+ + +

SC - embedded sentence or question

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

Subj - subjunction

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
although_SubjSubjalthough
because_SubjSubjbecause
if_SubjSubjif
when_SubjSubjwhen
+ + +

Tense - tense

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
conditionalTenseTense(John would walk) --# notpresent
futureTenseTense(John will walk) --# notpresent
pastTenseTense(John walked) --# notpresent
presentTenseTense(John walks) [default]
+ + +

Text - text consisting of several phrases

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
emptyTextText(empty text)
mkTextPhr -> TextBut John walks.
mkTextPhr -> (Punct) -> (Text) -> TextJohn walks? Yes.
mkTextUtt -> TextJohn.
mkTextS -> TextJohn walked.
mkTextCl -> TextJohn walks.
mkTextQS -> TextDid John walk?
mkTextImp -> TextWalk!
mkTextText -> Text -> TextWhere? When? Here. Now!
+ + +

Utt - sentence, question, word...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
lets_UttVP -> Uttlet's walk
mkUttS -> UttJohn walked
mkUttCl -> UttJohn walks
mkUttQS -> Uttdid John walk
mkUttImp -> Uttlove yourself
mkUtt(ImpForm) -> (Pol) -> Imp -> Uttdon't love yourselves
mkUttIP -> Uttwho
mkUttIAdv -> Uttwhy
mkUttNP -> UttJohn
mkUttAdv -> Utthere
mkUttVP -> Uttto walk
no_UttUttno
yes_UttUttyes
+ + +

V - one-place verb

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

V2 - two-place verb

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

V2A - verb with NP and AP complement

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

V2Q - verb with NP and Q complement

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

V2S - verb with NP and S complement

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

V2V - verb with NP and V complement

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

V3 - three-place verb

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

VA - adjective-complement verb

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

VP - verb phrase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkVPV -> VPwalk
mkVPV2 -> NP -> VPlove her
mkVPV3 -> NP -> NP -> VPsend it to her
mkVPVV -> VP -> VPwant to walk
mkVPVS -> S -> VPknow that she walks
mkVPVQ -> QS -> VPask if she walks
mkVPVA -> AP -> VPbecome old
mkVPV2A -> NP -> AP -> VPpaint it red
mkVPA -> VPbe warm
mkVPAP -> VPbe very warm
mkVPA -> NP -> VPbe older than her
mkVPA2 -> NP -> VPbe married to her
mkVPN -> VPbe a man
mkVPCN -> VPbe an old man
mkVPNP -> VPbe the man
mkVPAdv -> VPbe here
mkVPVP -> Adv -> VPsleep here
mkVPAdV -> VP -> VPalways sleep
mkVPVPSlash -> NP -> VPpaint it black
mkVPVPSlash -> VPpaint itself black
passiveVPV2 -> VPbe loved
passiveVPV2 -> NP -> VPbe loved by her
progressiveVPVP -> VPbe sleeping
reflexiveVPV2 -> VPlove itself
+ + +

VPSlash - verb phrase missing complement

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
mkVPSlashV2 -> VPSlash(whom) (John) loves
mkVPSlashV3 -> NP -> VPSlash(whom) (John) gives an apple
mkVPSlashV2A -> AP -> VPSlash(whom) (John) paints red
mkVPSlashV2Q -> QS -> VPSlash(whom) (John) asks who sleeps
mkVPSlashV2S -> S -> VPSlash(whom) (John) tells that we sleep
mkVPSlashV2V -> VP -> VPSlash(whom) (John) forces to sleep
+ + +

VQ - question-complement verb

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

VS - sentence-complement verb

+

+Lexical category, constructors given in +lexical paradigms. +

+ +

VV - verb-phrase-complement verb

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionTypeExample
can8know_VVVVcan8know
can_VVVVcan
must_VVVVmust
want_VVVVwant
+ + +

Voc - vocative or "please"

+ + + + + + + + + + + + + + + + +
FunctionTypeExample
mkVocNP -> VocJohn
please_VocVocplease
+ + +

Lexical Paradigms

+ +

Paradigms for Bulgarian

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/bulgarian/ParadigmsBul.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
mkN001Str -> N
mkN002Str -> N
mkN002aStr -> N
mkN003Str -> N
mkN004Str -> N
mkN005Str -> N
mkN006Str -> N
mkN007Str -> N
mkN007bStr -> N
mkN007aStr -> N
mkN008Str -> N
mkN008aStr -> N
mkN009Str -> N
mkN009aStr -> N
mkN010Str -> N
mkN011Str -> N
mkN012Str -> N
mkN013Str -> N
mkN014Str -> N
mkN014aStr -> N
mkN015Str -> N
mkN016Str -> N
mkN017Str -> N
mkN018Str -> N
mkN018aStr -> N
mkN019Str -> N
mkN019aStr -> N
mkN020Str -> N
mkN021Str -> N
mkN022Str -> N
mkN023Str -> N
mkN024aStr -> N
mkN024Str -> N
mkN025Str -> N
mkN026Str -> N
mkN027Str -> N
mkN028Str -> N
mkN028aStr -> N
mkN029Str -> N
mkN030Str -> N
mkN031Str -> N
mkN031aStr -> N
mkN032Str -> N
mkN032aStr -> N
mkN033Str -> N
mkN034Str -> N
mkN035Str -> N
mkN035aStr -> N
mkN036Str -> N
mkN037Str -> N
mkN038Str -> N
mkN039Str -> N
mkN040Str -> N
mkN040aStr -> N
mkN041Str -> N
mkN041aStr -> N
mkN041bStr -> N
mkN042Str -> N
mkN043Str -> N
mkN043aStr -> N
mkN044Str -> N
mkN045Str -> N
mkN046Str -> N
mkN047Str -> N
mkN048Str -> N
mkN049Str -> N
mkN050Str -> N
mkN051Str -> N
mkN052Str -> N
mkN052aStr -> N
mkN053Str -> N
mkN054Str -> N
mkN055Str -> N
mkN056Str -> N
mkN057Str -> N
mkN057aStr -> N
mkN058Str -> N
mkN059Str -> N
mkN060Str -> N
mkN061Str -> N
mkN062Str -> N
mkN063Str -> N
mkN064Str -> N
mkN065Str -> N
mkN066Str -> N
mkN067Str -> N
mkN068Str -> N
mkN069Str -> N
mkN070Str -> N
mkN071Str -> N
mkN072Str -> N
mkN073Str -> N
mkN074Str -> N
mkN075Str -> N
mkA076Str -> A
mkA077Str -> A
mkA078Str -> A
mkA079Str -> A
mkA080Str -> A
mkA081Str -> A
mkA082Str -> A
mkA082aStr -> A
mkA083Str -> A
mkA084Str -> A
mkA084aStr -> A
mkA085Str -> A
mkA086Str -> A
mkA087Str -> A
mkA088Str -> A
mkA089Str -> A
mkA089aStr -> A
mkV142Str -> VTable
mkV143Str -> VTable
mkV144Str -> VTable
mkV145Str -> VTable
mkV145aStr -> VTable
mkV145bStr -> VTable
mkV146Str -> VTable
mkV146aStr -> VTable
mkV147Str -> VTable
mkV148Str -> VTable
mkV149Str -> VTable
mkV150Str -> VTable
mkV150aStr -> VTable
mkV151Str -> VTable
mkV152Str -> VTable
mkV152aStr -> VTable
mkV153Str -> VTable
mkV154Str -> VTable
mkV155Str -> VTable
mkV156Str -> VTable
mkV157Str -> VTable
mkV158Str -> VTable
mkV159Str -> VTable
mkV160Str -> VTable
mkV160aStr -> VTable
mkV161Str -> VTable
mkV161aStr -> VTable
mkV162Str -> VTable
mkV163Str -> VTable
mkV164Str -> VTable
mkV165Str -> VTable
mkV166Str -> VTable
mkV167Str -> VTable
mkV168Str -> VTable
mkV169Str -> VTable
mkV170Str -> VTable
mkV171Str -> VTable
mkV172Str -> VTable
mkV173Str -> VTable
mkV174Str -> VTable
mkV175Str -> VTable
mkV176Str -> VTable
mkV177Str -> VTable
mkV178Str -> VTable
mkV179Str -> VTable
mkV180Str -> VTable
mkV181Str -> VTable
mkV182Str -> VTable
mkV183Str -> VTable
mkV184Str -> VTable
mkV185Str -> VTable
mkV186Str -> VTable
mkV187Str -> VTable
adjAdvA -> Str -> A =
+ + +

Paradigms for Danish

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/danish/ParadigmsDan.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
GenderType
utrumGender
neutrumGender
NumberType
singularNumber
pluralNumber
CaseType
nominativeCase
genitiveCase
mkPrepStr -> Prep
noPrepPrep
mkN(bil : Str) -> N
mkN(hus : Str) -> Gender -> N
mkN(bil,bilen : Str) -> N
mkN(bil,bilen,biler : Str) -> N
mkN(dreng,drengen,drenge,drengene : Str) -> N
mkN2N -> Prep -> N2
regN2Str -> Gender -> N2
mkN3N -> Prep -> Prep -> N3
mkPNStr -> PN
mkPNStr -> Gender -> PN
mkPNN -> PN
mkA(fin : Str) -> A
mkA(fin,fint : Str) -> A
mkA(galen,galet,galne : Str) -> A
mkA(stor,stort,store,storre,storst : Str) -> A
mkAA -> A
mkA2A -> Prep -> A2
mkAdvStr -> Adv
mkAdVStr -> AdV
mkAdAStr -> AdA
mkV(snakke : Str) -> V
mkV(leve,levde : Str) -> V
mkV(drikke, drakk, drukket : Str) -> V
mkV(spise,spiser,spises,spiste,spist,spis : Str) -> V
mkVV -> Str -> V
vaereVV -> V
depVV -> V
reflVV -> V
mkV2Str -> V2
mkV2V -> V2
mkV2V -> Prep -> V2
mkV3V -> Prep -> Prep -> V3
dirV3V -> Prep -> V3
dirdirV3V -> V3
mkV0V -> V0
mkVSV -> VS
mkV2SV -> Prep -> V2S
mkVVV -> VV
mkV2VV -> Prep -> Prep -> V2V
mkVAV -> VA
mkV2AV -> Prep -> V2A
mkVQV -> VQ
mkV2QV -> Prep -> V2Q
mkASA -> AS
mkA2SA -> Prep -> A2S
mkAVA -> AV
mkA2VA -> Prep -> A2V
V0Type
+ + +

Paradigms for English

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/english/ParadigmsEng.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
GenderType
humanGender
nonhumanGender
masculineGender
feminineGender
NumberType
singularNumber
pluralNumber
CaseType
nominativeCase
genitiveCase
mkN(flash : Str) -> N
mkN(man,men : Str) -> N
mkN(man,men,man's,men's : Str) -> N
mkNGender -> N -> N
mkNStr -> N -> N
mkN2N -> Prep -> N2
regN2Str -> N2
mkN3N -> Prep -> Prep -> N3
mkPNStr -> PN
mkPNN -> PN
mkA(happy : Str) -> A
mkA(fat,fatter : Str) -> A
mkA(good,better,best,well : Str) -> A
compoundAA -> A
mkA2A -> Prep -> A2
mkAdvStr -> Adv
mkAdVStr -> AdV
mkAdAStr -> AdA
mkPrepStr -> Prep
noPrepPrep
mkV(cry : Str) -> V
mkV(stop, stopped : Str) -> V
mkV(drink, drank, drunk : Str) -> V
mkV(run, ran, run, running : Str) -> V
mkV(go, goes, went, gone, going : Str) -> V
partVV -> Str -> V
reflVV -> V
mkV2V -> Prep -> V2
mkV2V -> V2
mkV3V -> Prep -> Prep -> V3
dirV3V -> Prep -> V3
dirdirV3V -> V3
mkV0V -> V0
mkVSV -> VS
mkV2SV -> Prep -> V2S
mkVVV -> VV
mkV2VV -> Prep -> Prep -> V2V
mkVAV -> VA
mkV2AV -> Prep -> V2A
mkVQV -> VQ
mkV2QV -> Prep -> V2Q
mkASA -> AS
mkA2SA -> Prep -> A2S
mkAVA -> AV
mkA2VA -> Prep -> A2V
V0Type
+ + +

Paradigms for Finnish

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/finnish/ParadigmsFin.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
NumberType
singularNumber
pluralNumber
CaseType
nominativeCase
genitiveCase
partitiveCase
translativeCase
inessiveCase
elativeCase
illativeCase
adessiveCase
ablativeCase
allativeCase
prePrepCase -> Str -> Prep
postPrepCase -> Str -> Prep
postGenPrepStr -> Prep
casePrepCase -> Prep
mkN(talo : Str) -> N
mkN(savi,savia : Str) -> N
mkN(vesi,veden,vesiä : Str) -> N
mkN(vesi,veden,vesiä,vettä : Str) -> N
mkN(olo,olon,olona,oloa,oloon,olojen,oloja,oloina,oloissa,oloihin : Str) -> N
mkN(pika : Str) -> (juna : N) -> N
mkN(oma : N) -> (tunto : N) -> N
mkN2N -> N2
mkN2N -> Prep -> N2
mkN3N -> Prep -> Prep -> N3
mkPNStr -> PN
mkPNN -> PN
mkAStr -> A
mkAN -> A
mkAN -> (kivempaa,kivinta : Str) -> A
mkA(hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A
mkA2A -> Prep -> A2 = \a,p -> a ** {c2 = p lock_A2 = <>};
mkV(huutaa : Str) -> V
mkV(huutaa,huusi : Str) -> V
mkV(huutaa,huudan,huusi : Str) -> V
mkV(
huusin,huusi,huusisi,huutanut,huudettu,huutaneeStr) -> V
caseVCase -> V -> V
vOllaV
mkV2Str -> V2
mkV2V -> V2
mkV2V -> Case -> V2
mkV2V -> Prep -> V2
mkV3V -> Prep -> Prep -> V3
dirV3V -> Case -> V3
dirdirV3V -> V3
mkV0V -> V0
mkVSV -> VS
mkV2SV -> Prep -> V2S
mkVVV -> VV
mkV2VV -> Prep -> V2V
mkVAV -> Prep -> VA
mkV2AV -> Prep -> Prep -> V2A
mkVQV -> VQ
mkV2QV -> Prep -> V2Q
mkASA -> AS
mkA2SA -> Prep -> A2S
mkAVA -> AV
mkA2VA -> Prep -> A2V
V0Type
+ + +

Paradigms for French

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/french/ParadigmsFre.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
GenderType
masculineGender
feminineGender
NumberType
singularNumber
pluralNumber
accusativePrep
genitivePrep
dativePrep
mkPrepStr -> Prep
mkN(cheval : Str) -> N
mkN(foie : Str) -> Gender -> N
mkN(oeil,yeux : Str) -> Gender -> N
mkNN -> Str -> N
mkN2N -> Prep -> N2
deN2N -> N2
aN2N -> N2
mkN3N -> Prep -> Prep -> N3
mkPNStr -> PN
mkPNStr -> Gender -> PN
mkA(cher : Str) -> A
mkA(sec,seche : Str) -> A
mkA(banal,banale,banaux,banalement : Str) -> A
mkAA -> A -> A
prefixAA -> A
mkA2A -> Prep -> A2
mkAdvStr -> Adv
mkAdVStr -> AdV
mkAdAStr -> AdA
mkV(finir : Str) -> V
mkV(jeter,jette,jettera : Str) -> V
mkVV2 -> V
etreVV -> V
reflVV -> V
mkV2V -> V2 = dirV2
mkV2V -> Prep -> V2 = mmkV2
mkV3V -> V3
mkV3V -> Prep -> V3
mkV3V -> Prep -> Prep -> V3
mkV0V -> V0
mkVSV -> VS
mkV2SV -> Prep -> V2S
mkVVV -> VV
deVVV -> VV
aVVV -> VV
mkV2VV -> Prep -> Prep -> V2V
mkVAV -> VA
mkV2AV -> Prep -> Prep -> V2A
mkVQV -> VQ
mkV2QV -> Prep -> V2Q
mkASA -> AS
mkA2SA -> Prep -> A2S
mkAVA -> Prep -> AV
mkA2VA -> Prep -> Prep -> A2V
V0Type
+ + +

Paradigms for German

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/german/ParadigmsGer.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
GenderType
masculineGender
feminineGender
neuterGender
CaseType
nominativeCase
accusativeCase
dativeCase
genitiveCase
NumberType
singularNumber
pluralNumber
mkN(Stufe : Str) -> N
mkN(Bild,Bilder : Str) -> Gender -> N
mkN(x1,_,_,_,_,x6 : Str) -> Gender -> N
mkN2Str -> N2
mkN2N -> N2
mkN2N -> Prep -> N2
mkN3N -> Prep -> Prep -> N3
mkPNStr -> PN
mkPN(nom,gen : Str) -> PN
mkPN(nom,acc,dat,gen : Str) -> PN
mkAStr -> A
mkA(gut,besser,beste : Str) -> A
invarAStr -> A
mkA2A -> Prep -> A2
mkAdvStr -> Adv
mkPrepStr -> Case -> Prep
accPrepPrep
datPrepPrep
genPrepPrep
von_PrepPrep
zu_PrepPrep
mkV(führen : Str) -> V
mkV(sehen,sieht,sah,sähe,gesehen : Str) -> V
mkV(geben, gibt, gib, gab, gäbe, gegeben : Str) -> V
mkVStr -> V -> V
no_geVV -> V
seinVV -> V
habenVV -> V
reflVV -> Case -> V
mkV2V -> Prep -> V2
mkV2V -> V2
mkV2V -> Case -> V2
mkV3V -> Prep -> Prep -> V3
dirV3V -> Prep -> V3
accdatV3V -> V3
mkV0V -> V0
mkVSV -> VS
mkV2SV -> Prep -> V2S
mkVVV -> VV
mkV2VV -> Prep -> V2V
mkVAV -> VA
mkV2AV -> Prep -> V2A
mkVQV -> VQ
mkV2QV -> Prep -> V2Q
mkASA -> AS
mkA2SA -> Prep -> A2S
mkAVA -> AV
mkA2VA -> Prep -> A2V
V0Type
+ + +

Paradigms for Italian

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/italian/ParadigmsIta.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
GenderType
masculineGender
feminineGender
NumberType
singularNumber
pluralNumber
--PrepType
accusativePrep
genitivePrep
dativePrep
mkPrepStr -> Prep
mkN(cane : Str) -> N
mkN(carne : Str) -> Gender -> N
mkN(uomo,uomini : Str) -> Gender -> N
mkNN -> Str -> N
mkN2Str -> N2
mkN2N -> Prep -> N2
mkN3N -> Prep -> Prep -> N3
mkPNStr -> PN
mkPNStr -> Gender -> PN
mkA(bianco : Str) -> A
mkA(solo,sola,soli,sole,solamente : Str) -> A
mkAA -> A -> A
prefixAA -> A = prefA
mkA2A -> Prep -> A2
mkAdvStr -> Adv
mkAdVStr -> AdV
mkAdAStr -> AdA
mkVStr -> V
mkVVerbo -> V
mkV(udire,odo,ode,udiamo,udiro,udii,udisti,udi,udirono,odi,udito : Str) -> V
essereVV -> V
reflVV -> V
mkV2Str -> V2
mkV2V -> V2
mkV2V -> Prep -> V2
v2VV2 -> V
mkV3V -> Prep -> Prep -> V3
dirV3V -> Prep -> V3
dirdirV3V -> V3
mkV0V -> V0
mkVSV -> VS
mkV2SV -> Prep -> V2S
mkVVV -> VV
deVVV -> VV
aVVV -> VV
mkV2VV -> Prep -> Prep -> V2V
mkVAV -> VA
mkV2AV -> Prep -> Prep -> V2A
mkVQV -> VQ
mkV2QV -> Prep -> V2Q
mkASA -> AS
mkA2SA -> Prep -> A2S
mkAVA -> Prep -> AV
mkA2VA -> Prep -> Prep -> A2V
V0Type
+ + +

Paradigms for Norwegian

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/norwegian/ParadigmsNor.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
GenderType
masculineGender
feminineGender
neutrumGender
NumberType
singularNumber
pluralNumber
CaseType
nominativeCase
genitiveCase
mkPrepStr -> Prep
noPrepPrep
mkNStr -> N
mkNStr -> Gender -> N
mkN(bil,bilen : Str) -> N
mkN(dreng,drengen,drenger,drengene : Str) -> N
mkN2N -> Prep -> N2
regN2Str -> Gender -> N2
mkN3N -> Prep -> Prep -> N3
mkPNStr -> PN
mkPNStr -> Gender -> PN
mkPNN -> PN
mkA(fin : Str) -> A
mkA(fin,fint : Str) -> A
mkA(galen,galet,galne : Str) -> A
mkA(stor,stort,store,storre,storst : Str) -> A
mkAA -> A
mkA2A -> Prep -> A2
mkAdvStr -> Adv
mkAdVStr -> AdV
mkAdAStr -> AdA
mkV(snakke : Str) -> V
mkV(leve,levde : Str) -> V
mkV(drikke, drakk, drukket : Str) -> V
mkV(spise,spiser,spises,spiste,spist,spis : Str) -> V
mkVV -> Str -> V
vaereVV -> V
depVV -> V
reflVV -> V
mkV2Str -> V2
mkV2V -> V2
mkV2V -> Prep -> V2
mkV3V -> Prep -> Prep -> V3
dirV3V -> Prep -> V3
dirdirV3V -> V3
mkV0V -> V0
mkVSV -> VS
mkV2SV -> Prep -> V2S
mkVVV -> VV
mkV2VV -> Prep -> Prep -> V2V
mkVAV -> VA
mkV2AV -> Prep -> V2A
mkVQV -> VQ
mkV2QV -> Prep -> V2Q
mkASA -> AS
mkA2SA -> Prep -> A2S
mkAVA -> AV
mkA2VA -> Prep -> A2V
V0Type
+ + +

Paradigms for Russian

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/russian/ParadigmsRus.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
GenderType
masculineGender
feminineGender
neuterGender
CaseType
nominativeCase
genitiveCase
dativeCase
accusativeCase
instructiveCase
prepositionalCase
NumberType
singularNumber
pluralNumber
mkN(nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
regNStr -> N
nMashinaStr -> N
nEdinicaStr -> N
nZhenchinaStr -> N
nNogaStr -> N
nMalyariyaStr -> N
nTetyaStr -> N
nBolStr -> N
nObezbolivaucheeStr -> N
nProizvedenieStr -> N
nChisloStr -> Str -> N
nZhivotnoeStr -> N
nPepelStr -> N
nMalushStr -> N
nPotolokStr -> N
nStomatologStr -> N
nAdresStr -> N
nTelefonStr -> N
nNolStr -> N
nUchitelStr -> N
nUrovenStr -> N
nSlovarStr -> N
nMusejStr -> N
nDvorecStr -> N
nTovarishStr -> N
nMesjacStr -> N
nGrazhdaninStr -> N
nRebenokStr -> N
nPutStr -> N
nGospodinStr -> N
nDenStr -> N
nDrugStr -> N
nSynStr -> N
nLesStr -> N
nMostStr -> N
mkFunN -> Prep -> N2
mkN2N -> N2
mkN3N -> Prep -> Prep -> N3
mkPNStr -> Gender -> Animacy -> PN
nounPNN -> PN
regAStr -> Str -> A
adjInvarStr -> A
AStaruyjStr -> Str -> A
AMalenkijStr -> Str -> A
AKhoroshijStr -> Str -> A
AMolodojStr -> Str -> A
AKakoj_NibudStr -> Str -> Str -> A
mkA2A -> Str -> Case -> A2
mkAdvStr -> Adv
mkVAspect -> (presentSgP1,presentSgP2,presentSgP3,
pastSgP1,imperative,infinitiveStr) -> V
mkV2V -> Str -> Case -> V2
mkV3V -> Str -> Str -> Case -> Case -> V3
dirV2V -> V2
tvDirDirV -> V3
+ + +

Paradigms for Spanish

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/spanish/ParadigmsSpa.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
GenderType
masculineGender
feminineGender
NumberType
singularNumber
pluralNumber
accusativePrep
genitivePrep
dativePrep
mkPrepStr -> Prep
mkN(luz : Str) -> N
mkNStr -> Gender -> N
mkN(baston,bastones : Str) -> Gender -> N
compNN -> Str -> N
mkN2N -> Prep -> N2
deN2N -> N2
aN2N -> N2
mkN3N -> Prep -> Prep -> N3
mkPN(Anna : Str) -> PN
mkPN(Pilar : Str) -> Gender -> PN
mkA(util : Str) -> A
mkA(solo,sola,solos,solas,solamente : Str) -> A
mkA(bueno : A) -> (mejor : A) -> A
prefixAA -> A
mkA2A -> Prep -> A2
mkAdvStr -> Adv
mkAdVStr -> AdV
mkAdAStr -> AdA
mkV(pagar : Str) -> V
mkV(mostrar,muestro : Str) -> V
mkVVerbum -> V
reflVV -> V
special_ppVV -> Str -> V
mkV2Str -> V2
mkV2V -> V2
mkV2V -> Prep -> V2
v2VV2 -> V
mkV3V -> Prep -> Prep -> V3
dirV3V -> Prep -> V3
dirdirV3V -> V3
mkV0V -> V0
mkVSV -> VS
mkV2SV -> Prep -> V2S
mkVVV -> VV
deVVV -> VV
aVVV -> VV
mkV2VV -> Prep -> Prep -> V2V
mkVAV -> VA
mkV2AV -> Prep -> Prep -> V2A
mkVQV -> VQ
mkV2QV -> Prep -> V2Q
mkASA -> AS
mkA2SA -> Prep -> A2S
mkAVA -> Prep -> AV
mkA2VA -> Prep -> Prep -> A2V
V0Type
+ + +

Paradigms for Swedish

+

+ +

+

+source http://www.cs.chalmers.se/~aarne/GF/lib/resource/swedish/ParadigmsSwe.gf +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionType
GenderType
utrumGender
neutrumGender
NumberType
singularNumber
pluralNumber
CaseType
nominativeCase
genitiveCase
mkPrepStr -> Prep
noPrepPrep
mkN(apa : Str) -> N
mkN(lik : Str) -> Gender -> N
mkN(nyckel,nycklar : Str) -> N
mkN(museum,museet,museer,museerna : Str) -> N
mkN2Str -> N2
mkN2N -> Prep -> N2
mkN3N -> Prep -> Prep -> N3
mkPNStr -> PN
mkPNStr -> Gender -> PN
mkPN(jesus,jesu : Str) -> Gender -> PN
mkA(billig : Str) -> A
mkA(bred,brett : Str) -> A
mkA(tung,tyngre,tyngst : Str) -> A
mkA(god,gott,goda,battre,bast : Str) -> A
mkA(liten,litet,lilla,sma,mindre,minst,minsta : Str) -> A
compoundAA -> A
mkA2A -> Prep -> A2
mkAdvStr -> Adv
mkAdVStr -> AdV
mkAdAStr -> AdA
mkV(stämmer : Str) -> V
mkV(dricka,drack,druckit : Str) -> V
mkV(gå,går,gå,gick,gått,gången : Str) -> V
mkVV -> Str -> V
depVV -> V
reflVV -> V
mkV2Str -> V2
mkV2V -> V2
mkV2V -> Prep -> V2
mkV3Str -> V3
mkV3V -> V3
mkV3V -> Prep -> V3
mkV3V -> Prep -> Prep -> V3
mkV0V -> V0
mkVSV -> VS
mkV2SV -> Prep -> V2S
mkVVV -> VV
mkV2VV -> Prep -> Prep -> V2V
mkVAV -> VA
mkV2AV -> Prep -> V2A
mkVQV -> VQ
mkV2QV -> Prep -> V2Q
mkASA -> AS
mkA2SA -> Prep -> A2S
mkAVA -> AV
mkA2VA -> Prep -> A2V
V0Type
+ + +

Browsing the libraries with GF commands

+

+New: Browsing by syntax editor +directly on the web. +

+

+All of the following assume +

+
+    cd $GF_LIB_PATH
+
+

+To try out inflection paradigms: +

+
+    > i -path=alltenses -retain alltenses/ParadigmsGer.gfo
+    > cc mkN "Farbe"
+
+

+To try out overloaded syntax, test lexicon, and inflection paradigms: +

+
+    > i -path=alltenses -retain alltenses/TryGer.gfo
+    > cc mkCl (mkNP this_Quant (mkN "Farbe")) (mkA "dunkel")
+
+

+ +

An Example of Usage

+

+The standard way of building an application has the following modules. +

+

+An abstract syntax: +

+
+    abstract Music = {    
+    cat 
+      Kind, 
+      Property ;
+    fun 
+      PropKind : Kind -> Property -> Kind ; 
+      Song : Kind ;
+      American : Property ;
+    }
+
+

+A domain lexicon interface: +

+
+    interface LexMusic = open Cat in {
+    oper
+      song_N : N ;
+      american_A : A ;
+    }
+
+

+A functor on Syntax and the domain lexicon interface: +

+
+    incomplete concrete MusicI of Music = open Syntax, MusicLex in {
+    lincat 
+      Kind = CN ;
+      Property = AP ;
+    lin
+      PropKind k p = mkCN p k ;
+      Song = mkCN song_N ;
+      American = mkAP american_A ;
+    }
+
+

+For each language, an instance of the domain lexicon: +

+
+    instance LexMusicGer of LexMusic = CatGer ** open ParadigmsGer in {    
+    oper
+      song_N = mkN "Lied" "Lieder" neuter ;
+      american_A = mkA "amerikanisch" ;
+    }
+
+

+For each language, an instantiation of the functor: +

+
+    --# -path=.:present:prelude
+  
+    concrete MusicGer of Music = MusicI with
+      (Syntax = SyntaxGer),
+      (LexMusic = LexMusicGer) ;
+
+

+ + + + diff --git a/lib/resource-1.4/doc/synopsis.txt b/lib/resource-1.4/doc/synopsis.txt new file mode 100644 index 000000000..0c651f02a --- /dev/null +++ b/lib/resource-1.4/doc/synopsis.txt @@ -0,0 +1,1582 @@ +GF Resource Grammar Library: Synopsis +B. Bringert and A. Ranta + + +%!postproc(html): '(SRC="categories.png")' '\1 USEMAP="#categories"' +%!postproc(html): '#LParadigms' '' +%!postproc(tex): '#LParadigms' '' +%!postproc(html): '(?i)(HREF="#A")( TITLE="[^"]*")?' '\1 TITLE="A - one-place adjective"' +%!postproc(html): '(?i)(HREF="#A2")( TITLE="[^"]*")?' '\1 TITLE="A2 - two-place adjective"' +%!postproc(html): '(?i)(HREF="#AP")( TITLE="[^"]*")?' '\1 TITLE="AP - adjectival phrase"' +%!postproc(html): '(?i)(HREF="#AdA")( TITLE="[^"]*")?' '\1 TITLE="AdA - adjective-modifying adverb"' +%!postproc(html): '(?i)(HREF="#AdN")( TITLE="[^"]*")?' '\1 TITLE="AdN - numeral-modifying adverb"' +%!postproc(html): '(?i)(HREF="#AdV")( TITLE="[^"]*")?' '\1 TITLE="AdV - adverb directly attached to verb"' +%!postproc(html): '(?i)(HREF="#Adv")( TITLE="[^"]*")?' '\1 TITLE="Adv - verb-phrase-modifying adverb"' +%!postproc(html): '(?i)(HREF="#Ant")( TITLE="[^"]*")?' '\1 TITLE="Ant - anteriority"' +%!postproc(html): '(?i)(HREF="#Art")( TITLE="[^"]*")?' '\1 TITLE="Art - article"' +%!postproc(html): '(?i)(HREF="#CAdv")( TITLE="[^"]*")?' '\1 TITLE="CAdv - comparative adverb"' +%!postproc(html): '(?i)(HREF="#CN")( TITLE="[^"]*")?' '\1 TITLE="CN - common noun (without determiner)"' +%!postproc(html): '(?i)(HREF="#Card")( TITLE="[^"]*")?' '\1 TITLE="Card - cardinal number"' +%!postproc(html): '(?i)(HREF="#Cl")( TITLE="[^"]*")?' '\1 TITLE="Cl - declarative clause, with all tenses"' +%!postproc(html): '(?i)(HREF="#Comp")( TITLE="[^"]*")?' '\1 TITLE="Comp - complement of copula, such as AP"' +%!postproc(html): '(?i)(HREF="#Conj")( TITLE="[^"]*")?' '\1 TITLE="Conj - conjunction"' +%!postproc(html): '(?i)(HREF="#Det")( TITLE="[^"]*")?' '\1 TITLE="Det - determiner phrase"' +%!postproc(html): '(?i)(HREF="#Digits")( TITLE="[^"]*")?' '\1 TITLE="Digits - cardinal or ordinal in digits"' +%!postproc(html): '(?i)(HREF="#IAdv")( TITLE="[^"]*")?' '\1 TITLE="IAdv - interrogative adverb"' +%!postproc(html): '(?i)(HREF="#IComp")( TITLE="[^"]*")?' '\1 TITLE="IComp - interrogative complement of copula"' +%!postproc(html): '(?i)(HREF="#IDet")( TITLE="[^"]*")?' '\1 TITLE="IDet - interrogative determiner"' +%!postproc(html): '(?i)(HREF="#IP")( TITLE="[^"]*")?' '\1 TITLE="IP - interrogative pronoun"' +%!postproc(html): '(?i)(HREF="#Imp")( TITLE="[^"]*")?' '\1 TITLE="Imp - imperative"' +%!postproc(html): '(?i)(HREF="#N")( TITLE="[^"]*")?' '\1 TITLE="N - common noun"' +%!postproc(html): '(?i)(HREF="#N2")( TITLE="[^"]*")?' '\1 TITLE="N2 - relational noun"' +%!postproc(html): '(?i)(HREF="#N3")( TITLE="[^"]*")?' '\1 TITLE="N3 - three-place relational noun"' +%!postproc(html): '(?i)(HREF="#NP")( TITLE="[^"]*")?' '\1 TITLE="NP - noun phrase (subject or object)"' +%!postproc(html): '(?i)(HREF="#Num")( TITLE="[^"]*")?' '\1 TITLE="Num - number determining element"' +%!postproc(html): '(?i)(HREF="#Numeral")( TITLE="[^"]*")?' '\1 TITLE="Numeral - cardinal or ordinal in words"' +%!postproc(html): '(?i)(HREF="#Ord")( TITLE="[^"]*")?' '\1 TITLE="Ord - ordinal number (used in Det)"' +%!postproc(html): '(?i)(HREF="#PConj")( TITLE="[^"]*")?' '\1 TITLE="PConj - phrase-beginning conjunction"' +%!postproc(html): '(?i)(HREF="#PN")( TITLE="[^"]*")?' '\1 TITLE="PN - proper name"' +%!postproc(html): '(?i)(HREF="#Phr")( TITLE="[^"]*")?' '\1 TITLE="Phr - phrase in a text"' +%!postproc(html): '(?i)(HREF="#Pol")( TITLE="[^"]*")?' '\1 TITLE="Pol - polarity"' +%!postproc(html): '(?i)(HREF="#Predet")( TITLE="[^"]*")?' '\1 TITLE="Predet - predeterminer (prefixed Quant)"' +%!postproc(html): '(?i)(HREF="#Prep")( TITLE="[^"]*")?' '\1 TITLE="Prep - preposition, or just case"' +%!postproc(html): '(?i)(HREF="#Pron")( TITLE="[^"]*")?' '\1 TITLE="Pron - personal pronoun"' +%!postproc(html): '(?i)(HREF="#QCl")( TITLE="[^"]*")?' '\1 TITLE="QCl - question clause, with all tenses"' +%!postproc(html): '(?i)(HREF="#QS")( TITLE="[^"]*")?' '\1 TITLE="QS - question"' +%!postproc(html): '(?i)(HREF="#Quant")( TITLE="[^"]*")?' '\1 TITLE="Quant - quantifier ('nucleus' of Det)"' +%!postproc(html): '(?i)(HREF="#RCl")( TITLE="[^"]*")?' '\1 TITLE="RCl - relative clause, with all tenses"' +%!postproc(html): '(?i)(HREF="#RP")( TITLE="[^"]*")?' '\1 TITLE="RP - relative pronoun"' +%!postproc(html): '(?i)(HREF="#RS")( TITLE="[^"]*")?' '\1 TITLE="RS - relative"' +%!postproc(html): '(?i)(HREF="#S")( TITLE="[^"]*")?' '\1 TITLE="S - declarative sentence"' +%!postproc(html): '(?i)(HREF="#SC")( TITLE="[^"]*")?' '\1 TITLE="SC - embedded sentence or question"' +%!postproc(html): '(?i)(HREF="#Subj")( TITLE="[^"]*")?' '\1 TITLE="Subj - subjunction"' +%!postproc(html): '(?i)(HREF="#Tense")( TITLE="[^"]*")?' '\1 TITLE="Tense - tense"' +%!postproc(html): '(?i)(HREF="#Text")( TITLE="[^"]*")?' '\1 TITLE="Text - text consisting of several phrases"' +%!postproc(html): '(?i)(HREF="#Utt")( TITLE="[^"]*")?' '\1 TITLE="Utt - sentence, question, word..."' +%!postproc(html): '(?i)(HREF="#V")( TITLE="[^"]*")?' '\1 TITLE="V - one-place verb"' +%!postproc(html): '(?i)(HREF="#V2")( TITLE="[^"]*")?' '\1 TITLE="V2 - two-place verb"' +%!postproc(html): '(?i)(HREF="#V2A")( TITLE="[^"]*")?' '\1 TITLE="V2A - verb with NP and AP complement"' +%!postproc(html): '(?i)(HREF="#V2Q")( TITLE="[^"]*")?' '\1 TITLE="V2Q - verb with NP and Q complement"' +%!postproc(html): '(?i)(HREF="#V2S")( TITLE="[^"]*")?' '\1 TITLE="V2S - verb with NP and S complement"' +%!postproc(html): '(?i)(HREF="#V2V")( TITLE="[^"]*")?' '\1 TITLE="V2V - verb with NP and V complement"' +%!postproc(html): '(?i)(HREF="#V3")( TITLE="[^"]*")?' '\1 TITLE="V3 - three-place verb"' +%!postproc(html): '(?i)(HREF="#VA")( TITLE="[^"]*")?' '\1 TITLE="VA - adjective-complement verb"' +%!postproc(html): '(?i)(HREF="#VP")( TITLE="[^"]*")?' '\1 TITLE="VP - verb phrase"' +%!postproc(html): '(?i)(HREF="#VPSlash")( TITLE="[^"]*")?' '\1 TITLE="VPSlash - verb phrase missing complement"' +%!postproc(html): '(?i)(HREF="#VQ")( TITLE="[^"]*")?' '\1 TITLE="VQ - question-complement verb"' +%!postproc(html): '(?i)(HREF="#VS")( TITLE="[^"]*")?' '\1 TITLE="VS - sentence-complement verb"' +%!postproc(html): '(?i)(HREF="#VV")( TITLE="[^"]*")?' '\1 TITLE="VV - verb-phrase-complement verb"' +%!postproc(html): '(?i)(HREF="#Voc")( TITLE="[^"]*")?' '\1 TITLE="Voc - vocative or "please""' +%!include: synopsis-intro.txt +=Categories= + + +Source 1: [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/abstract/Common.gf`` ../abstract/Common.gf] + + +Source 2: [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/abstract/Cat.gf`` ../abstract/Cat.gf] + + +==A hierarchic view== + +%!include: categories-intro.txt +==Explanations== + +|| Category | Explanation | Example || +| [A #A] | one-place adjective | //warm// | +| [A2 #A2] | two-place adjective | //divisible// | +| [AP #AP] | adjectival phrase | //very warm// | +| [AdA #AdA] | adjective-modifying adverb | //very// | +| [AdN #AdN] | numeral-modifying adverb | //more than// | +| [AdV #AdV] | adverb directly attached to verb | //always// | +| [Adv #Adv] | verb-phrase-modifying adverb | //in the house// | +| [Ant #Ant] | anteriority | simultaneous, anterior | +| [Art #Art] | article | //the// | +| [CAdv #CAdv] | comparative adverb | //more// | +| [CN #CN] | common noun (without determiner) | //red house// | +| [Card #Card] | cardinal number | //seven// | +| [Cl #Cl] | declarative clause, with all tenses | //she looks at this// | +| [Comp #Comp] | complement of copula, such as AP | //very warm// | +| [Conj #Conj] | conjunction | //and// | +| [Det #Det] | determiner phrase | //those seven// | +| [Digits #Digits] | cardinal or ordinal in digits | //1,000/1,000th// | +| [IAdv #IAdv] | interrogative adverb | //why// | +| [IComp #IComp] | interrogative complement of copula | //where// | +| [IDet #IDet] | interrogative determiner | //how many// | +| [IP #IP] | interrogative pronoun | //who// | +| [Imp #Imp] | imperative | //look at this// | +| [N #N] | common noun | //house// | +| [N2 #N2] | relational noun | //son// | +| [N3 #N3] | three-place relational noun | //connection// | +| [NP #NP] | noun phrase (subject or object) | //the red house// | +| [Num #Num] | number determining element | //seven// | +| [Numeral #Numeral] | cardinal or ordinal in words | //five/fifth// | +| [Ord #Ord] | ordinal number (used in Det) | //seventh// | +| [PConj #PConj] | phrase-beginning conjunction | //therefore// | +| [PN #PN] | proper name | //Paris// | +| [Phr #Phr] | phrase in a text | //but be quiet please// | +| [Pol #Pol] | polarity | positive, negative | +| [Predet #Predet] | predeterminer (prefixed Quant) | //all// | +| [Prep #Prep] | preposition, or just case | //in// | +| [Pron #Pron] | personal pronoun | //she// | +| [QCl #QCl] | question clause, with all tenses | //why does she walk// | +| [QS #QS] | question | //where did she live// | +| [Quant #Quant] | quantifier ('nucleus' of Det) | //this/these// | +| [RCl #RCl] | relative clause, with all tenses | //in which she lives// | +| [RP #RP] | relative pronoun | //in which// | +| [RS #RS] | relative | //in which she lived// | +| [S #S] | declarative sentence | //she lived here// | +| [SC #SC] | embedded sentence or question | //that it rains// | +| [Subj #Subj] | subjunction | //if// | +| [Tense #Tense] | tense | present, past, future | +| [Text #Text] | text consisting of several phrases | //He is here. Why?// | +| [Utt #Utt] | sentence, question, word... | //be quiet// | +| [V #V] | one-place verb | //sleep// | +| [V2 #V2] | two-place verb | //love// | +| [V2A #V2A] | verb with NP and AP complement | //paint// | +| [V2Q #V2Q] | verb with NP and Q complement | //ask// | +| [V2S #V2S] | verb with NP and S complement | //tell// | +| [V2V #V2V] | verb with NP and V complement | //cause// | +| [V3 #V3] | three-place verb | //show// | +| [VA #VA] | adjective-complement verb | //look// | +| [VP #VP] | verb phrase | //is very warm// | +| [VPSlash #VPSlash] | verb phrase missing complement | //give to John// | +| [VQ #VQ] | question-complement verb | //wonder// | +| [VS #VS] | sentence-complement verb | //claim// | +| [VV #VV] | verb-phrase-complement verb | //want// | +| [Voc #Voc] | vocative or "please" | //my darling// | + + +=Syntax Rules and Structural Words= + + +Source 1: [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/api/Constructors.gf`` ../api/Constructors.gf] + + +Source 2: [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/abstract/Structural.gf`` ../abstract/Structural.gf] + + +==A - one-place adjective==[A] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==A2 - two-place adjective==[A2] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==AP - adjectival phrase==[AP] +|| Function | Type | Example || +| ``mkAP`` | [A #A] ``->`` [AP #AP] | //old// | +| ``mkAP`` | [A #A] ``->`` [NP #NP] ``->`` [AP #AP] | //older than John// | +| ``mkAP`` | [A2 #A2] ``->`` [NP #NP] ``->`` [AP #AP] | //married to her// | +| ``mkAP`` | [A2 #A2] ``->`` [AP #AP] | //married to myself// | +| ``mkAP`` | [AP #AP] ``->`` [S #S] ``->`` [AP #AP] | //probable that John walks// | +| ``mkAP`` | [AP #AP] ``->`` [QS #QS] ``->`` [AP #AP] | //uncertain if John walks// | +| ``mkAP`` | [AP #AP] ``->`` [VP #VP] ``->`` [AP #AP] | //ready to go// | +| ``mkAP`` | [AdA #AdA] ``->`` [A #A] ``->`` [AP #AP] | //very old// | +| ``mkAP`` | [AdA #AdA] ``->`` [AP #AP] ``->`` [AP #AP] | //very very old// | +| ``mkAP`` | [Conj #Conj] ``->`` [AP #AP] ``->`` [AP #AP] ``->`` [AP #AP] | //old and big// | +| ``mkAP`` | [Conj #Conj] ``->`` [ListAP #ListAP] ``->`` [AP #AP] | //old, big, and warm// | +==AdA - adjective-modifying adverb==[AdA] +|| Function | Type | Example || +| ``almost_AdA`` | [AdA #AdA] | //almost// | +| ``quite_Adv`` | [AdA #AdA] | //quite// | +| ``so_AdA`` | [AdA #AdA] | //so// | +| ``too_AdA`` | [AdA #AdA] | //too// | +| ``very_AdA`` | [AdA #AdA] | //very// | +==AdN - numeral-modifying adverb==[AdN] +|| Function | Type | Example || +| ``almost_AdN`` | [AdN #AdN] | //almost// | +| ``mkAdN`` | [CAdv #CAdv] ``->`` [AdN #AdN] | //more than// | +==AdV - adverb directly attached to verb==[AdV] +|| Function | Type | Example || +| ``always_AdV`` | [AdV #AdV] | //always// | +==Adv - verb-phrase-modifying adverb==[Adv] +|| Function | Type | Example || +| ``everywhere_Adv`` | [Adv #Adv] | //everywhere// | +| ``here7from_Adv`` | [Adv #Adv] | //from here// | +| ``here7to_Adv`` | [Adv #Adv] | //to here// | +| ``here_Adv`` | [Adv #Adv] | //here// | +| ``mkAdv`` | [A #A] ``->`` [Adv #Adv] | //warmly// | +| ``mkAdv`` | [Prep #Prep] ``->`` [NP #NP] ``->`` [Adv #Adv] | //with John// | +| ``mkAdv`` | [Subj #Subj] ``->`` [S #S] ``->`` [Adv #Adv] | //when John walks// | +| ``mkAdv`` | [CAdv #CAdv] ``->`` [A #A] ``->`` [NP #NP] ``->`` [Adv #Adv] | //more warmly than John// | +| ``mkAdv`` | [CAdv #CAdv] ``->`` [A #A] ``->`` [S #S] ``->`` [Adv #Adv] | //more warmly than John walks// | +| ``mkAdv`` | [AdA #AdA] ``->`` [Adv #Adv] ``->`` [Adv #Adv] | //very warmly// | +| ``mkAdv`` | [Conj #Conj] ``->`` [Adv #Adv] ``->`` [Adv #Adv] ``->`` [Adv #Adv] | //here and now// | +| ``mkAdv`` | [Conj #Conj] ``->`` [ListAdv #ListAdv] ``->`` [Adv #Adv] | //with John, here and now// | +| ``somewhere_Adv`` | [Adv #Adv] | //somewhere// | +| ``there7from_Adv`` | [Adv #Adv] | //from there// | +| ``there7to_Adv`` | [Adv #Adv] | //to there// | +| ``there_Adv`` | [Adv #Adv] | //there// | +==Ant - anteriority==[Ant] +|| Function | Type | Example || +| ``anteriorAnt`` | [Ant #Ant] | //(John has walked) --# notpresent// | +| ``simultaneousAnt`` | [Ant #Ant] | //(John walks) [default]// | +==Art - article==[Art] +|| Function | Type | Example || +| ``a_Art`` | [Art #Art] | //a// | +| ``the_Art`` | [Art #Art] | //the// | +==CAdv - comparative adverb==[CAdv] +|| Function | Type | Example || +| ``less_CAdv`` | [CAdv #CAdv] | //less// | +| ``more_CAdv`` | [CAdv #CAdv] | //more// | +==CN - common noun (without determiner)==[CN] +|| Function | Type | Example || +| ``mkCN`` | [N #N] ``->`` [CN #CN] | //house// | +| ``mkCN`` | [N2 #N2] ``->`` [NP #NP] ``->`` [CN #CN] | //mother of John// | +| ``mkCN`` | [N3 #N3] ``->`` [NP #NP] ``->`` [NP #NP] ``->`` [CN #CN] | //distance from this city to Paris// | +| ``mkCN`` | [N2 #N2] ``->`` [CN #CN] | //son// | +| ``mkCN`` | [N3 #N3] ``->`` [CN #CN] | //flight// | +| ``mkCN`` | [A #A] ``->`` [N #N] ``->`` [CN #CN] | //big house// | +| ``mkCN`` | [A #A] ``->`` [CN #CN] ``->`` [CN #CN] | //big blue house// | +| ``mkCN`` | [AP #AP] ``->`` [N #N] ``->`` [CN #CN] | //very big house// | +| ``mkCN`` | [AP #AP] ``->`` [CN #CN] ``->`` [CN #CN] | //very big blue house// | +| ``mkCN`` | [N #N] ``->`` [RS #RS] ``->`` [CN #CN] | //house that John loves// | +| ``mkCN`` | [CN #CN] ``->`` [RS #RS] ``->`` [CN #CN] | //big house that John loves// | +| ``mkCN`` | [N #N] ``->`` [Adv #Adv] ``->`` [CN #CN] | //house in the city// | +| ``mkCN`` | [CN #CN] ``->`` [Adv #Adv] ``->`` [CN #CN] | //big house in the city// | +| ``mkCN`` | [CN #CN] ``->`` [S #S] ``->`` [CN #CN] | //rule that John walks// | +| ``mkCN`` | [CN #CN] ``->`` [QS #QS] ``->`` [CN #CN] | //question if John walks// | +| ``mkCN`` | [CN #CN] ``->`` [VP #VP] ``->`` [CN #CN] | //reason to walk// | +| ``mkCN`` | [N #N] ``->`` [NP #NP] ``->`` [CN #CN] | //king John// | +| ``mkCN`` | [CN #CN] ``->`` [NP #NP] ``->`` [CN #CN] | //old king John// | +==Card - cardinal number==[Card] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==Cl - declarative clause, with all tenses==[Cl] +|| Function | Type | Example || +| ``genericCl`` | [VP #VP] ``->`` [Cl #Cl] | //one walks// | +| ``mkCl`` | [NP #NP] ``->`` [V #V] ``->`` [Cl #Cl] | //John walks// | +| ``mkCl`` | [NP #NP] ``->`` [V2 #V2] ``->`` [NP #NP] ``->`` [Cl #Cl] | //John loves her// | +| ``mkCl`` | [NP #NP] ``->`` [V3 #V3] ``->`` [NP #NP] ``->`` [NP #NP] ``->`` [Cl #Cl] | //John sends it to her// | +| ``mkCl`` | [NP #NP] ``->`` [VV #VV] ``->`` [VP #VP] ``->`` [Cl #Cl] | //John wants to walk// | +| ``mkCl`` | [NP #NP] ``->`` [VS #VS] ``->`` [S #S] ``->`` [Cl #Cl] | //John says that it is good// | +| ``mkCl`` | [NP #NP] ``->`` [VQ #VQ] ``->`` [QS #QS] ``->`` [Cl #Cl] | //John wonders if it is good// | +| ``mkCl`` | [NP #NP] ``->`` [VA #VA] ``->`` [AP #AP] ``->`` [Cl #Cl] | //John becomes old// | +| ``mkCl`` | [NP #NP] ``->`` [V2A #V2A] ``->`` [NP #NP] ``->`` [AP #AP] ``->`` [Cl #Cl] | //John paints it red// | +| ``mkCl`` | [NP #NP] ``->`` [V2S #V2S] ``->`` [NP #NP] ``->`` [S #S] ``->`` [Cl #Cl] | //John tells her that we are here// | +| ``mkCl`` | [NP #NP] ``->`` [V2Q #V2Q] ``->`` [NP #NP] ``->`` [QS #QS] ``->`` [Cl #Cl] | //John asks her who is here// | +| ``mkCl`` | [NP #NP] ``->`` [V2V #V2V] ``->`` [NP #NP] ``->`` [VP #VP] ``->`` [Cl #Cl] | //John forces us to sleep// | +| ``mkCl`` | [NP #NP] ``->`` [A #A] ``->`` [Cl #Cl] | //John is old// | +| ``mkCl`` | [NP #NP] ``->`` [A #A] ``->`` [NP #NP] ``->`` [Cl #Cl] | //John is older than her// | +| ``mkCl`` | [NP #NP] ``->`` [A2 #A2] ``->`` [NP #NP] ``->`` [Cl #Cl] | //John is married to her// | +| ``mkCl`` | [NP #NP] ``->`` [AP #AP] ``->`` [Cl #Cl] | //John is very old// | +| ``mkCl`` | [NP #NP] ``->`` [N #N] ``->`` [Cl #Cl] | //John is a man// | +| ``mkCl`` | [NP #NP] ``->`` [CN #CN] ``->`` [Cl #Cl] | //John is an old man// | +| ``mkCl`` | [NP #NP] ``->`` [NP #NP] ``->`` [Cl #Cl] | //John is the man// | +| ``mkCl`` | [NP #NP] ``->`` [Adv #Adv] ``->`` [Cl #Cl] | //John is here// | +| ``mkCl`` | [NP #NP] ``->`` [VP #VP] ``->`` [Cl #Cl] | //John walks here// | +| ``mkCl`` | [V #V] ``->`` [Cl #Cl] | //it rains// | +| ``mkCl`` | [VP #VP] ``->`` [Cl #Cl] | //it is raining// | +| ``mkCl`` | [N #N] ``->`` [Cl #Cl] | //there is a house// | +| ``mkCl`` | [CN #CN] ``->`` [Cl #Cl] | //there is an old houses// | +| ``mkCl`` | [NP #NP] ``->`` [Cl #Cl] | //there are five houses// | +| ``mkCl`` | [NP #NP] ``->`` [RS #RS] ``->`` [Cl #Cl] | //it is John that walks// | +| ``mkCl`` | [Adv #Adv] ``->`` [S #S] ``->`` [Cl #Cl] | //it is here John walks// | +==ClSlash==[ClSlash] +|| Function | Type | Example || +| ``mkClSlash`` | [NP #NP] ``->`` [V2 #V2] ``->`` [ClSlash #ClSlash] | //(whom) John loves// | +| ``mkClSlash`` | [NP #NP] ``->`` [VV #VV] ``->`` [V2 #V2] ``->`` [ClSlash #ClSlash] | //(whom) John wants to see// | +| ``mkClSlash`` | [Cl #Cl] ``->`` [Prep #Prep] ``->`` [ClSlash #ClSlash] | //(with whom) John walks// | +| ``mkClSlash`` | [ClSlash #ClSlash] ``->`` [Adv #Adv] ``->`` [ClSlash #ClSlash] | //(whom) John loves today// | +==Comp - complement of copula, such as AP==[Comp] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==Conj - conjunction==[Conj] +|| Function | Type | Example || +| ``and_Conj`` | [Conj #Conj] | //and// | +| ``both7and_DConj`` | [Conj #Conj] | //both...and// | +| ``either7or_DConj`` | [Conj #Conj] | //either...or// | +| ``or_Conj`` | [Conj #Conj] | //or// | +==Det - determiner phrase==[Det] +|| Function | Type | Example || +| ``every_Det`` | [Det #Det] | //every// | +| ``few_Det`` | [Det #Det] | //few// | +| ``many_Det`` | [Det #Det] | //many// | +| ``mkDet`` | [Quant #Quant] ``->`` [Det #Det] | //this// | +| ``mkDet`` | [Quant #Quant] ``->`` ([Ord #Ord]) ``->`` [Det #Det] | //this first// | +| ``mkDet`` | [Quant #Quant] ``->`` [Num #Num] ``->`` [Det #Det] | //these// | +| ``mkDet`` | [Quant #Quant] ``->`` [Num #Num] ``->`` ([Ord #Ord]) ``->`` [Det #Det] | //these five best// | +| ``mkDet`` | [Quant #Quant] ``->`` [Det #Det] | //this// | +| ``mkDet`` | [Quant #Quant] ``->`` [Num #Num] ``->`` [Det #Det] | //these five// | +| ``mkDet`` | [Card #Card] ``->`` [Det #Det] | //almost twenty// | +| ``mkDet`` | [Numeral #Numeral] ``->`` [Det #Det] | //five// | +| ``mkDet`` | [Digits #Digits] ``->`` [Det #Det] | //51// | +| ``mkDet`` | [Pron #Pron] ``->`` [Det #Det] | //my (house)// | +| ``mkDet`` | [Pron #Pron] ``->`` [Num #Num] ``->`` [Det #Det] | //my (houses)// | +| ``much_Det`` | [Det #Det] | //much// | +| ``somePl_Det`` | [Det #Det] | //somePl// | +| ``someSg_Det`` | [Det #Det] | //someSg// | +==Dig==[Dig] +|| Function | Type | Example || +| ``n0_Dig`` | [Dig #Dig] | //0// | +| ``n1_Dig`` | [Dig #Dig] | //1// | +| ``n2_Dig`` | [Dig #Dig] | //2// | +| ``n3_Dig`` | [Dig #Dig] | //3// | +| ``n4_Dig`` | [Dig #Dig] | //4// | +| ``n5_Dig`` | [Dig #Dig] | //5// | +| ``n6_Dig`` | [Dig #Dig] | //6// | +| ``n7_Dig`` | [Dig #Dig] | //7// | +| ``n8_Dig`` | [Dig #Dig] | //8// | +| ``n9_Dig`` | [Dig #Dig] | //9// | +==Digits - cardinal or ordinal in digits==[Digits] +|| Function | Type | Example || +| ``mkDigits`` | [Dig #Dig] ``->`` [Digits #Digits] | //8// | +| ``mkDigits`` | [Dig #Dig] ``->`` [Digits #Digits] ``->`` [Digits #Digits] | //876// | +| ``n1000_Digits`` | [Digits #Digits] | //1,000// | +| ``n100_Digits`` | [Digits #Digits] | //100// | +| ``n10_Digits`` | [Digits #Digits] | //10// | +| ``n1_Digits`` | [Digits #Digits] | //1// | +| ``n20_Digits`` | [Digits #Digits] | //20// | +| ``n2_Digits`` | [Digits #Digits] | //2// | +| ``n3_Digits`` | [Digits #Digits] | //3// | +| ``n4_Digits`` | [Digits #Digits] | //4// | +| ``n5_Digits`` | [Digits #Digits] | //5// | +| ``n6_Digits`` | [Digits #Digits] | //6// | +| ``n7_Digits`` | [Digits #Digits] | //7// | +| ``n8_Digits`` | [Digits #Digits] | //8// | +| ``n9_Digits`` | [Digits #Digits] | //9// | +==IAdv - interrogative adverb==[IAdv] +|| Function | Type | Example || +| ``how_IAdv`` | [IAdv #IAdv] | //how// | +| ``mkIAdv`` | [Prep #Prep] ``->`` [IP #IP] ``->`` [IAdv #IAdv] | //in which city// | +| ``when_IAdv`` | [IAdv #IAdv] | //when// | +| ``where_IAdv`` | [IAdv #IAdv] | //where// | +| ``why_IAdv`` | [IAdv #IAdv] | //why// | +==IComp - interrogative complement of copula==[IComp] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==IDet - interrogative determiner==[IDet] +|| Function | Type | Example || +| ``how8many_IDet`` | [IDet #IDet] | //how8many// | +==IP - interrogative pronoun==[IP] +|| Function | Type | Example || +| ``mkIP`` | [IQuant #IQuant] ``->`` [N #N] ``->`` [IP #IP] | //which city// | +| ``mkIP`` | [IQuant #IQuant] ``->`` ([Num #Num]) ``->`` [CN #CN] ``->`` [IP #IP] | //which five big cities// | +| ``mkIP`` | [IP #IP] ``->`` [Adv #Adv] ``->`` [IP #IP] | //who in Paris// | +| ``whatPl_IP`` | [IP #IP] | //what (plural)// | +| ``whatSg_IP`` | [IP #IP] | //what (singular)// | +| ``whoPl_IP`` | [IP #IP] | //who (plural)// | +| ``whoSg_IP`` | [IP #IP] | //who (singular)// | +==IQuant==[IQuant] +|| Function | Type | Example || +| ``which_IQuant`` | [IQuant #IQuant] | //which// | +==Imp - imperative==[Imp] +|| Function | Type | Example || +| ``mkImp`` | [V #V] ``->`` [Imp #Imp] | //go// | +| ``mkImp`` | [V2 #V2] ``->`` [NP #NP] ``->`` [Imp #Imp] | //take it// | +| ``mkImp`` | [VP #VP] ``->`` [Imp #Imp] | //go there now// | +==ImpForm==[ImpForm] +|| Function | Type | Example || +| ``pluralImpForm`` | [ImpForm #ImpForm] | //(help yourselves)// | +| ``politeImpForm`` | [ImpForm #ImpForm] | //(help yourself) (polite singular)// | +| ``singularImpForm`` | [ImpForm #ImpForm] | //(help yourself) [default]// | +==ListAP==[ListAP] +|| Function | Type | Example || +| ``mkListAP`` | [AP #AP] ``->`` [AP #AP] ``->`` [ListAP #ListAP] | //old, big// | +| ``mkListAP`` | [AP #AP] ``->`` [ListAP #ListAP] ``->`` [ListAP #ListAP] | //old, big, warm// | +==ListAdv==[ListAdv] +|| Function | Type | Example || +| ``mkListAdv`` | [Adv #Adv] ``->`` [Adv #Adv] ``->`` [ListAdv #ListAdv] | //here, now// | +| ``mkListAdv`` | [Adv #Adv] ``->`` [ListAdv #ListAdv] ``->`` [ListAdv #ListAdv] | //to me, here, now// | +==ListNP==[ListNP] +|| Function | Type | Example || +| ``mkListNP`` | [NP #NP] ``->`` [NP #NP] ``->`` [ListNP #ListNP] | //John, I// | +| ``mkListNP`` | [NP #NP] ``->`` [ListNP #ListNP] ``->`` [ListNP #ListNP] | //John, I, that// | +==ListS==[ListS] +|| Function | Type | Example || +| ``mkListS`` | [S #S] ``->`` [S #S] ``->`` [ListS #ListS] | //he walks, I run// | +| ``mkListS`` | [S #S] ``->`` [ListS #ListS] ``->`` [ListS #ListS] | //John walks, I run, you sleep// | +==N - common noun==[N] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==N2 - relational noun==[N2] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==N3 - three-place relational noun==[N3] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==NP - noun phrase (subject or object)==[NP] +|| Function | Type | Example || +| ``everybody_NP`` | [NP #NP] | //everybody// | +| ``everything_NP`` | [NP #NP] | //everything// | +| ``mkNP`` | [Art #Art] ``->`` [NP #NP] | //the man// | +| ``mkNP`` | [Art #Art] ``->`` ([Num #Num]) ``->`` [CN #CN] ``->`` [NP #NP] | //the five old men// | +| ``mkNP`` | [Quant #Quant] ``->`` [N #N] ``->`` [NP #NP] | //this men// | +| ``mkNP`` | [Det #Det] ``->`` [N #N] ``->`` [NP #NP] | //the first man// | +| ``mkNP`` | [Det #Det] ``->`` [CN #CN] ``->`` [NP #NP] | //the first old man// | +| ``mkNP`` | [Numeral #Numeral] ``->`` [N #N] ``->`` [NP #NP] | //twenty men// | +| ``mkNP`` | [Numeral #Numeral] ``->`` [CN #CN] ``->`` [NP #NP] | //twenty old men// | +| ``mkNP`` | [Digits #Digits] ``->`` [N #N] ``->`` [NP #NP] | //45 men// | +| ``mkNP`` | [Digits #Digits] ``->`` [CN #CN] ``->`` [NP #NP] | //45 old men// | +| ``mkNP`` | [Card #Card] ``->`` [N #N] ``->`` [NP #NP] | //almost twenty men// | +| ``mkNP`` | [Card #Card] ``->`` [CN #CN] ``->`` [NP #NP] | //almost twenty old men// | +| ``mkNP`` | [Pron #Pron] ``->`` [N #N] ``->`` [NP #NP] | //my man// | +| ``mkNP`` | [Pron #Pron] ``->`` [CN #CN] ``->`` [NP #NP] | //my old man// | +| ``mkNP`` | [PN #PN] ``->`` [NP #NP] | //John// | +| ``mkNP`` | [Pron #Pron] ``->`` [NP #NP] | //he// | +| ``mkNP`` | [Quant #Quant] ``->`` [NP #NP] | //this// | +| ``mkNP`` | [Det #Det] ``->`` [NP #NP] | //these five// | +| ``mkNP`` | [N #N] ``->`` [NP #NP] | //beer// | +| ``mkNP`` | [CN #CN] ``->`` [NP #NP] | //beer// | +| ``mkNP`` | [Predet #Predet] ``->`` [NP #NP] ``->`` [NP #NP] | //only John// | +| ``mkNP`` | [NP #NP] ``->`` [V2 #V2] ``->`` [NP #NP] | //John killed// | +| ``mkNP`` | [NP #NP] ``->`` [Adv #Adv] ``->`` [NP #NP] | //John in Paris// | +| ``mkNP`` | [Conj #Conj] ``->`` [NP #NP] ``->`` [NP #NP] ``->`` [NP #NP] | //John and I// | +| ``mkNP`` | [Conj #Conj] ``->`` [ListNP #ListNP] ``->`` [NP #NP] | //John, I, and that// | +| ``somebody_NP`` | [NP #NP] | //somebody// | +| ``something_NP`` | [NP #NP] | //something// | +==NP;==[NP;] +|| Function | Type | Example || +| ``mkNP`` | [Quant #Quant] ``->`` ([Num #Num]) ``->`` [CN #CN] ``->`` ``NP;`` | //these five old men// | +==Num - number determining element==[Num] +|| Function | Type | Example || +| ``mkNum`` | [Numeral #Numeral] ``->`` [Num #Num] | //twenty// | +| ``mkNum`` | [Digits #Digits] ``->`` [Num #Num] | //51// | +| ``mkNum`` | [AdN #AdN] ``->`` [Num #Num] ``->`` [Num #Num] | //almost ten// | +| ``plNum`` | [Num #Num] | //plural// | +| ``sgNum`` | [Num #Num] | //singular// | +==Numeral - cardinal or ordinal in words==[Numeral] +|| Function | Type | Example || +| ``n1000_Numeral`` | [Numeral #Numeral] | //thousand// | +| ``n100_Numeral`` | [Numeral #Numeral] | //hundred// | +| ``n10_Numeral`` | [Numeral #Numeral] | //ten// | +| ``n1_Numeral`` | [Numeral #Numeral] | //one// | +| ``n20_Numeral`` | [Numeral #Numeral] | //twenty// | +| ``n2_Numeral`` | [Numeral #Numeral] | //two// | +| ``n3_Numeral`` | [Numeral #Numeral] | //three// | +| ``n4_Numeral`` | [Numeral #Numeral] | //four// | +| ``n5_Numeral`` | [Numeral #Numeral] | //five// | +| ``n6_Numeral`` | [Numeral #Numeral] | //six// | +| ``n7_Numeral`` | [Numeral #Numeral] | //seven// | +| ``n8_Numeral`` | [Numeral #Numeral] | //eight// | +| ``n9_Numeral`` | [Numeral #Numeral] | //nine// | +==Ord - ordinal number (used in Det)==[Ord] +|| Function | Type | Example || +| ``mkOrd`` | [Numeral #Numeral] ``->`` [Ord #Ord] | //twentieth// | +| ``mkOrd`` | [Digits #Digits] ``->`` [Ord #Ord] | //51st// | +| ``mkOrd`` | [A #A] ``->`` [Ord #Ord] | //best// | +==PConj - phrase-beginning conjunction==[PConj] +|| Function | Type | Example || +| ``but_PConj`` | [PConj #PConj] | //but// | +| ``mkPConj`` | [Conj #Conj] ``->`` [PConj #PConj] | //and// | +| ``otherwise_PConj`` | [PConj #PConj] | //otherwise// | +| ``therefore_PConj`` | [PConj #PConj] | //therefore// | +==PN - proper name==[PN] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==Phr - phrase in a text==[Phr] +|| Function | Type | Example || +| ``mkPhr`` | [Utt #Utt] ``->`` [Phr #Phr] | //why// | +| ``mkPhr`` | ([PConj #PConj]) ``->`` [Utt #Utt] ``->`` ([Voc #Voc]) ``->`` [Phr #Phr] | //but why John// | +| ``mkPhr`` | [S #S] ``->`` [Phr #Phr] | //John walked// | +| ``mkPhr`` | [Cl #Cl] ``->`` [Phr #Phr] | //John walks// | +| ``mkPhr`` | [QS #QS] ``->`` [Phr #Phr] | //did John walk// | +| ``mkPhr`` | [Imp #Imp] ``->`` [Phr #Phr] | //walk// | +==Pol - polarity==[Pol] +|| Function | Type | Example || +| ``negativePol`` | [Pol #Pol] | //(John doesn't walk)// | +| ``positivePol`` | [Pol #Pol] | //(John walks) [default]// | +==Predet - predeterminer (prefixed Quant)==[Predet] +|| Function | Type | Example || +| ``all_Predet`` | [Predet #Predet] | //all// | +| ``most_Predet`` | [Predet #Predet] | //most// | +| ``only_Predet`` | [Predet #Predet] | //only// | +==Prep - preposition, or just case==[Prep] +|| Function | Type | Example || +| ``above_Prep`` | [Prep #Prep] | //above// | +| ``after_Prep`` | [Prep #Prep] | //after// | +| ``before_Prep`` | [Prep #Prep] | //before// | +| ``behind_Prep`` | [Prep #Prep] | //behind// | +| ``between_Prep`` | [Prep #Prep] | //between// | +| ``by8agent_Prep`` | [Prep #Prep] | //by (agent)// | +| ``by8means_Prep`` | [Prep #Prep] | //by (means of)// | +| ``during_Prep`` | [Prep #Prep] | //during// | +| ``for_Prep`` | [Prep #Prep] | //for// | +| ``from_Prep`` | [Prep #Prep] | //from// | +| ``in8front_Prep`` | [Prep #Prep] | //in front of// | +| ``in_Prep`` | [Prep #Prep] | //in// | +| ``on_Prep`` | [Prep #Prep] | //on// | +| ``part_Prep`` | [Prep #Prep] | //part// | +| ``possess_Prep`` | [Prep #Prep] | //of (possessive)// | +| ``through_Prep`` | [Prep #Prep] | //through// | +| ``to_Prep`` | [Prep #Prep] | //to// | +| ``under_Prep`` | [Prep #Prep] | //under// | +| ``with_Prep`` | [Prep #Prep] | //with// | +| ``without_Prep`` | [Prep #Prep] | //without// | +==Pron - personal pronoun==[Pron] +|| Function | Type | Example || +| ``he_Pron`` | [Pron #Pron] | //he// | +| ``i_Pron`` | [Pron #Pron] | //i// | +| ``it_Pron`` | [Pron #Pron] | //it// | +| ``she_Pron`` | [Pron #Pron] | //she// | +| ``they_Pron`` | [Pron #Pron] | //they// | +| ``we_Pron`` | [Pron #Pron] | //we// | +| ``youPl_Pron`` | [Pron #Pron] | //you (plural)// | +| ``youPol_Pron`` | [Pron #Pron] | //you (polite)// | +| ``youSg_Pron`` | [Pron #Pron] | //you (singular)// | +==Punct==[Punct] +|| Function | Type | Example || +| ``exclMarkPunct`` | [Punct #Punct] | //!// | +| ``fullStopPunct`` | [Punct #Punct] | //.// | +| ``questMarkPunct`` | [Punct #Punct] | //?// | +==QCl - question clause, with all tenses==[QCl] +|| Function | Type | Example || +| ``mkQCl`` | [Cl #Cl] ``->`` [QCl #QCl] | //does John walk// | +| ``mkQCl`` | [IP #IP] ``->`` [VP #VP] ``->`` [QCl #QCl] | //who walks// | +| ``mkQCl`` | [IP #IP] ``->`` [NP #NP] ``->`` [V2 #V2] ``->`` [QCl #QCl] | //whom does John love// | +| ``mkQCl`` | [IP #IP] ``->`` [ClSlash #ClSlash] ``->`` [QCl #QCl] | //whom does John love today// | +| ``mkQCl`` | [IAdv #IAdv] ``->`` [Cl #Cl] ``->`` [QCl #QCl] | //why does John walk// | +| ``mkQCl`` | [Prep #Prep] ``->`` [IP #IP] ``->`` [Cl #Cl] ``->`` [QCl #QCl] | //with who does John walk// | +| ``mkQCl`` | [IAdv #IAdv] ``->`` [NP #NP] ``->`` [QCl #QCl] | //where is John// | +| ``mkQCl`` | [IP #IP] ``->`` [QCl #QCl] | //what is there// | +==QS - question==[QS] +|| Function | Type | Example || +| ``mkQS`` | [QCl #QCl] ``->`` [QS #QS] | //who walks// | +| ``mkQS`` | ([Tense #Tense]) ``->`` ([Ant #Ant]) ``->`` ([Pol #Pol]) ``->`` [QCl #QCl] ``->`` [QS #QS] | //who wouldn't have walked// | +| ``mkQS`` | [Cl #Cl] ``->`` [QS #QS] | //does John walk// | +==Quant - quantifier ('nucleus' of Det)==[Quant] +|| Function | Type | Example || +| ``that_Quant`` | [Quant #Quant] | //that// | +| ``this_Quant`` | [Quant #Quant] | //this// | +==RCl - relative clause, with all tenses==[RCl] +|| Function | Type | Example || +| ``mkRCl`` | [RP #RP] ``->`` [VP #VP] ``->`` [RCl #RCl] | //that walk// | +| ``mkRCl`` | [RP #RP] ``->`` [NP #NP] ``->`` [V2 #V2] ``->`` [RCl #RCl] | //which John loves// | +| ``mkRCl`` | [RP #RP] ``->`` [ClSlash #ClSlash] ``->`` [RCl #RCl] | //which John loves today// | +| ``mkRCl`` | [Cl #Cl] ``->`` [RCl #RCl] | //such that John loves her// | +==RP - relative pronoun==[RP] +|| Function | Type | Example || +| ``mkRP`` | [Prep #Prep] ``->`` [NP #NP] ``->`` [RP #RP] ``->`` [RP #RP] | //all the houses in which// | +| ``which_RP`` | [RP #RP] | //which// | +==RS - relative==[RS] +|| Function | Type | Example || +| ``mkRS`` | [RCl #RCl] ``->`` [RS #RS] | //that walk// | +| ``mkRS`` | ([Tense #Tense]) ``->`` ([Ant #Ant]) ``->`` ([Pol #Pol]) ``->`` [RCl #RCl] ``->`` [RS #RS] | //that wouldn't have walked// | +==S - declarative sentence==[S] +|| Function | Type | Example || +| ``mkS`` | [Cl #Cl] ``->`` [S #S] | //John walks// | +| ``mkS`` | ([Tense #Tense]) ``->`` ([Ant #Ant]) ``->`` ([Pol #Pol]) ``->`` [Cl #Cl] ``->`` [S #S] | //John wouldn't have walked// | +| ``mkS`` | [Conj #Conj] ``->`` [S #S] ``->`` [S #S] ``->`` [S #S] | //John walks and I run// | +| ``mkS`` | [Conj #Conj] ``->`` [ListS #ListS] ``->`` [S #S] | //John walks, I run and you sleep// | +| ``mkS`` | [Adv #Adv] ``->`` [S #S] ``->`` [S #S] | //today, John walks// | +==SC - embedded sentence or question==[SC] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==Subj - subjunction==[Subj] +|| Function | Type | Example || +| ``although_Subj`` | [Subj #Subj] | //although// | +| ``because_Subj`` | [Subj #Subj] | //because// | +| ``if_Subj`` | [Subj #Subj] | //if// | +| ``when_Subj`` | [Subj #Subj] | //when// | +==Tense - tense==[Tense] +|| Function | Type | Example || +| ``conditionalTense`` | [Tense #Tense] | //(John would walk) --# notpresent// | +| ``futureTense`` | [Tense #Tense] | //(John will walk) --# notpresent// | +| ``pastTense`` | [Tense #Tense] | //(John walked) --# notpresent// | +| ``presentTense`` | [Tense #Tense] | //(John walks) [default]// | +==Text - text consisting of several phrases==[Text] +|| Function | Type | Example || +| ``emptyText`` | [Text #Text] | //(empty text)// | +| ``mkText`` | [Phr #Phr] ``->`` [Text #Text] | //But John walks.// | +| ``mkText`` | [Phr #Phr] ``->`` ([Punct #Punct]) ``->`` ([Text #Text]) ``->`` [Text #Text] | //John walks? Yes.// | +| ``mkText`` | [Utt #Utt] ``->`` [Text #Text] | //John.// | +| ``mkText`` | [S #S] ``->`` [Text #Text] | //John walked.// | +| ``mkText`` | [Cl #Cl] ``->`` [Text #Text] | //John walks.// | +| ``mkText`` | [QS #QS] ``->`` [Text #Text] | //Did John walk?// | +| ``mkText`` | [Imp #Imp] ``->`` [Text #Text] | //Walk!// | +| ``mkText`` | [Text #Text] ``->`` [Text #Text] ``->`` [Text #Text] | //Where? When? Here. Now!// | +==Utt - sentence, question, word...==[Utt] +|| Function | Type | Example || +| ``lets_Utt`` | [VP #VP] ``->`` [Utt #Utt] | //let's walk// | +| ``mkUtt`` | [S #S] ``->`` [Utt #Utt] | //John walked// | +| ``mkUtt`` | [Cl #Cl] ``->`` [Utt #Utt] | //John walks// | +| ``mkUtt`` | [QS #QS] ``->`` [Utt #Utt] | //did John walk// | +| ``mkUtt`` | [Imp #Imp] ``->`` [Utt #Utt] | //love yourself// | +| ``mkUtt`` | ([ImpForm #ImpForm]) ``->`` ([Pol #Pol]) ``->`` [Imp #Imp] ``->`` [Utt #Utt] | //don't love yourselves// | +| ``mkUtt`` | [IP #IP] ``->`` [Utt #Utt] | //who// | +| ``mkUtt`` | [IAdv #IAdv] ``->`` [Utt #Utt] | //why// | +| ``mkUtt`` | [NP #NP] ``->`` [Utt #Utt] | //John// | +| ``mkUtt`` | [Adv #Adv] ``->`` [Utt #Utt] | //here// | +| ``mkUtt`` | [VP #VP] ``->`` [Utt #Utt] | //to walk// | +| ``no_Utt`` | [Utt #Utt] | //no// | +| ``yes_Utt`` | [Utt #Utt] | //yes// | +==V - one-place verb==[V] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==V2 - two-place verb==[V2] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==V2A - verb with NP and AP complement==[V2A] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==V2Q - verb with NP and Q complement==[V2Q] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==V2S - verb with NP and S complement==[V2S] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==V2V - verb with NP and V complement==[V2V] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==V3 - three-place verb==[V3] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==VA - adjective-complement verb==[VA] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==VP - verb phrase==[VP] +|| Function | Type | Example || +| ``mkVP`` | [V #V] ``->`` [VP #VP] | //walk// | +| ``mkVP`` | [V2 #V2] ``->`` [NP #NP] ``->`` [VP #VP] | //love her// | +| ``mkVP`` | [V3 #V3] ``->`` [NP #NP] ``->`` [NP #NP] ``->`` [VP #VP] | //send it to her// | +| ``mkVP`` | [VV #VV] ``->`` [VP #VP] ``->`` [VP #VP] | //want to walk// | +| ``mkVP`` | [VS #VS] ``->`` [S #S] ``->`` [VP #VP] | //know that she walks// | +| ``mkVP`` | [VQ #VQ] ``->`` [QS #QS] ``->`` [VP #VP] | //ask if she walks// | +| ``mkVP`` | [VA #VA] ``->`` [AP #AP] ``->`` [VP #VP] | //become old// | +| ``mkVP`` | [V2A #V2A] ``->`` [NP #NP] ``->`` [AP #AP] ``->`` [VP #VP] | //paint it red// | +| ``mkVP`` | [A #A] ``->`` [VP #VP] | //be warm// | +| ``mkVP`` | [AP #AP] ``->`` [VP #VP] | //be very warm// | +| ``mkVP`` | [A #A] ``->`` [NP #NP] ``->`` [VP #VP] | //be older than her// | +| ``mkVP`` | [A2 #A2] ``->`` [NP #NP] ``->`` [VP #VP] | //be married to her// | +| ``mkVP`` | [N #N] ``->`` [VP #VP] | //be a man// | +| ``mkVP`` | [CN #CN] ``->`` [VP #VP] | //be an old man// | +| ``mkVP`` | [NP #NP] ``->`` [VP #VP] | //be the man// | +| ``mkVP`` | [Adv #Adv] ``->`` [VP #VP] | //be here// | +| ``mkVP`` | [VP #VP] ``->`` [Adv #Adv] ``->`` [VP #VP] | //sleep here// | +| ``mkVP`` | [AdV #AdV] ``->`` [VP #VP] ``->`` [VP #VP] | //always sleep// | +| ``mkVP`` | [VPSlash #VPSlash] ``->`` [NP #NP] ``->`` [VP #VP] | //paint it black// | +| ``mkVP`` | [VPSlash #VPSlash] ``->`` [VP #VP] | //paint itself black// | +| ``passiveVP`` | [V2 #V2] ``->`` [VP #VP] | //be loved// | +| ``passiveVP`` | [V2 #V2] ``->`` [NP #NP] ``->`` [VP #VP] | //be loved by her// | +| ``progressiveVP`` | [VP #VP] ``->`` [VP #VP] | //be sleeping// | +| ``reflexiveVP`` | [V2 #V2] ``->`` [VP #VP] | //love itself// | +==VPSlash - verb phrase missing complement==[VPSlash] +|| Function | Type | Example || +| ``mkVPSlash`` | [V2 #V2] ``->`` [VPSlash #VPSlash] | //(whom) (John) loves// | +| ``mkVPSlash`` | [V3 #V3] ``->`` [NP #NP] ``->`` [VPSlash #VPSlash] | //(whom) (John) gives an apple// | +| ``mkVPSlash`` | [V2A #V2A] ``->`` [AP #AP] ``->`` [VPSlash #VPSlash] | //(whom) (John) paints red// | +| ``mkVPSlash`` | [V2Q #V2Q] ``->`` [QS #QS] ``->`` [VPSlash #VPSlash] | //(whom) (John) asks who sleeps// | +| ``mkVPSlash`` | [V2S #V2S] ``->`` [S #S] ``->`` [VPSlash #VPSlash] | //(whom) (John) tells that we sleep// | +| ``mkVPSlash`` | [V2V #V2V] ``->`` [VP #VP] ``->`` [VPSlash #VPSlash] | //(whom) (John) forces to sleep// | +==VQ - question-complement verb==[VQ] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==VS - sentence-complement verb==[VS] +Lexical category, constructors given in +[lexical paradigms #RParadigms]. +==VV - verb-phrase-complement verb==[VV] +|| Function | Type | Example || +| ``can8know_VV`` | [VV #VV] | //can8know// | +| ``can_VV`` | [VV #VV] | //can// | +| ``must_VV`` | [VV #VV] | //must// | +| ``want_VV`` | [VV #VV] | //want// | +==Voc - vocative or "please"==[Voc] +|| Function | Type | Example || +| ``mkVoc`` | [NP #NP] ``->`` [Voc #Voc] | //John// | +| ``please_Voc`` | [Voc #Voc] | //please// | + + + + +=Lexical Paradigms= +==Paradigms for Bulgarian== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/bulgarian/ParadigmsBul.gf`` ../bulgarian/ParadigmsBul.gf] + + + + +|| Function | Type || +| ``mkN001`` | ``Str`` ``->`` [N #N] | +| ``mkN002`` | ``Str`` ``->`` [N #N] | +| ``mkN002a`` | ``Str`` ``->`` [N #N] | +| ``mkN003`` | ``Str`` ``->`` [N #N] | +| ``mkN004`` | ``Str`` ``->`` [N #N] | +| ``mkN005`` | ``Str`` ``->`` [N #N] | +| ``mkN006`` | ``Str`` ``->`` [N #N] | +| ``mkN007`` | ``Str`` ``->`` [N #N] | +| ``mkN007b`` | ``Str`` ``->`` [N #N] | +| ``mkN007a`` | ``Str`` ``->`` [N #N] | +| ``mkN008`` | ``Str`` ``->`` [N #N] | +| ``mkN008a`` | ``Str`` ``->`` [N #N] | +| ``mkN009`` | ``Str`` ``->`` [N #N] | +| ``mkN009a`` | ``Str`` ``->`` [N #N] | +| ``mkN010`` | ``Str`` ``->`` [N #N] | +| ``mkN011`` | ``Str`` ``->`` [N #N] | +| ``mkN012`` | ``Str`` ``->`` [N #N] | +| ``mkN013`` | ``Str`` ``->`` [N #N] | +| ``mkN014`` | ``Str`` ``->`` [N #N] | +| ``mkN014a`` | ``Str`` ``->`` [N #N] | +| ``mkN015`` | ``Str`` ``->`` [N #N] | +| ``mkN016`` | ``Str`` ``->`` [N #N] | +| ``mkN017`` | ``Str`` ``->`` [N #N] | +| ``mkN018`` | ``Str`` ``->`` [N #N] | +| ``mkN018a`` | ``Str`` ``->`` [N #N] | +| ``mkN019`` | ``Str`` ``->`` [N #N] | +| ``mkN019a`` | ``Str`` ``->`` [N #N] | +| ``mkN020`` | ``Str`` ``->`` [N #N] | +| ``mkN021`` | ``Str`` ``->`` [N #N] | +| ``mkN022`` | ``Str`` ``->`` [N #N] | +| ``mkN023`` | ``Str`` ``->`` [N #N] | +| ``mkN024a`` | ``Str`` ``->`` [N #N] | +| ``mkN024`` | ``Str`` ``->`` [N #N] | +| ``mkN025`` | ``Str`` ``->`` [N #N] | +| ``mkN026`` | ``Str`` ``->`` [N #N] | +| ``mkN027`` | ``Str`` ``->`` [N #N] | +| ``mkN028`` | ``Str`` ``->`` [N #N] | +| ``mkN028a`` | ``Str`` ``->`` [N #N] | +| ``mkN029`` | ``Str`` ``->`` [N #N] | +| ``mkN030`` | ``Str`` ``->`` [N #N] | +| ``mkN031`` | ``Str`` ``->`` [N #N] | +| ``mkN031a`` | ``Str`` ``->`` [N #N] | +| ``mkN032`` | ``Str`` ``->`` [N #N] | +| ``mkN032a`` | ``Str`` ``->`` [N #N] | +| ``mkN033`` | ``Str`` ``->`` [N #N] | +| ``mkN034`` | ``Str`` ``->`` [N #N] | +| ``mkN035`` | ``Str`` ``->`` [N #N] | +| ``mkN035a`` | ``Str`` ``->`` [N #N] | +| ``mkN036`` | ``Str`` ``->`` [N #N] | +| ``mkN037`` | ``Str`` ``->`` [N #N] | +| ``mkN038`` | ``Str`` ``->`` [N #N] | +| ``mkN039`` | ``Str`` ``->`` [N #N] | +| ``mkN040`` | ``Str`` ``->`` [N #N] | +| ``mkN040a`` | ``Str`` ``->`` [N #N] | +| ``mkN041`` | ``Str`` ``->`` [N #N] | +| ``mkN041a`` | ``Str`` ``->`` [N #N] | +| ``mkN041b`` | ``Str`` ``->`` [N #N] | +| ``mkN042`` | ``Str`` ``->`` [N #N] | +| ``mkN043`` | ``Str`` ``->`` [N #N] | +| ``mkN043a`` | ``Str`` ``->`` [N #N] | +| ``mkN044`` | ``Str`` ``->`` [N #N] | +| ``mkN045`` | ``Str`` ``->`` [N #N] | +| ``mkN046`` | ``Str`` ``->`` [N #N] | +| ``mkN047`` | ``Str`` ``->`` [N #N] | +| ``mkN048`` | ``Str`` ``->`` [N #N] | +| ``mkN049`` | ``Str`` ``->`` [N #N] | +| ``mkN050`` | ``Str`` ``->`` [N #N] | +| ``mkN051`` | ``Str`` ``->`` [N #N] | +| ``mkN052`` | ``Str`` ``->`` [N #N] | +| ``mkN052a`` | ``Str`` ``->`` [N #N] | +| ``mkN053`` | ``Str`` ``->`` [N #N] | +| ``mkN054`` | ``Str`` ``->`` [N #N] | +| ``mkN055`` | ``Str`` ``->`` [N #N] | +| ``mkN056`` | ``Str`` ``->`` [N #N] | +| ``mkN057`` | ``Str`` ``->`` [N #N] | +| ``mkN057a`` | ``Str`` ``->`` [N #N] | +| ``mkN058`` | ``Str`` ``->`` [N #N] | +| ``mkN059`` | ``Str`` ``->`` [N #N] | +| ``mkN060`` | ``Str`` ``->`` [N #N] | +| ``mkN061`` | ``Str`` ``->`` [N #N] | +| ``mkN062`` | ``Str`` ``->`` [N #N] | +| ``mkN063`` | ``Str`` ``->`` [N #N] | +| ``mkN064`` | ``Str`` ``->`` [N #N] | +| ``mkN065`` | ``Str`` ``->`` [N #N] | +| ``mkN066`` | ``Str`` ``->`` [N #N] | +| ``mkN067`` | ``Str`` ``->`` [N #N] | +| ``mkN068`` | ``Str`` ``->`` [N #N] | +| ``mkN069`` | ``Str`` ``->`` [N #N] | +| ``mkN070`` | ``Str`` ``->`` [N #N] | +| ``mkN071`` | ``Str`` ``->`` [N #N] | +| ``mkN072`` | ``Str`` ``->`` [N #N] | +| ``mkN073`` | ``Str`` ``->`` [N #N] | +| ``mkN074`` | ``Str`` ``->`` [N #N] | +| ``mkN075`` | ``Str`` ``->`` [N #N] | +| ``mkA076`` | ``Str`` ``->`` [A #A] | +| ``mkA077`` | ``Str`` ``->`` [A #A] | +| ``mkA078`` | ``Str`` ``->`` [A #A] | +| ``mkA079`` | ``Str`` ``->`` [A #A] | +| ``mkA080`` | ``Str`` ``->`` [A #A] | +| ``mkA081`` | ``Str`` ``->`` [A #A] | +| ``mkA082`` | ``Str`` ``->`` [A #A] | +| ``mkA082a`` | ``Str`` ``->`` [A #A] | +| ``mkA083`` | ``Str`` ``->`` [A #A] | +| ``mkA084`` | ``Str`` ``->`` [A #A] | +| ``mkA084a`` | ``Str`` ``->`` [A #A] | +| ``mkA085`` | ``Str`` ``->`` [A #A] | +| ``mkA086`` | ``Str`` ``->`` [A #A] | +| ``mkA087`` | ``Str`` ``->`` [A #A] | +| ``mkA088`` | ``Str`` ``->`` [A #A] | +| ``mkA089`` | ``Str`` ``->`` [A #A] | +| ``mkA089a`` | ``Str`` ``->`` [A #A] | +| ``mkV142`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV143`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV144`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV145`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV145a`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV145b`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV146`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV146a`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV147`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV148`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV149`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV150`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV150a`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV151`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV152`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV152a`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV153`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV154`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV155`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV156`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV157`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV158`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV159`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV160`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV160a`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV161`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV161a`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV162`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV163`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV164`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV165`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV166`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV167`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV168`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV169`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV170`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV171`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV172`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV173`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV174`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV175`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV176`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV177`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV178`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV179`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV180`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV181`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV182`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV183`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV184`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV185`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV186`` | ``Str`` ``->`` [VTable #VTable] | +| ``mkV187`` | ``Str`` ``->`` [VTable #VTable] | +| ``adjAdv`` | [A #A] ``->`` ``Str`` ``->`` [A #A] ``=`` | + + +==Paradigms for Danish== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/danish/ParadigmsDan.gf`` ../danish/ParadigmsDan.gf] + + + + +|| Function | Type || +| ``Gender`` | [Type #Type] | +| ``utrum`` | [Gender #Gender] | +| ``neutrum`` | [Gender #Gender] | +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``Case`` | [Type #Type] | +| ``nominative`` | [Case #Case] | +| ``genitive`` | [Case #Case] | +| ``mkPrep`` | ``Str`` ``->`` [Prep #Prep] | +| ``noPrep`` | [Prep #Prep] | +| ``mkN`` | ``(bil`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(hus`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN`` | ``(bil,bilen`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(bil,bilen,biler`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(dreng,drengen,drenge,drengene`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``regN2`` | ``Str`` ``->`` [Gender #Gender] ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``Str`` ``->`` [PN #PN] | +| ``mkPN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [PN #PN] | +| ``mkPN`` | [N #N] ``->`` [PN #PN] | +| ``mkA`` | ``(fin`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(fin,fint`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(galen,galet,galne`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(stor,stort,store,storre,storst`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | [A #A] ``->`` [A #A] | +| ``mkA2`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2 #A2] | +| ``mkAdv`` | ``Str`` ``->`` [Adv #Adv] | +| ``mkAdV`` | ``Str`` ``->`` [AdV #AdV] | +| ``mkAdA`` | ``Str`` ``->`` [AdA #AdA] | +| ``mkV`` | ``(snakke`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(leve,levde`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(drikke,`` ``drakk,`` ``drukket`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(spise,spiser,spises,spiste,spist,spis`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | [V #V] ``->`` ``Str`` ``->`` [V #V] | +| ``vaereV`` | [V #V] ``->`` [V #V] | +| ``depV`` | [V #V] ``->`` [V #V] | +| ``reflV`` | [V #V] ``->`` [V #V] | +| ``mkV2`` | ``Str`` ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2 #V2] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirdirV3`` | [V #V] ``->`` [V3 #V3] | +| ``mkV0`` | [V #V] ``->`` [V0 #V0] | +| ``mkVS`` | [V #V] ``->`` [VS #VS] | +| ``mkV2S`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2S #V2S] | +| ``mkVV`` | [V #V] ``->`` [VV #VV] | +| ``mkV2V`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2V #V2V] | +| ``mkVA`` | [V #V] ``->`` [VA #VA] | +| ``mkV2A`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2A #V2A] | +| ``mkVQ`` | [V #V] ``->`` [VQ #VQ] | +| ``mkV2Q`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2Q #V2Q] | +| ``mkAS`` | [A #A] ``->`` [AS #AS] | +| ``mkA2S`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2S #A2S] | +| ``mkAV`` | [A #A] ``->`` [AV #AV] | +| ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | +| ``V0`` | [Type #Type] | + + +==Paradigms for English== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/english/ParadigmsEng.gf`` ../english/ParadigmsEng.gf] + + + + +|| Function | Type || +| ``Gender`` | [Type #Type] | +| ``human`` | [Gender #Gender] | +| ``nonhuman`` | [Gender #Gender] | +| ``masculine`` | [Gender #Gender] | +| ``feminine`` | [Gender #Gender] | +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``Case`` | [Type #Type] | +| ``nominative`` | [Case #Case] | +| ``genitive`` | [Case #Case] | +| ``mkN`` | ``(flash`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(man,men`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(man,men,man's,men's`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | [Gender #Gender] ``->`` [N #N] ``->`` [N #N] | +| ``mkN`` | ``Str`` ``->`` [N #N] ``->`` [N #N] | +| ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``regN2`` | ``Str`` ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``Str`` ``->`` [PN #PN] | +| ``mkPN`` | [N #N] ``->`` [PN #PN] | +| ``mkA`` | ``(happy`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(fat,fatter`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(good,better,best,well`` ``:`` ``Str)`` ``->`` [A #A] | +| ``compoundA`` | [A #A] ``->`` [A #A] | +| ``mkA2`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2 #A2] | +| ``mkAdv`` | ``Str`` ``->`` [Adv #Adv] | +| ``mkAdV`` | ``Str`` ``->`` [AdV #AdV] | +| ``mkAdA`` | ``Str`` ``->`` [AdA #AdA] | +| ``mkPrep`` | ``Str`` ``->`` [Prep #Prep] | +| ``noPrep`` | [Prep #Prep] | +| ``mkV`` | ``(cry`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(stop,`` ``stopped`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(drink,`` ``drank,`` ``drunk`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(run,`` ``ran,`` ``run,`` ``running`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(go,`` ``goes,`` ``went,`` ``gone,`` ``going`` ``:`` ``Str)`` ``->`` [V #V] | +| ``partV`` | [V #V] ``->`` ``Str`` ``->`` [V #V] | +| ``reflV`` | [V #V] ``->`` [V #V] | +| ``mkV2`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [V2 #V2] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirdirV3`` | [V #V] ``->`` [V3 #V3] | +| ``mkV0`` | [V #V] ``->`` [V0 #V0] | +| ``mkVS`` | [V #V] ``->`` [VS #VS] | +| ``mkV2S`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2S #V2S] | +| ``mkVV`` | [V #V] ``->`` [VV #VV] | +| ``mkV2V`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2V #V2V] | +| ``mkVA`` | [V #V] ``->`` [VA #VA] | +| ``mkV2A`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2A #V2A] | +| ``mkVQ`` | [V #V] ``->`` [VQ #VQ] | +| ``mkV2Q`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2Q #V2Q] | +| ``mkAS`` | [A #A] ``->`` [AS #AS] | +| ``mkA2S`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2S #A2S] | +| ``mkAV`` | [A #A] ``->`` [AV #AV] | +| ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | +| ``V0`` | [Type #Type] | + + +==Paradigms for Finnish== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/finnish/ParadigmsFin.gf`` ../finnish/ParadigmsFin.gf] + + + + +|| Function | Type || +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``Case`` | [Type #Type] | +| ``nominative`` | [Case #Case] | +| ``genitive`` | [Case #Case] | +| ``partitive`` | [Case #Case] | +| ``translative`` | [Case #Case] | +| ``inessive`` | [Case #Case] | +| ``elative`` | [Case #Case] | +| ``illative`` | [Case #Case] | +| ``adessive`` | [Case #Case] | +| ``ablative`` | [Case #Case] | +| ``allative`` | [Case #Case] | +| ``prePrep`` | [Case #Case] ``->`` ``Str`` ``->`` [Prep #Prep] | +| ``postPrep`` | [Case #Case] ``->`` ``Str`` ``->`` [Prep #Prep] | +| ``postGenPrep`` | ``Str`` ``->`` [Prep #Prep] | +| ``casePrep`` | [Case #Case] ``->`` [Prep #Prep] | +| ``mkN`` | ``(talo`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(savi,savia`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(vesi,veden,vesiä`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(vesi,veden,vesiä,vettä`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(olo,olon,olona,oloa,oloon,olojen,oloja,oloina,oloissa,oloihin`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(pika`` ``:`` ``Str)`` ``->`` ``(juna`` ``:`` ``N)`` ``->`` [N #N] | +| ``mkN`` | ``(oma`` ``:`` ``N)`` ``->`` ``(tunto`` ``:`` ``N)`` ``->`` [N #N] | +| ``mkN2`` | [N #N] ``->`` [N2 #N2] | +| ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``Str`` ``->`` [PN #PN] | +| ``mkPN`` | [N #N] ``->`` [PN #PN] | +| ``mkA`` | ``Str`` ``->`` [A #A] | +| ``mkA`` | [N #N] ``->`` [A #A] | +| ``mkA`` | [N #N] ``->`` ``(kivempaa,kivinta`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(hyva,parempi,paras`` ``:`` ``N)`` ``->`` ``(hyvin,paremmin,parhaiten`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA2`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2 #A2] ``=`` ``\a,p`` ``->`` ``a`` ``**`` ``{c2`` ``=`` ``p`` ``lock_A2`` ``=`` ``<>};`` | +| ``mkV`` | ``(huutaa`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(huutaa,huusi`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(huutaa,huudan,huusi`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(`` | +| ``huusin,huusi,huusisi,huutanut,huudettu,huutanee`` | ``Str)`` ``->`` [V #V] | +| ``caseV`` | [Case #Case] ``->`` [V #V] ``->`` [V #V] | +| ``vOlla`` | [V #V] | +| ``mkV2`` | ``Str`` ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [Case #Case] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2 #V2] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirV3`` | [V #V] ``->`` [Case #Case] ``->`` [V3 #V3] | +| ``dirdirV3`` | [V #V] ``->`` [V3 #V3] | +| ``mkV0`` | [V #V] ``->`` [V0 #V0] | +| ``mkVS`` | [V #V] ``->`` [VS #VS] | +| ``mkV2S`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2S #V2S] | +| ``mkVV`` | [V #V] ``->`` [VV #VV] | +| ``mkV2V`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2V #V2V] | +| ``mkVA`` | [V #V] ``->`` [Prep #Prep] ``->`` [VA #VA] | +| ``mkV2A`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2A #V2A] | +| ``mkVQ`` | [V #V] ``->`` [VQ #VQ] | +| ``mkV2Q`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2Q #V2Q] | +| ``mkAS`` | [A #A] ``->`` [AS #AS] | +| ``mkA2S`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2S #A2S] | +| ``mkAV`` | [A #A] ``->`` [AV #AV] | +| ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | +| ``V0`` | [Type #Type] | + + +==Paradigms for French== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/french/ParadigmsFre.gf`` ../french/ParadigmsFre.gf] + + + + +|| Function | Type || +| ``Gender`` | [Type #Type] | +| ``masculine`` | [Gender #Gender] | +| ``feminine`` | [Gender #Gender] | +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``accusative`` | [Prep #Prep] | +| ``genitive`` | [Prep #Prep] | +| ``dative`` | [Prep #Prep] | +| ``mkPrep`` | ``Str`` ``->`` [Prep #Prep] | +| ``mkN`` | ``(cheval`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(foie`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN`` | ``(oeil,yeux`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN`` | [N #N] ``->`` ``Str`` ``->`` [N #N] | +| ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``deN2`` | [N #N] ``->`` [N2 #N2] | +| ``aN2`` | [N #N] ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``Str`` ``->`` [PN #PN] | +| ``mkPN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [PN #PN] | +| ``mkA`` | ``(cher`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(sec,seche`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(banal,banale,banaux,banalement`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | [A #A] ``->`` [A #A] ``->`` [A #A] | +| ``prefixA`` | [A #A] ``->`` [A #A] | +| ``mkA2`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2 #A2] | +| ``mkAdv`` | ``Str`` ``->`` [Adv #Adv] | +| ``mkAdV`` | ``Str`` ``->`` [AdV #AdV] | +| ``mkAdA`` | ``Str`` ``->`` [AdA #AdA] | +| ``mkV`` | ``(finir`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(jeter,jette,jettera`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | [V2 #V2] ``->`` [V #V] | +| ``etreV`` | [V #V] ``->`` [V #V] | +| ``reflV`` | [V #V] ``->`` [V #V] | +| ``mkV2`` | [V #V] ``->`` [V2 #V2] ``=`` ``dirV2`` | +| ``mkV2`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2 #V2] ``=`` ``mmkV2`` | +| ``mkV3`` | [V #V] ``->`` [V3 #V3] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``mkV0`` | [V #V] ``->`` [V0 #V0] | +| ``mkVS`` | [V #V] ``->`` [VS #VS] | +| ``mkV2S`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2S #V2S] | +| ``mkVV`` | [V #V] ``->`` [VV #VV] | +| ``deVV`` | [V #V] ``->`` [VV #VV] | +| ``aVV`` | [V #V] ``->`` [VV #VV] | +| ``mkV2V`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2V #V2V] | +| ``mkVA`` | [V #V] ``->`` [VA #VA] | +| ``mkV2A`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2A #V2A] | +| ``mkVQ`` | [V #V] ``->`` [VQ #VQ] | +| ``mkV2Q`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2Q #V2Q] | +| ``mkAS`` | [A #A] ``->`` [AS #AS] | +| ``mkA2S`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2S #A2S] | +| ``mkAV`` | [A #A] ``->`` [Prep #Prep] ``->`` [AV #AV] | +| ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | +| ``V0`` | [Type #Type] | + + +==Paradigms for German== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/german/ParadigmsGer.gf`` ../german/ParadigmsGer.gf] + + + + +|| Function | Type || +| ``Gender`` | [Type #Type] | +| ``masculine`` | [Gender #Gender] | +| ``feminine`` | [Gender #Gender] | +| ``neuter`` | [Gender #Gender] | +| ``Case`` | [Type #Type] | +| ``nominative`` | [Case #Case] | +| ``accusative`` | [Case #Case] | +| ``dative`` | [Case #Case] | +| ``genitive`` | [Case #Case] | +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``mkN`` | ``(Stufe`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(Bild,Bilder`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN`` | ``(x1,_,_,_,_,x6`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN2`` | ``Str`` ``->`` [N2 #N2] | +| ``mkN2`` | [N #N] ``->`` [N2 #N2] | +| ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``Str`` ``->`` [PN #PN] | +| ``mkPN`` | ``(nom,gen`` ``:`` ``Str)`` ``->`` [PN #PN] | +| ``mkPN`` | ``(nom,acc,dat,gen`` ``:`` ``Str)`` ``->`` [PN #PN] | +| ``mkA`` | ``Str`` ``->`` [A #A] | +| ``mkA`` | ``(gut,besser,beste`` ``:`` ``Str)`` ``->`` [A #A] | +| ``invarA`` | ``Str`` ``->`` [A #A] | +| ``mkA2`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2 #A2] | +| ``mkAdv`` | ``Str`` ``->`` [Adv #Adv] | +| ``mkPrep`` | ``Str`` ``->`` [Case #Case] ``->`` [Prep #Prep] | +| ``accPrep`` | [Prep #Prep] | +| ``datPrep`` | [Prep #Prep] | +| ``genPrep`` | [Prep #Prep] | +| ``von_Prep`` | [Prep #Prep] | +| ``zu_Prep`` | [Prep #Prep] | +| ``mkV`` | ``(führen`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(sehen,sieht,sah,sähe,gesehen`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(geben,`` ``gibt,`` ``gib,`` ``gab,`` ``gäbe,`` ``gegeben`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``Str`` ``->`` [V #V] ``->`` [V #V] | +| ``no_geV`` | [V #V] ``->`` [V #V] | +| ``seinV`` | [V #V] ``->`` [V #V] | +| ``habenV`` | [V #V] ``->`` [V #V] | +| ``reflV`` | [V #V] ``->`` [Case #Case] ``->`` [V #V] | +| ``mkV2`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [Case #Case] ``->`` [V2 #V2] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``accdatV3`` | [V #V] ``->`` [V3 #V3] | +| ``mkV0`` | [V #V] ``->`` [V0 #V0] | +| ``mkVS`` | [V #V] ``->`` [VS #VS] | +| ``mkV2S`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2S #V2S] | +| ``mkVV`` | [V #V] ``->`` [VV #VV] | +| ``mkV2V`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2V #V2V] | +| ``mkVA`` | [V #V] ``->`` [VA #VA] | +| ``mkV2A`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2A #V2A] | +| ``mkVQ`` | [V #V] ``->`` [VQ #VQ] | +| ``mkV2Q`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2Q #V2Q] | +| ``mkAS`` | [A #A] ``->`` [AS #AS] | +| ``mkA2S`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2S #A2S] | +| ``mkAV`` | [A #A] ``->`` [AV #AV] | +| ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | +| ``V0`` | [Type #Type] | + + +==Paradigms for Italian== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/italian/ParadigmsIta.gf`` ../italian/ParadigmsIta.gf] + + + + +|| Function | Type || +| ``Gender`` | [Type #Type] | +| ``masculine`` | [Gender #Gender] | +| ``feminine`` | [Gender #Gender] | +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``--Prep`` | [Type #Type] | +| ``accusative`` | [Prep #Prep] | +| ``genitive`` | [Prep #Prep] | +| ``dative`` | [Prep #Prep] | +| ``mkPrep`` | ``Str`` ``->`` [Prep #Prep] | +| ``mkN`` | ``(cane`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(carne`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN`` | ``(uomo,uomini`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN`` | [N #N] ``->`` ``Str`` ``->`` [N #N] | +| ``mkN2`` | ``Str`` ``->`` [N2 #N2] | +| ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``Str`` ``->`` [PN #PN] | +| ``mkPN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [PN #PN] | +| ``mkA`` | ``(bianco`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(solo,sola,soli,sole,solamente`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | [A #A] ``->`` [A #A] ``->`` [A #A] | +| ``prefixA`` | [A #A] ``->`` [A #A] ``=`` ``prefA`` | +| ``mkA2`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2 #A2] | +| ``mkAdv`` | ``Str`` ``->`` [Adv #Adv] | +| ``mkAdV`` | ``Str`` ``->`` [AdV #AdV] | +| ``mkAdA`` | ``Str`` ``->`` [AdA #AdA] | +| ``mkV`` | ``Str`` ``->`` [V #V] | +| ``mkV`` | [Verbo #Verbo] ``->`` [V #V] | +| ``mkV`` | ``(udire,odo,ode,udiamo,udiro,udii,udisti,udi,udirono,odi,udito`` ``:`` ``Str)`` ``->`` [V #V] | +| ``essereV`` | [V #V] ``->`` [V #V] | +| ``reflV`` | [V #V] ``->`` [V #V] | +| ``mkV2`` | ``Str`` ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2 #V2] | +| ``v2V`` | [V2 #V2] ``->`` [V #V] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirdirV3`` | [V #V] ``->`` [V3 #V3] | +| ``mkV0`` | [V #V] ``->`` [V0 #V0] | +| ``mkVS`` | [V #V] ``->`` [VS #VS] | +| ``mkV2S`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2S #V2S] | +| ``mkVV`` | [V #V] ``->`` [VV #VV] | +| ``deVV`` | [V #V] ``->`` [VV #VV] | +| ``aVV`` | [V #V] ``->`` [VV #VV] | +| ``mkV2V`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2V #V2V] | +| ``mkVA`` | [V #V] ``->`` [VA #VA] | +| ``mkV2A`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2A #V2A] | +| ``mkVQ`` | [V #V] ``->`` [VQ #VQ] | +| ``mkV2Q`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2Q #V2Q] | +| ``mkAS`` | [A #A] ``->`` [AS #AS] | +| ``mkA2S`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2S #A2S] | +| ``mkAV`` | [A #A] ``->`` [Prep #Prep] ``->`` [AV #AV] | +| ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | +| ``V0`` | [Type #Type] | + + +==Paradigms for Norwegian== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/norwegian/ParadigmsNor.gf`` ../norwegian/ParadigmsNor.gf] + + + + +|| Function | Type || +| ``Gender`` | [Type #Type] | +| ``masculine`` | [Gender #Gender] | +| ``feminine`` | [Gender #Gender] | +| ``neutrum`` | [Gender #Gender] | +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``Case`` | [Type #Type] | +| ``nominative`` | [Case #Case] | +| ``genitive`` | [Case #Case] | +| ``mkPrep`` | ``Str`` ``->`` [Prep #Prep] | +| ``noPrep`` | [Prep #Prep] | +| ``mkN`` | ``Str`` ``->`` [N #N] | +| ``mkN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN`` | ``(bil,bilen`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(dreng,drengen,drenger,drengene`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``regN2`` | ``Str`` ``->`` [Gender #Gender] ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``Str`` ``->`` [PN #PN] | +| ``mkPN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [PN #PN] | +| ``mkPN`` | [N #N] ``->`` [PN #PN] | +| ``mkA`` | ``(fin`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(fin,fint`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(galen,galet,galne`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(stor,stort,store,storre,storst`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | [A #A] ``->`` [A #A] | +| ``mkA2`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2 #A2] | +| ``mkAdv`` | ``Str`` ``->`` [Adv #Adv] | +| ``mkAdV`` | ``Str`` ``->`` [AdV #AdV] | +| ``mkAdA`` | ``Str`` ``->`` [AdA #AdA] | +| ``mkV`` | ``(snakke`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(leve,levde`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(drikke,`` ``drakk,`` ``drukket`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(spise,spiser,spises,spiste,spist,spis`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | [V #V] ``->`` ``Str`` ``->`` [V #V] | +| ``vaereV`` | [V #V] ``->`` [V #V] | +| ``depV`` | [V #V] ``->`` [V #V] | +| ``reflV`` | [V #V] ``->`` [V #V] | +| ``mkV2`` | ``Str`` ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2 #V2] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirdirV3`` | [V #V] ``->`` [V3 #V3] | +| ``mkV0`` | [V #V] ``->`` [V0 #V0] | +| ``mkVS`` | [V #V] ``->`` [VS #VS] | +| ``mkV2S`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2S #V2S] | +| ``mkVV`` | [V #V] ``->`` [VV #VV] | +| ``mkV2V`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2V #V2V] | +| ``mkVA`` | [V #V] ``->`` [VA #VA] | +| ``mkV2A`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2A #V2A] | +| ``mkVQ`` | [V #V] ``->`` [VQ #VQ] | +| ``mkV2Q`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2Q #V2Q] | +| ``mkAS`` | [A #A] ``->`` [AS #AS] | +| ``mkA2S`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2S #A2S] | +| ``mkAV`` | [A #A] ``->`` [AV #AV] | +| ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | +| ``V0`` | [Type #Type] | + + +==Paradigms for Russian== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/russian/ParadigmsRus.gf`` ../russian/ParadigmsRus.gf] + + + + +|| Function | Type || +| ``Gender`` | [Type #Type] | +| ``masculine`` | [Gender #Gender] | +| ``feminine`` | [Gender #Gender] | +| ``neuter`` | [Gender #Gender] | +| ``Case`` | [Type #Type] | +| ``nominative`` | [Case #Case] | +| ``genitive`` | [Case #Case] | +| ``dative`` | [Case #Case] | +| ``accusative`` | [Case #Case] | +| ``instructive`` | [Case #Case] | +| ``prepositional`` | [Case #Case] | +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``mkN`` | ``(nomSg,`` ``genSg,`` ``datSg,`` ``accSg,`` ``instSg,`` ``preposSg,`` ``prepos2Sg,`` | +| ``regN`` | ``Str`` ``->`` [N #N] | +| ``nMashina`` | ``Str`` ``->`` [N #N] | +| ``nEdinica`` | ``Str`` ``->`` [N #N] | +| ``nZhenchina`` | ``Str`` ``->`` [N #N] | +| ``nNoga`` | ``Str`` ``->`` [N #N] | +| ``nMalyariya`` | ``Str`` ``->`` [N #N] | +| ``nTetya`` | ``Str`` ``->`` [N #N] | +| ``nBol`` | ``Str`` ``->`` [N #N] | +| ``nObezbolivauchee`` | ``Str`` ``->`` [N #N] | +| ``nProizvedenie`` | ``Str`` ``->`` [N #N] | +| ``nChislo`` | ``Str`` ``->`` ``Str`` ``->`` [N #N] | +| ``nZhivotnoe`` | ``Str`` ``->`` [N #N] | +| ``nPepel`` | ``Str`` ``->`` [N #N] | +| ``nMalush`` | ``Str`` ``->`` [N #N] | +| ``nPotolok`` | ``Str`` ``->`` [N #N] | +| ``nStomatolog`` | ``Str`` ``->`` [N #N] | +| ``nAdres`` | ``Str`` ``->`` [N #N] | +| ``nTelefon`` | ``Str`` ``->`` [N #N] | +| ``nNol`` | ``Str`` ``->`` [N #N] | +| ``nUchitel`` | ``Str`` ``->`` [N #N] | +| ``nUroven`` | ``Str`` ``->`` [N #N] | +| ``nSlovar`` | ``Str`` ``->`` [N #N] | +| ``nMusej`` | ``Str`` ``->`` [N #N] | +| ``nDvorec`` | ``Str`` ``->`` [N #N] | +| ``nTovarish`` | ``Str`` ``->`` [N #N] | +| ``nMesjac`` | ``Str`` ``->`` [N #N] | +| ``nGrazhdanin`` | ``Str`` ``->`` [N #N] | +| ``nRebenok`` | ``Str`` ``->`` [N #N] | +| ``nPut`` | ``Str`` ``->`` [N #N] | +| ``nGospodin`` | ``Str`` ``->`` [N #N] | +| ``nDen`` | ``Str`` ``->`` [N #N] | +| ``nDrug`` | ``Str`` ``->`` [N #N] | +| ``nSyn`` | ``Str`` ``->`` [N #N] | +| ``nLes`` | ``Str`` ``->`` [N #N] | +| ``nMost`` | ``Str`` ``->`` [N #N] | +| ``mkFun`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``mkN2`` | [N #N] ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [Animacy #Animacy] ``->`` [PN #PN] | +| ``nounPN`` | [N #N] ``->`` [PN #PN] | +| ``regA`` | ``Str`` ``->`` ``Str`` ``->`` [A #A] | +| ``adjInvar`` | ``Str`` ``->`` [A #A] | +| ``AStaruyj`` | ``Str`` ``->`` ``Str`` ``->`` [A #A] | +| ``AMalenkij`` | ``Str`` ``->`` ``Str`` ``->`` [A #A] | +| ``AKhoroshij`` | ``Str`` ``->`` ``Str`` ``->`` [A #A] | +| ``AMolodoj`` | ``Str`` ``->`` ``Str`` ``->`` [A #A] | +| ``AKakoj_Nibud`` | ``Str`` ``->`` ``Str`` ``->`` ``Str`` ``->`` [A #A] | +| ``mkA2`` | [A #A] ``->`` ``Str`` ``->`` [Case #Case] ``->`` [A2 #A2] | +| ``mkAdv`` | ``Str`` ``->`` [Adv #Adv] | +| ``mkV`` | [Aspect #Aspect] ``->`` ``(presentSgP1,presentSgP2,presentSgP3,`` | +| ``pastSgP1,imperative,infinitive`` | ``Str)`` ``->`` [V #V] | +| ``mkV2`` | [V #V] ``->`` ``Str`` ``->`` [Case #Case] ``->`` [V2 #V2] | +| ``mkV3`` | [V #V] ``->`` ``Str`` ``->`` ``Str`` ``->`` [Case #Case] ``->`` [Case #Case] ``->`` [V3 #V3] | +| ``dirV2`` | [V #V] ``->`` [V2 #V2] | +| ``tvDirDir`` | [V #V] ``->`` [V3 #V3] | + + +==Paradigms for Spanish== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/spanish/ParadigmsSpa.gf`` ../spanish/ParadigmsSpa.gf] + + + + +|| Function | Type || +| ``Gender`` | [Type #Type] | +| ``masculine`` | [Gender #Gender] | +| ``feminine`` | [Gender #Gender] | +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``accusative`` | [Prep #Prep] | +| ``genitive`` | [Prep #Prep] | +| ``dative`` | [Prep #Prep] | +| ``mkPrep`` | ``Str`` ``->`` [Prep #Prep] | +| ``mkN`` | ``(luz`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN`` | ``(baston,bastones`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``compN`` | [N #N] ``->`` ``Str`` ``->`` [N #N] | +| ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``deN2`` | [N #N] ``->`` [N2 #N2] | +| ``aN2`` | [N #N] ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``(Anna`` ``:`` ``Str)`` ``->`` [PN #PN] | +| ``mkPN`` | ``(Pilar`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [PN #PN] | +| ``mkA`` | ``(util`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(solo,sola,solos,solas,solamente`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(bueno`` ``:`` ``A)`` ``->`` ``(mejor`` ``:`` ``A)`` ``->`` [A #A] | +| ``prefixA`` | [A #A] ``->`` [A #A] | +| ``mkA2`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2 #A2] | +| ``mkAdv`` | ``Str`` ``->`` [Adv #Adv] | +| ``mkAdV`` | ``Str`` ``->`` [AdV #AdV] | +| ``mkAdA`` | ``Str`` ``->`` [AdA #AdA] | +| ``mkV`` | ``(pagar`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(mostrar,muestro`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | [Verbum #Verbum] ``->`` [V #V] | +| ``reflV`` | [V #V] ``->`` [V #V] | +| ``special_ppV`` | [V #V] ``->`` ``Str`` ``->`` [V #V] | +| ``mkV2`` | ``Str`` ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2 #V2] | +| ``v2V`` | [V2 #V2] ``->`` [V #V] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``dirdirV3`` | [V #V] ``->`` [V3 #V3] | +| ``mkV0`` | [V #V] ``->`` [V0 #V0] | +| ``mkVS`` | [V #V] ``->`` [VS #VS] | +| ``mkV2S`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2S #V2S] | +| ``mkVV`` | [V #V] ``->`` [VV #VV] | +| ``deVV`` | [V #V] ``->`` [VV #VV] | +| ``aVV`` | [V #V] ``->`` [VV #VV] | +| ``mkV2V`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2V #V2V] | +| ``mkVA`` | [V #V] ``->`` [VA #VA] | +| ``mkV2A`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2A #V2A] | +| ``mkVQ`` | [V #V] ``->`` [VQ #VQ] | +| ``mkV2Q`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2Q #V2Q] | +| ``mkAS`` | [A #A] ``->`` [AS #AS] | +| ``mkA2S`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2S #A2S] | +| ``mkAV`` | [A #A] ``->`` [Prep #Prep] ``->`` [AV #AV] | +| ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | +| ``V0`` | [Type #Type] | + + +==Paradigms for Swedish== +#LParadigms + + +source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/swedish/ParadigmsSwe.gf`` ../swedish/ParadigmsSwe.gf] + + + + +|| Function | Type || +| ``Gender`` | [Type #Type] | +| ``utrum`` | [Gender #Gender] | +| ``neutrum`` | [Gender #Gender] | +| ``Number`` | [Type #Type] | +| ``singular`` | [Number #Number] | +| ``plural`` | [Number #Number] | +| ``Case`` | [Type #Type] | +| ``nominative`` | [Case #Case] | +| ``genitive`` | [Case #Case] | +| ``mkPrep`` | ``Str`` ``->`` [Prep #Prep] | +| ``noPrep`` | [Prep #Prep] | +| ``mkN`` | ``(apa`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(lik`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [N #N] | +| ``mkN`` | ``(nyckel,nycklar`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN`` | ``(museum,museet,museer,museerna`` ``:`` ``Str)`` ``->`` [N #N] | +| ``mkN2`` | ``Str`` ``->`` [N2 #N2] | +| ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | +| ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | +| ``mkPN`` | ``Str`` ``->`` [PN #PN] | +| ``mkPN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [PN #PN] | +| ``mkPN`` | ``(jesus,jesu`` ``:`` ``Str)`` ``->`` [Gender #Gender] ``->`` [PN #PN] | +| ``mkA`` | ``(billig`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(bred,brett`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(tung,tyngre,tyngst`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(god,gott,goda,battre,bast`` ``:`` ``Str)`` ``->`` [A #A] | +| ``mkA`` | ``(liten,litet,lilla,sma,mindre,minst,minsta`` ``:`` ``Str)`` ``->`` [A #A] | +| ``compoundA`` | [A #A] ``->`` [A #A] | +| ``mkA2`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2 #A2] | +| ``mkAdv`` | ``Str`` ``->`` [Adv #Adv] | +| ``mkAdV`` | ``Str`` ``->`` [AdV #AdV] | +| ``mkAdA`` | ``Str`` ``->`` [AdA #AdA] | +| ``mkV`` | ``(stämmer`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(dricka,drack,druckit`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | ``(gå,går,gå,gick,gått,gången`` ``:`` ``Str)`` ``->`` [V #V] | +| ``mkV`` | [V #V] ``->`` ``Str`` ``->`` [V #V] | +| ``depV`` | [V #V] ``->`` [V #V] | +| ``reflV`` | [V #V] ``->`` [V #V] | +| ``mkV2`` | ``Str`` ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [V2 #V2] | +| ``mkV2`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2 #V2] | +| ``mkV3`` | ``Str`` ``->`` [V3 #V3] | +| ``mkV3`` | [V #V] ``->`` [V3 #V3] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``mkV3`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V3 #V3] | +| ``mkV0`` | [V #V] ``->`` [V0 #V0] | +| ``mkVS`` | [V #V] ``->`` [VS #VS] | +| ``mkV2S`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2S #V2S] | +| ``mkVV`` | [V #V] ``->`` [VV #VV] | +| ``mkV2V`` | [V #V] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [V2V #V2V] | +| ``mkVA`` | [V #V] ``->`` [VA #VA] | +| ``mkV2A`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2A #V2A] | +| ``mkVQ`` | [V #V] ``->`` [VQ #VQ] | +| ``mkV2Q`` | [V #V] ``->`` [Prep #Prep] ``->`` [V2Q #V2Q] | +| ``mkAS`` | [A #A] ``->`` [AS #AS] | +| ``mkA2S`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2S #A2S] | +| ``mkAV`` | [A #A] ``->`` [AV #AV] | +| ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | +| ``V0`` | [Type #Type] | + + + + +%!include: synopsis-browse.txt + + +=An Example of Usage= + + +%!include: synopsis-example.txt +