summaryrefslogtreecommitdiff
path: root/next-lib/src/interlingua/ParadigmsIna.gf
diff options
context:
space:
mode:
Diffstat (limited to 'next-lib/src/interlingua/ParadigmsIna.gf')
-rw-r--r--next-lib/src/interlingua/ParadigmsIna.gf314
1 files changed, 0 insertions, 314 deletions
diff --git a/next-lib/src/interlingua/ParadigmsIna.gf b/next-lib/src/interlingua/ParadigmsIna.gf
deleted file mode 100644
index 62d963825..000000000
--- a/next-lib/src/interlingua/ParadigmsIna.gf
+++ /dev/null
@@ -1,314 +0,0 @@
---# -path=.:../abstract:../../prelude:../common
-
---1 Interlingua Lexical Paradigms
---
--- Aarne Ranta 2003--2005
--- JP Bernardy 2007
---
--- This is an API for the user of the resource grammar
--- for adding lexical items. It gives functions for forming
--- expressions of open categories: nouns, adjectives, verbs.
---
--- Closed categories (determiners, pronouns, conjunctions) are
--- accessed through the resource syntax API, $Structural.gf$.
---
--- The main difference with $MorphoIna.gf$ is that the types
--- referred to are compiled resource grammar types. We have moreover
--- had the design principle of always having existing forms, rather
--- than stems, as string arguments of the paradigms.
---
--- The structure of functions for each word class $C$ is the following:
--- first we give a handful of patterns that aim to cover all
--- regular cases. Then we give a worst-case function $mkC$, which serves as an
--- escape to construct the most irregular words of type $C$.
--- However, this function should only seldom be needed: we have a
--- separate module [``IrregIna`` ../../english/IrregIna.gf],
--- which covers irregular verbss.
-
-resource ParadigmsIna = open
- (Predef=Predef),
- Prelude,
- MorphoIna,
- CatIna
- in {
---2 Parameters
---
--- To abstract over gender names, we define the following identifiers.
-
-oper
--- Gender : Type ;
--- There is no grammatical gender in interlingua.
-
----- To abstract over number names, we define the following.
---
--- Number : Type ;
---
--- singular : Number ;
--- plural : Number ;
-
--- To abstract over case names, we define the following.
-
- nominative : Case ;
- accusative : Case ;
- genitive : Case ;
- dative : Case ;
- ablative : Case ;
-
-
--- Prepositions are used in many-argument functions for rection.
--- The resource category $Prep$ is used.
-
-
-
---2 Nouns
---
-
--- All nouns are regular, so one should use $regN$ to construct them.
-
---3 Relational nouns
---
--- Relational nouns ("daughter of x") need a preposition.
-
--- The most common preposition is "of", and the following is a
--- shortcut for regular relational nouns with "of".
-
- regN2 : Str -> N2 ;
-
---2 Adjectives
-
--- All adjectives are regular, so on should use $regA$ to construct them.
-
---3 Two-place adjectives
-
--- Two-place adjectives need a preposition for their second argument.
-
- mkA2 : A -> Prep -> A2 ;
-
-
---2 Adverbs
-
--- Adverbs are not inflected. Most lexical ones have position
--- after the verb. Some can be preverbal (e.g. "always").
-
- mkAdv : Str -> Adv ;
- mkAdV : Str -> AdV ;
-
--- Adverbs modifying adjectives and sentences can also be formed.
-
- mkAdA : Str -> AdA ;
-
---2 Prepositions
---
--- A preposition as used for rection in the lexicon, as well as to
--- build $PP$s in the resource API, just requires a string and an expected case.
-
- mkPrep : Str -> Case -> Prep ;
- noPrep : Prep ;
-
---2 Verbs
---
--- Regular verbs should be constructed with $regV$. The 3 irregular verbs
--- esser, haber and vader are available separately.
-
-
----- Reflexive verbs.
----- By default, verbs are not reflexive; this function makes them that.
---
- reflV : V -> V ;
- reflV v = {s = v.s ; part = v.part ; lock_V = v.lock_V ; isRefl = True} ;
-
-
---3 2 and many-place verbs
-
-
--- I decided to provide the following combinators for forming verbs with
--- complex grammar rules:
-
- prepV2 : Prep -> V -> V2 ;
- prepV3 : Prep -> V2 -> V3 ;
- dirV2 : V -> V2 ;
-
-
- mkV0 : V -> V0 ;
- mkVS : V -> VS ;
--- mkV2S : V -> Prep -> V2S ;
--- mkVV : V -> VV ;
- mkV2V : Prep -> Prep -> V -> V2V ;
- mkVA : V -> VA ;
- mkV2A : Prep -> Prep -> V -> V2A ;
- mkVQ : V -> VQ ;
- mkV2Q : Prep -> V -> V2Q ;
-
- mkAS : A -> AS ;
--- mkA2S : A -> Prep -> A2S ;
- mkAV : A -> AV ;
- mkA2V : A -> Prep -> A2V ;
---
----- Notice: categories $V2S, V2V, V2Q$ are in v 1.0 treated
----- just as synonyms of $V2$, and the second argument is given
----- as an adverb. Likewise $AS, A2S, AV, A2V$ are just $A$.
----- $V0$ is just $V$.
---
- V0, V2S, V2V, V2Q : Type ;
- AS, A2S, AV, A2V : Type ;
---
-----.
-----2 Definitions of paradigms
-----
----- The definitions should not bother the user of the API. So they are
----- hidden from the document.
- nominative = Nom ;
- accusative = Acc ;
- genitive = Gen ;
- dative = Dat ;
- ablative = Abl ;
-
- regN s = nounReg s ** {lock_N = <>};
-
- compN : N -> Str -> N;
- compN n s = {s = \\x => n.s ! x ++ s; lock_N = <>} ;
-
-
- prepN2 : Prep -> N -> N2;
- prepN3 : Prep -> N2 -> N3;
- prepN2 = \p,n -> n ** {lock_N2 = <> ; p2 = p.s; c2 = p.c} ;
- prepN3 = \p,n -> n ** {lock_N3 = <> ; p3 = p.s; c3 = p.c} ;
- regN2 n = prepN2 (mkPrep [] genitive) (regN n) ** {lock_N2 = <>};
-
-----3 Relational common noun phrases
-----
----- In some cases, you may want to make a complex $CN$ into a
----- relational noun (e.g. "the old town hall of").
---
--- cnN2 : CN -> Prep -> N2 ;
--- cnN3 : CN -> Prep -> Prep -> N3 ;
---
----- This is obsolete.
--- cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
--- cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
---
- regPN n = regGenPN n;
- regGenPN n = {s = n; lock_PN = <>} ;
--- nounPN n = {s = n.s ! singular ; g = n.g ; lock_PN = <>} ;
---
--- mk2A a b = mkAdjective a a a b ** {lock_A = <>} ;
- regA a = regAdjective a ** {lock_A = <>} ;
-
- mkA2 a p = a ** {c2 = casePrep p.s p.c ; lock_A2 = <>} ;
-
-
-
- mkAdv x = ss x ** {lock_Adv = <>} ;
- mkAdV x = ss x ** {lock_AdV = <>} ;
- mkAdA x = ss x ** {lock_AdA = <>} ;
-
- mkPrep p c = ss p ** {c = c; lock_Prep = <>} ;
- noPrep = mkPrep [] accusative ;
-
-
- -- Verb-formation combinators.
- regV : Str -> V;
- regV s = mkVerb s ** {lock_V = <>};
-
- prepV2 p v = v ** {c2 = p.c; p2 = p.s ; lock_V2 = <>} ;
- prepV3 p v = v ** {c3 = p.c; p3 = p.s ; lock_V3 = <>} ;
- dirV2 = prepV2 noPrep ;
-
- mkVS v = v ** {lock_VS = <>} ;
--- mkVV v = {
--- s = table {VVF vf => v.s ! vf ; _ => variants {}} ;
--- isAux = False ; lock_VV = <>
--- } ;
- mkVQ v = v ** {lock_VQ = <>} ;
-
- V0 : Type = V ;
- V2S, V2V, V2Q : Type = V2 ;
- AS, A2S, AV : Type = A ;
- A2V : Type = A2 ;
---
- mkV0 v = v ** {lock_V = <>} ;
--- mkV2S v p = prepV2 v p ** {lock_V2 = <>} ;
- mkV2V p t v = prepV2 p v ** {s4 = t ; lock_V2 = <>} ;
- mkVA v = v ** {lock_VA = <>} ;
- mkV2A p2 p3 v = (prepV3 p3 (prepV2 p2 v)) ** {lock_V2A = <>} ;
- mkV2Q p v = prepV2 p v ** {lock_V2 = <>} ;
- mkAS v = v ** {lock_A = <>} ;
--- mkA2S v p = mkA2 v p ** {lock_A = <>} ;
- mkAV v = v ** {lock_A = <>} ;
- mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
-
-
--- pre-overload API and overload definitions
- regN : Str -> N ;
--- mk2N : (man,men : Str) -> N ;
--- genderN : Gender -> N -> N ;
--- compN : Str -> N -> N ;
---
---
---
--- mk2A : (free,freely : Str) -> A ;
- regA : Str -> A ;
---
--- mkA = overload {
--- mkA : Str -> A = regA ;
--- mkA : (fat,fatter : Str) -> A = \fat,fatter ->
--- mkAdjective fat fatter (init fatter + "st") (fat + "ly") ** {lock_A = <>} ;
--- mkA : (good,better,best,well : Str) -> A = \a,b,c,d ->
--- mkAdjective a b c d ** {lock_A = <>}
--- } ;
---
--- compoundA = compoundADeg ;
---
---
--- mk5V : (go, goes, went, gone, going : Str) -> V ;
--- regV : (cry : Str) -> V ;
--- reg2V : (stop, stopped : Str) -> V;
--- irregV : (drink, drank, drunk : Str) -> V ;
--- irreg4V : (run, ran, run, running : Str) -> V ;
---
--- -- Use reg2V instead
--- regDuplV : Str -> V ;
--- -- Use irreg4V instead
--- irregDuplV : (get, got, gotten : Str) -> V ;
---
-
-
------- obsolete
---
----- Comparison adjectives may two more forms.
---
--- ADeg : Type ;
---
--- mkADeg : (good,better,best,well : Str) -> ADeg ;
---
----- The regular pattern recognizes two common variations:
----- "-e" ("rude" - "ruder" - "rudest") and
----- "-y" ("happy - happier - happiest - happily")
---
--- regADeg : Str -> ADeg ; -- long, longer, longest
---
----- However, the duplication of the final consonant is nor predicted,
----- but a separate pattern is used:
---
--- duplADeg : Str -> ADeg ; -- fat, fatter, fattest
---
----- If comparison is formed by "more", "most", as in general for
----- long adjective, the following pattern is used:
---
--- compoundADeg : A -> ADeg ; -- -/more/most ridiculous
---
----- From a given $ADeg$, it is possible to get back to $A$.
---
--- adegA : ADeg -> A ;
---
---
- regPN : Str -> PN ;
- regGenPN : Str -> PN ; -- John, John's
---
----- Sometimes you can reuse a common noun as a proper name, e.g. "Bank".
---
--- nounPN : N -> PN ;
-
-
-
-} ;