forked from GitHub/gf-core
added Afrikaans (draft, direct adaptation from Dutch)
This commit is contained in:
57
lib/src/afrikaans/AdjectiveAfr.gf
Normal file
57
lib/src/afrikaans/AdjectiveAfr.gf
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
concrete AdjectiveAfr of Adjective = CatAfr ** open ResAfr, Prelude in
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
PositA a = {
|
||||||
|
s = a.s ! Posit ;
|
||||||
|
isPre = True
|
||||||
|
} ;
|
||||||
|
ComparA a np = {
|
||||||
|
s = \\af => a.s ! Compar ! af ++ "dan" ++ np.s ! NPNom ;
|
||||||
|
isPre = True
|
||||||
|
} ;
|
||||||
|
CAdvAP ad ap np = {
|
||||||
|
s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ np.s ! NPNom ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
UseComparA a = {
|
||||||
|
s = \\af => a.s ! Compar ! af ;
|
||||||
|
isPre = True
|
||||||
|
} ;
|
||||||
|
AdjOrd a = {
|
||||||
|
s = a.s ;
|
||||||
|
isPre = True
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||||
|
|
||||||
|
ComplA2 a np = {
|
||||||
|
s = \\af => a.s ! Posit ! af ++ appPrep a.c2 np.s ;
|
||||||
|
isPre = True
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ReflA2 a = {
|
||||||
|
s = \\af => a.s ! Posit ! APred ++ appPrep a.c2 (\\_ => reflPron ! agrP3 Sg) ; --- agr
|
||||||
|
isPre = True
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SentAP ap sc = {
|
||||||
|
s = \\a => ap.s ! a ++ sc.s ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdAP ada ap = {
|
||||||
|
s = \\a => ada.s ++ ap.s ! a ;
|
||||||
|
isPre = ap.isPre
|
||||||
|
} ;
|
||||||
|
|
||||||
|
UseA2 a = {
|
||||||
|
s = a.s ! Posit ;
|
||||||
|
isPre = True
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
24
lib/src/afrikaans/AdverbAfr.gf
Normal file
24
lib/src/afrikaans/AdverbAfr.gf
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
concrete AdverbAfr of Adverb = CatAfr ** open ResAfr, Prelude in {
|
||||||
|
|
||||||
|
|
||||||
|
lin
|
||||||
|
PositAdvAdj a = {s = a.s ! Posit ! APred} ;
|
||||||
|
|
||||||
|
ComparAdvAdj cadv a np = {
|
||||||
|
s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ np.s ! NPNom
|
||||||
|
} ;
|
||||||
|
ComparAdvAdjS cadv a s = {
|
||||||
|
s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ s.s ! Sub
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PrepNP prep np = {s = appPrep prep.s np.s} ;
|
||||||
|
|
||||||
|
AdAdv = cc2 ;
|
||||||
|
|
||||||
|
PositAdAAdj a = {s = a.s ! Posit ! APred} ;
|
||||||
|
|
||||||
|
SubjS subj s = {s = subj.s ++ s.s ! Sub} ;
|
||||||
|
|
||||||
|
AdnCAdv cadv = {s = cadv.s ++ conjThan} ;
|
||||||
|
|
||||||
|
}
|
||||||
11
lib/src/afrikaans/AllAfr.gf
Normal file
11
lib/src/afrikaans/AllAfr.gf
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
|
||||||
|
concrete AllAfr of AllAfrAbs =
|
||||||
|
LangAfr,
|
||||||
|
IrregAfr,
|
||||||
|
ExtraAfr
|
||||||
|
**
|
||||||
|
{
|
||||||
|
--{} ;
|
||||||
|
|
||||||
|
}
|
||||||
88
lib/src/afrikaans/CatAfr.gf
Normal file
88
lib/src/afrikaans/CatAfr.gf
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
concrete CatAfr of Cat =
|
||||||
|
CommonX **
|
||||||
|
open ResAfr, Prelude in {
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
|
||||||
|
-- Tensed/Untensed
|
||||||
|
|
||||||
|
S = {s : Order => Str} ;
|
||||||
|
QS = {s : QForm => Str} ;
|
||||||
|
RS = {s : Gender => Number => Str} ;
|
||||||
|
SSlash = {s : Order => Str} ** {c2 : Preposition} ;
|
||||||
|
|
||||||
|
-- Sentence
|
||||||
|
|
||||||
|
Cl = Clause ; -- {s : Tense => Anteriority => Polarity => Order => Str} ;
|
||||||
|
ClSlash = Clause ** {c2 : Preposition} ;
|
||||||
|
Imp = {s : Polarity => ImpForm => Str} ;
|
||||||
|
|
||||||
|
-- Question
|
||||||
|
|
||||||
|
QCl = {s : ResAfr.Tense => Anteriority => Polarity => QForm => Str} ;
|
||||||
|
IP = {s : NPCase => Str ; n : Number} ;
|
||||||
|
IComp = {s : Agr => Str} ;
|
||||||
|
IDet = {s : Gender => Str ; n : Number} ;
|
||||||
|
IQuant = {s : Number => Gender => Str} ;
|
||||||
|
|
||||||
|
-- Relative
|
||||||
|
|
||||||
|
RCl = {s : ResAfr.Tense => Anteriority => Polarity => Gender => Number => Str} ;
|
||||||
|
RP = {s : Gender => Number => Str ; a : RAgr} ;
|
||||||
|
|
||||||
|
-- Verb
|
||||||
|
|
||||||
|
VP = ResAfr.VP ;
|
||||||
|
VPSlash = ResAfr.VP ** {c2 : Preposition} ;
|
||||||
|
Comp = {s : Agr => Str} ;
|
||||||
|
|
||||||
|
-- Adjective
|
||||||
|
|
||||||
|
AP = {s : AForm => Str ; isPre : Bool} ;
|
||||||
|
|
||||||
|
-- Noun
|
||||||
|
|
||||||
|
CN = {s : Adjf => NForm => Str ; g : Gender} ;
|
||||||
|
NP = {s : NPCase => Str ; a : Agr ; isPron : Bool} ;
|
||||||
|
Pron = Pronoun ;
|
||||||
|
|
||||||
|
Det = {s,sp : Gender => Str ; n : Number ; a : Adjf} ;
|
||||||
|
Quant = {
|
||||||
|
s : Bool => Number => Gender => Str ;
|
||||||
|
sp : Number => Gender => Str ;
|
||||||
|
a : Adjf
|
||||||
|
} ;
|
||||||
|
Predet = {s : Number => Gender => Str} ;
|
||||||
|
Num = {s : Str ; n : Number ; isNum : Bool} ;
|
||||||
|
Card = {s : Gender => Case => Str ; n : Number} ;
|
||||||
|
Ord = {s : AForm => Str} ;
|
||||||
|
|
||||||
|
-- Numeral
|
||||||
|
|
||||||
|
Numeral = {s : CardOrd => Str ; n : Number } ;
|
||||||
|
Digits = {s : CardOrd => Str ; n : Number } ;
|
||||||
|
|
||||||
|
-- Structural
|
||||||
|
|
||||||
|
Conj = {s1,s2 : Str ; n : Number} ;
|
||||||
|
Subj = {s : Str} ;
|
||||||
|
Prep = {s : Str} ;
|
||||||
|
|
||||||
|
-- Open lexical classes, e.g. Lexicon
|
||||||
|
|
||||||
|
V, VS, VQ, VA = ResAfr.VVerb ;
|
||||||
|
VV = VVerb ** {isAux : Bool} ;
|
||||||
|
V2, V2A, V2S, V2Q = VVerb ** {c2 : Preposition} ;
|
||||||
|
V2V = VVerb ** {c2 : Preposition ; isAux : Bool} ;
|
||||||
|
V3 = VVerb ** {c2, c3 : Preposition} ;
|
||||||
|
|
||||||
|
A = Adjective ;
|
||||||
|
A2 = Adjective ** {c2 : Preposition} ;
|
||||||
|
|
||||||
|
N = Noun ;
|
||||||
|
N2 = {s : NForm => Str ; g : Gender} ** {c2 : Preposition} ;
|
||||||
|
N3 = {s : NForm => Str ; g : Gender} ** {c2,c3 : Preposition} ;
|
||||||
|
PN = {s : NPCase => Str} ;
|
||||||
|
|
||||||
|
}
|
||||||
42
lib/src/afrikaans/ConjunctionAfr.gf
Normal file
42
lib/src/afrikaans/ConjunctionAfr.gf
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
concrete ConjunctionAfr of Conjunction =
|
||||||
|
CatAfr ** open ResAfr, Coordination, Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
ConjS conj ss = conjunctDistrTable Order conj ss ;
|
||||||
|
|
||||||
|
ConjAdv conj ss = conjunctDistrSS conj ss ;
|
||||||
|
|
||||||
|
ConjNP conj ss = heavyNP (conjunctDistrTable NPCase conj ss ** {
|
||||||
|
a = {g = Utr ; n = conjNumber conj.n ss.a.n ; p = ss.a.p}
|
||||||
|
}) ;
|
||||||
|
|
||||||
|
ConjAP conj ss = conjunctDistrTable AForm conj ss ** {
|
||||||
|
isPre = ss.isPre
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjRS conj ss = conjunctDistrTable2 Gender Number conj ss ;
|
||||||
|
|
||||||
|
-- These fun's are generated from the list cat's.
|
||||||
|
|
||||||
|
BaseS = twoTable Order ;
|
||||||
|
ConsS = consrTable Order comma ;
|
||||||
|
BaseAdv = twoSS ;
|
||||||
|
ConsAdv = consrSS comma ;
|
||||||
|
BaseNP x y = twoTable NPCase x y ** {a = conjAgr x.a y.a} ;
|
||||||
|
ConsNP xs x = consrTable NPCase comma xs x ** {a = conjAgr xs.a x.a} ;
|
||||||
|
BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre} ;
|
||||||
|
ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ;
|
||||||
|
BaseRS x y = twoTable2 Gender Number x y ** {c = y.c} ;
|
||||||
|
ConsRS xs x = consrTable2 Gender Number comma xs x ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
[S] = {s1,s2 : Order => Str} ;
|
||||||
|
[Adv] = {s1,s2 : Str} ;
|
||||||
|
[NP] = {s1,s2 : NPCase => Str ; a : Agr} ;
|
||||||
|
[AP] = {s1,s2 : AForm => Str ; isPre : Bool} ;
|
||||||
|
[RS] = {s1,s2 : Gender => Number => Str} ;
|
||||||
|
|
||||||
|
}
|
||||||
30
lib/src/afrikaans/ExtraAfr.gf
Normal file
30
lib/src/afrikaans/ExtraAfr.gf
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
concrete ExtraAfr of ExtraAfrAbs = CatAfr **
|
||||||
|
open ResAfr, Coordination, Prelude, IrregAfr in
|
||||||
|
{
|
||||||
|
--{
|
||||||
|
--
|
||||||
|
-- lincat
|
||||||
|
-- VPI = {s : Bool => Str} ;
|
||||||
|
-- [VPI] = {s1,s2 : Bool => Str} ;
|
||||||
|
-- lin
|
||||||
|
-- BaseVPI = twoTable Bool ;
|
||||||
|
-- ConsVPI = consrTable Bool comma ;
|
||||||
|
--
|
||||||
|
-- MkVPI vp = {s = \\b => useInfVP b vp} ;
|
||||||
|
-- ConjVPI = conjunctDistrTable Bool ;
|
||||||
|
--
|
||||||
|
-- ComplVPIVV v vpi =
|
||||||
|
-- insertInf (vpi.s ! v.isAux) (
|
||||||
|
-- predVGen v.isAux v) ; ----
|
||||||
|
--{-
|
||||||
|
-- insertExtrapos vpi.p3 (
|
||||||
|
-- insertInf vpi.p2 (
|
||||||
|
-- insertObj vpi.p1 (
|
||||||
|
-- predVGen v.isAux v))) ;
|
||||||
|
---}
|
||||||
|
--
|
||||||
|
-- PPzuAdv cn = {s = case cn.g of {
|
||||||
|
-- Masc | Neutr => "zum" ;
|
||||||
|
-- Fem => "zur"
|
||||||
|
-- } ++ cn.s ! adjfCase Weak Dat ! Sg ! Dat
|
||||||
|
-- } ;
|
||||||
17
lib/src/afrikaans/GrammarAfr.gf
Normal file
17
lib/src/afrikaans/GrammarAfr.gf
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
|
||||||
|
concrete GrammarAfr of Grammar =
|
||||||
|
NounAfr,
|
||||||
|
VerbAfr,
|
||||||
|
AdjectiveAfr,
|
||||||
|
AdverbAfr,
|
||||||
|
NumeralAfr,
|
||||||
|
SentenceAfr,
|
||||||
|
QuestionAfr,
|
||||||
|
RelativeAfr,
|
||||||
|
ConjunctionAfr,
|
||||||
|
PhraseAfr,
|
||||||
|
TextX,
|
||||||
|
IdiomAfr,
|
||||||
|
StructuralAfr,
|
||||||
|
TenseX ;
|
||||||
50
lib/src/afrikaans/IdiomAfr.gf
Normal file
50
lib/src/afrikaans/IdiomAfr.gf
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
concrete IdiomAfr of Idiom = CatAfr **
|
||||||
|
open MorphoAfr, (P = ParadigmsAfr), IrregAfr, Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
ImpersCl vp = mkClause "'t" (agrP3 Sg) vp ;
|
||||||
|
GenericCl vp = mkClause "men" (agrP3 Sg) vp ;
|
||||||
|
|
||||||
|
CleftNP np rs = mkClause "'t" (agrP3 Sg)
|
||||||
|
(insertExtrapos (rs.s ! np.a.g ! np.a.n) ----
|
||||||
|
(insertObj (\\_ => np.s ! NPNom) (predV zijn_V))) ;
|
||||||
|
|
||||||
|
CleftAdv ad s = mkClause "'t" (agrP3 Sg)
|
||||||
|
(insertExtrapos (conjThat ++ s.s ! Sub)
|
||||||
|
(insertObj (\\_ => ad.s) (predV zijn_V))) ;
|
||||||
|
|
||||||
|
ExistNP np =
|
||||||
|
mkClause "er" (agrP3 np.a.n)
|
||||||
|
(insertObj (\\_ => np.s ! NPNom)
|
||||||
|
(predV zijn_V)) ;
|
||||||
|
|
||||||
|
ExistIP ip = {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
let
|
||||||
|
cls =
|
||||||
|
(mkClause "er" (agrP3 ip.n) (predV zijn_V)).s ! t ! a ! p ;
|
||||||
|
who = ip.s ! NPNom
|
||||||
|
in table {
|
||||||
|
QDir => who ++ cls ! Inv ;
|
||||||
|
QIndir => who ++ cls ! Sub
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ProgrVP vp = insertAdv ("aan" ++ "het" ++ useInfVP True vp) (predV zijn_V) ;
|
||||||
|
|
||||||
|
ImpPl1 vp =
|
||||||
|
let
|
||||||
|
v = v2vv (regVerb "laat") ;
|
||||||
|
vpi = infVP True vp ;
|
||||||
|
vvp = insertExtrapos vpi.p3 (
|
||||||
|
insertInf vpi.p2 (
|
||||||
|
insertObj vpi.p1 (
|
||||||
|
predVGen True v))) ;
|
||||||
|
in
|
||||||
|
{s = (mkClause "we" {g = Utr ; n = Pl ; p = P1} vvp).s !
|
||||||
|
Pres ! Simul ! Pos ! Inv
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
199
lib/src/afrikaans/IrregAfr.gf
Normal file
199
lib/src/afrikaans/IrregAfr.gf
Normal file
@@ -0,0 +1,199 @@
|
|||||||
|
--# -path=.:../common:../abstract
|
||||||
|
|
||||||
|
concrete IrregAfr of IrregAfrAbs = CatAfr ** open ParadigmsAfr in {
|
||||||
|
{-
|
||||||
|
lin bakken_V = mkV "bakken" "bakte" "bakten" "gebakken" ;
|
||||||
|
lin bannen_V = mkV "bannen" "bande" "banden" "gebannen" ;
|
||||||
|
lin barsten_V = mkV "barsten" "barstte" "barstten" "gebarsten" ;
|
||||||
|
lin bederven_V = mkZijnHebbenV "bederven" "bedierf" "bedierven" "bedorven" ;
|
||||||
|
lin bedriegen_V = mkV "bedriegen" "bedroog" "bedrogen" "bedrogen" ;
|
||||||
|
lin beginnen_V = mkZijnV "beginnen" "begon" "begonnen" "begonnen" ;
|
||||||
|
lin behangen_V = mkV "behangen" "behangde" "behangden" "behangen" ;
|
||||||
|
lin bergen_V = mkV "bergen" "borg" "borgen" "geborgen" ;
|
||||||
|
lin bevelen_V = mkV "bevelen" "beval" "bevalen" "bevolen" ;
|
||||||
|
lin bezwijken_V = mkZijnV "bezwijken" "bezweek" "bezweken" "bezweken" ;
|
||||||
|
lin bidden_V = mkV "bidden" "bad" "baden" "gebeden" ;
|
||||||
|
lin bieden_V = mkV "bieden" "bood" "boden" "geboden" ;
|
||||||
|
lin bijten_V = mkV "bijten" "beet" "beten" "gebeten" ;
|
||||||
|
lin binden_V = mkV "binden" "bond" "bonden" "gebonden" ;
|
||||||
|
lin blazen_V = mkV "blazen" "blies" "bliezen" "geblazen" ;
|
||||||
|
lin blijken_V = mkZijnV "blijken" "bleek" "bleken" "gebleken" ;
|
||||||
|
lin blijven_V = mkZijnV "blijven" "bleef" "bleven" "gebleven" ;
|
||||||
|
lin blinken_V = mkV "blinken" "blonk" "blonken" "geblonken" ;
|
||||||
|
lin braden_V = mkV "braden" "braadde" "braadden" "gebraden" ;
|
||||||
|
lin breken_V = mkZijnHebbenV "breken" "brak" "braken" "gebroken" ;
|
||||||
|
lin brengen_V = mkV "brengen" "bracht" "brachten" "gebracht" ;
|
||||||
|
lin brouwen_V = mkV "brouwen" "brouwde" "brouwden" "gebrouwen" ;
|
||||||
|
lin buigen_V = mkV "buigen" "boog" "bogen" "gebogen" ;
|
||||||
|
lin denken_V = mkV "denken" "dacht" "dachten" "gedacht" ;
|
||||||
|
lin dingen_V = mkV "dingen" "naar" "dong" "naar" ;
|
||||||
|
lin doen_V = mkV "doen" "deed" "deden" "gedaan" ;
|
||||||
|
lin dragen_V = mkV "dragen" "droeg" "droegen" "gedragen" ;
|
||||||
|
lin drijven_V = mkV "drijven" "dreef" "dreven" "gedreven" ;
|
||||||
|
lin dringen_V = mkV "dringen" "drong" "drongen" "gedrongen" ;
|
||||||
|
lin drinken_V = mkV "drinken" "dronk" "dronken" "gedronken" ;
|
||||||
|
lin druipen_V = mkZijnHebbenV "druipen" "droop" "dropen" "gedropen" ;
|
||||||
|
lin duiken_V = mkZijnHebbenV "duiken" "dook" "doken" "gedoken" ;
|
||||||
|
lin dwingen_V = mkV "dwingen" "dwong" "dwongen" "gedwongen" ;
|
||||||
|
lin eten_V = mkV "eten" "at" "aten" "gegeten" ;
|
||||||
|
lin fluiten_V = mkV "fluiten" "floot" "floten" "gefloten" ;
|
||||||
|
lin gelden_V = mkV "gelden" "gold" "golden" "gegolden" ;
|
||||||
|
lin gaan_V = mkZijnV "gaan" "ging" "gingen" "gegaan" ;
|
||||||
|
lin genezen_V = mkZijnHebbenV "genezen" "genas" "genazen" "genezen" ;
|
||||||
|
lin genieten_V = mkV "genieten" "genoot" "genoten" "genoten" ;
|
||||||
|
lin geven_V = mkV "geven" "gaf" "gaven" "gegeven" ;
|
||||||
|
lin gieten_V = mkV "gieten" "goot" "goten" "gegoten" ;
|
||||||
|
lin glijden_V = mkZijnHebbenV "glijden" "gleed" "gleden" "gegleden" ;
|
||||||
|
lin glimmen_V = mkV "glimmen" "glom" "glommen" "geglommen" ;
|
||||||
|
lin graven_V = mkV "graven" "groef" "groeven" "gegraven" ;
|
||||||
|
lin grijpen_V = mkV "grijpen" "greep" "grepen" "gegrepen" ;
|
||||||
|
lin hangen_V = mkV "hangen" "hing" "hingen" "gehangen" ;
|
||||||
|
lin heffen_V = mkV "heffen" "hief" "hieven" "geheven" ;
|
||||||
|
lin helpen_V = mkV "helpen" "hielp" "hielpen" "geholpen" ;
|
||||||
|
lin heten_V = mkV "heten" "heette" "heetten" "geheten" ;
|
||||||
|
lin hijsen_V = mkV "hijsen" "hees" "hesen" "gehesen" ;
|
||||||
|
lin hoeven_V = mkV "hoeven" "hoefde" "hoefden" "gehoeven" ;
|
||||||
|
lin houden_V = mkV "houden" "hield" "hielden" "gehouden" ;
|
||||||
|
lin houwen_V = mkV "houwen" "houwde" "houwden" "gehouwen" ;
|
||||||
|
lin jagen_V = mkV "jagen" "joeg" "joegen" "gejaagd" ;
|
||||||
|
lin kiezen_V = mkV "kiezen" "koos" "kozen" "gekozen" ;
|
||||||
|
lin kijken_V = mkV "kijken" "naar" "keek" "naar" ;
|
||||||
|
lin klimmen_V = mkZijnHebbenV "klimmen" "klom" "klommen" "geklommen" ;
|
||||||
|
lin klinken_V = mkV "klinken" "klonk" "klonken" "geklonken" ;
|
||||||
|
lin kluiven_V = mkV "kluiven" "kloof" "kloven" "gekloven" ;
|
||||||
|
lin knijpen_V = mkV "knijpen" "kneep" "knepen" "geknepen" ;
|
||||||
|
lin kopen_V = mkV "kopen" "kocht" "kochten" "gekocht" ;
|
||||||
|
lin krijgen_V = mkV "krijgen" "kreeg" "kregen" "gekregen" ;
|
||||||
|
lin krimpen_V = mkZijnV "krimpen" "kromp" "krompen" "gekrompen" ;
|
||||||
|
lin kruipen_V = mkZijnHebbenV "kruipen" "kroop" "kropen" "gekropen" ;
|
||||||
|
lin zich_V = mkV "zich" "kwijten" "van" "kweet" ;
|
||||||
|
lin lachen_V = mkV "lachen" "lachte" "lachten" "gelachen" ;
|
||||||
|
lin laden_V = mkV "laden" "laadde" "laadden" "geladen" ;
|
||||||
|
lin laten_V = mkV "laten" "liet" "lieten" "gelaten" ;
|
||||||
|
lin lezen_V = mkV "lezen" "las" "lazen" "gelezen" ;
|
||||||
|
lin liegen_V = mkV "liegen" "loog" "logen" "gelogen" ;
|
||||||
|
lin liggen_V = mkV "liggen" "lag" "lagen" "gelegen" ;
|
||||||
|
lin lijden_V = mkV "lijden" "leed" "leden" "geleden" ;
|
||||||
|
lin lijken_V = mkV "lijken" "op" "leek" "op" ;
|
||||||
|
lin lopen_V = mkZijnHebbenV "lopen" "liep" "liepen" "gelopen" ;
|
||||||
|
lin malen_V = mkV "malen" "maalde" "maalden" "gemalen" ;
|
||||||
|
lin melken_V = mkV "melken" "molk" "molken" "gemolken" ;
|
||||||
|
lin meten_V = mkV "meten" "mat" "maten" "gemeten" ;
|
||||||
|
lin mijden_V = mkV "mijden" "meed" "meden" "gemeden" ;
|
||||||
|
lin moeten_V = mkV "moeten" "moest" "moesten" "gemoeten" ;
|
||||||
|
lin nemen_V = mkV "nemen" "nam" "namen" "genomen" ;
|
||||||
|
lin nijgen_V = mkV "nijgen" "neeg" "negen" "genegen" ;
|
||||||
|
lin ontginnen_V = mkV "ontginnen" "ontgon" "ontgonnen" "ontgonnen" ;
|
||||||
|
lin ontluiken_V = mkZijnV "ontluiken" "ontlook" "ontloken" "ontloken" ;
|
||||||
|
lin pluizen_V = mkV "pluizen" "ploos" "plozen" "geplozen" ;
|
||||||
|
lin prijzen_V = mkV "prijzen" "prees" "prezen" "geprezen" ;
|
||||||
|
lin raden_V = mkV "raden" "raadde" "raadden" "geraden" ;
|
||||||
|
lin rijden_V = mkZijnHebbenV "rijden" "reed" "reden" "gereden" ;
|
||||||
|
lin rijgen_V = mkV "rijgen" "reeg" "regen" "geregen" ;
|
||||||
|
lin rijten_V = mkV "rijten" "reet" "reten" "gereten" ;
|
||||||
|
lin rijzen_V = mkZijnV "rijzen" "rees" "rezen" "gerezen" ;
|
||||||
|
lin roepen_V = mkV "roepen" "riep" "riepen" "geroepen" ;
|
||||||
|
lin ruiken_V = mkV "ruiken" "rook" "roken" "geroken" ;
|
||||||
|
lin scheiden_V = mkZijnHebbenV "scheiden" "scheidde" "scheidden" "gescheiden" ;
|
||||||
|
lin schelden_V = mkV "schelden" "schold" "scholden" "gescholden" ;
|
||||||
|
lin schenden_V = mkV "schenden" "schond" "schonden" "geschonden" ;
|
||||||
|
lin schenken_V = mkV "schenken" "schonk" "schonken" "geschonken" ;
|
||||||
|
lin scheppen_V = mkV "scheppen" "shiep" "schiepen" "geschapen" ;
|
||||||
|
lin scheren_V = mkV "scheren" "scheerde" "scheerden" "geschoren" ;
|
||||||
|
lin schieten_V = mkV "schieten" "schoot" "schoten" "geschoten" ;
|
||||||
|
lin schijnen_V = mkV "schijnen" "scheen" "schenen" "1." ;
|
||||||
|
lin verschijnen_V = mkZijnV "verschijnen" "verscheen" "verschenen" "verschenen" ;
|
||||||
|
lin schijten_V = mkV "schijten" "scheet" "scheten" "gescheten" ;
|
||||||
|
lin schrijven_V = mkV "schrijven" "schreef" "schreven" "geschreven" ;
|
||||||
|
lin schrikken_V = mkZijnV "schrikken" "schrok" "schrokken" "geschrokken" ;
|
||||||
|
lin schuilen_V = mkV "schuilen" "school" "scholen" "gescholen" ;
|
||||||
|
lin schuiven_V = mkZijnHebbenV "schuiven" "schoof" "schoven" "geschoven" ;
|
||||||
|
lin slaan_V = mkV "slaan" "sloeg" "sloegen" "geslagen" ;
|
||||||
|
lin slapen_V = mkV "slapen" "sliep" "sliepen" "geslapen" ;
|
||||||
|
lin slijpen_V = mkV "slijpen" "sleep" "slepen" "geslepen" ;
|
||||||
|
lin slijten_V = mkZijnHebbenV "slijten" "sleet" "sleten" "gesleten" ;
|
||||||
|
lin slinken_V = mkZijnV "slinken" "slonk" "slonken" "geslonken" ;
|
||||||
|
lin sluipen_V = mkZijnHebbenV "sluipen" "sloop" "slopen" "geslopen" ;
|
||||||
|
lin sluiten_V = mkZijnHebbenV "sluiten" "sloot" "sloten" "gesloten" ;
|
||||||
|
lin smelten_V = mkZijnHebbenV "smelten" "smolt" "smolten" "gesmolten" ;
|
||||||
|
lin smijten_V = mkV "smijten" "smeet" "smeten" "gesmeten" ;
|
||||||
|
lin snijden_V = mkV "snijden" "sneed" "sneden" "gesneden" ;
|
||||||
|
lin snuiten_V = mkV "snuiten" "snoot" "snoten" "gesnoten" ;
|
||||||
|
lin snuiven_V = mkV "snuiven" "snoof" "snoven" "gesnoven" ;
|
||||||
|
lin spannen_V = mkV "spannen" "spande" "spanden" "gespannen" ;
|
||||||
|
lin spijten_V = mkV "spijten" "speet" "speten" "gespeten" ;
|
||||||
|
lin spinnen_V = mkV "spinnen" "spon" "sponnen" "gesponnen" ;
|
||||||
|
lin splijten_V = mkZijnHebbenV "splijten" "spleet" "spleten" "gespleten" ;
|
||||||
|
lin spreken_V = mkV "spreken" "sprak" "spraken" "gesproken" ;
|
||||||
|
lin springen_V = mkZijnHebbenV "springen" "sprong" "sprongen" "gesprongen" ;
|
||||||
|
lin spruiten_V = mkZijnV "spruiten" "sproot" "sproten" "gesproten" ;
|
||||||
|
lin spuiten_V = mkV "spuiten" "spoot" "spoten" "gespoten" ;
|
||||||
|
lin staan_V = mkV "staan" "stond" "stonden" "gestaan" ;
|
||||||
|
lin steken_V = mkV "steken" "stak" "staken" "gestoken" ;
|
||||||
|
lin stelen_V = mkV "stelen" "stal" "stalen" "gestolen" ;
|
||||||
|
lin sterven_V = mkZijnV "sterven" "stierf" "stierven" "gestorven" ;
|
||||||
|
lin stijgen_V = mkZijnV "stijgen" "steeg" "stegen" "gestegen" ;
|
||||||
|
lin stijven_V = mkV "stijven" "steef" "steven" "gesteven" ;
|
||||||
|
lin stinken_V = mkV "stinken" "stonk" "stonken" "gestonken" ;
|
||||||
|
lin stoten_V = mkV "stoten" "stootte" "stootten" "gestoten" ;
|
||||||
|
lin strijden_V = mkV "strijden" "streed" "streden" "gestreden" ;
|
||||||
|
lin strijken_V = mkV "strijken" "streek" "streken" "gestreken" ;
|
||||||
|
lin neerstrijken_V = mkV "neerstrijken" "streek" "neer" "streken" ;
|
||||||
|
lin stuiven_V = mkV "stuiven" "stoof" "stoven" "gestoven" ;
|
||||||
|
lin treden_V = mkZijnHebbenV "treden" "trad" "traden" "getreden" ;
|
||||||
|
lin treffen_V = mkV "treffen" "trof" "troffen" "getroffen" ;
|
||||||
|
lin trekken_V = mkZijnHebbenV "trekken" "trok" "trokken" "getrokken" ;
|
||||||
|
lin vallen_V = mkZijnV "vallen" "viel" "vielen" "gevallen" ;
|
||||||
|
lin vangen_V = mkV "vangen" "ving" "vingen" "gevangen" ;
|
||||||
|
lin varen_V = mkZijnHebbenV "varen" "voer" "voeren" "gevaren" ;
|
||||||
|
lin vechten_V = mkV "vechten" "vocht" "vochten" "gevochten" ;
|
||||||
|
lin verdrieten_V = mkV "verdrieten" "verdroot" "verdroten" "verdroten" ;
|
||||||
|
lin verdwijnen_V = mkZijnV "verdwijnen" "verdween" "verdwenen" "verdwenen" ;
|
||||||
|
lin vergeten_V = mkV "vergeten" "+" "vergat" "vergaten" ;
|
||||||
|
lin verliezen_V = mkV "verliezen" "verloor" "verloren" "verloren" ;
|
||||||
|
lin vinden_V = mkV "vinden" "vond" "vonden" "gevonden" ;
|
||||||
|
lin vlechten_V = mkV "vlechten" "vlocht" "vlochten" "gevlochten" ;
|
||||||
|
lin vliegen_V = mkZijnHebbenV "vliegen" "vloog" "vlogen" "gevlogen" ;
|
||||||
|
lin vouwen_V = mkV "vouwen" "vouwde" "vouwden" "gevouwen" ;
|
||||||
|
lin vragen_V = mkV "vragen" "vroeg" "vroegen" "gevraagd" ;
|
||||||
|
lin vreten_V = mkV "vreten" "vrat" "vraten" "gevreten" ;
|
||||||
|
lin vriezen_V = mkV "vriezen" "vroor" "vroren" "gevroren" ;
|
||||||
|
lin vrijen_V = mkV "vrijen" "vree" "/" "vrijde" ;
|
||||||
|
lin wassen_V = mkV "wassen" "waste" "wasten" "gewassen" ;
|
||||||
|
lin wegen_V = mkV "wegen" "woog" "wogen" "gewogen" ;
|
||||||
|
lin werpen_V = mkV "werpen" "wierp" "wierpen" "geworpen" ;
|
||||||
|
lin werven_V = mkV "werven" "wierf" "wierven" "geworven" ;
|
||||||
|
lin weten_V = mkV "weten" "wist" "wisten" "geweten" ;
|
||||||
|
lin weven_V = mkV "weven" "weefde" "weefden" "geweven" ;
|
||||||
|
lin wijken_V = mkZijnV "wijken" "week" "weken" "geweken" ;
|
||||||
|
lin wijten_V = mkV "wijten" "weet" "weten" "geweten" ;
|
||||||
|
lin wijzen_V = mkV "wijzen" "wees" "wezen" "gewezen" ;
|
||||||
|
lin winden_V = mkV "winden" "wond" "wonden" "gewonden" ;
|
||||||
|
lin winnen_V = mkV "winnen" "won" "wonnen" "gewonnen" ;
|
||||||
|
lin worden_V = mkV "worden" "werd" "werden" "geworden" ;
|
||||||
|
lin wrijven_V = mkV "wrijven" "wreef" "wreven" "gewreven" ;
|
||||||
|
lin wringen_V = mkV "wringen" "wrong" "wrongen" "gewrongen" ;
|
||||||
|
lin zeggen_V = mkV "zeggen" "zei" "zeiden" "gezegd" ;
|
||||||
|
lin zenden_V = mkV "zenden" "zond" "zonden" "gezonden" ;
|
||||||
|
lin zien_V = mkV "zien" "zag" "zagen" "gezien" ;
|
||||||
|
lin zijgen_V = mkZijnV "zijgen" "zeeg" "zegen" "gezegen" ;
|
||||||
|
lin zingen_V = mkV "zingen" "zong" "zongen" "gezongen" ;
|
||||||
|
lin zinken_V = mkZijnV "zinken" "zonk" "zonken" "gezonken" ;
|
||||||
|
lin zinnen_V = mkV "zinnen" "zon" "zonnen" "gezonnen" ;
|
||||||
|
lin zitten_V = mkV "zitten" "zat" "zaten" "gezeten" ;
|
||||||
|
lin zoeken_V = mkV "zoeken" "zocht" "zochten" "gezocht" ;
|
||||||
|
lin zuigen_V = mkV "zuigen" "zoog" "zogen" "gezogen" ;
|
||||||
|
lin zuipen_V = mkV "zuipen" "zoop" "zopen" "gezopen" ;
|
||||||
|
lin zwelgen_V = mkV "zwelgen" "zwolg" "zwolgen" "gezwolgen" ;
|
||||||
|
lin zwellen_V = mkZijnV "zwellen" "zwol" "zwollen" "gezwollen" ;
|
||||||
|
lin zwemmen_V = mkZijnHebbenV "zwemmen" "zwom" "zwommen" "gezwommen" ;
|
||||||
|
lin zweren_V = mkV "zweren" "zwoer" "zwoeren" "gezworen" ;
|
||||||
|
lin zwerven_V = mkV "zwerven" "zwierf" "zwierven" "gezworven" ;
|
||||||
|
lin zwijgen_V = mkV "zwijgen" "zweeg" "zwegen" "gezwegen" ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
mkZijnV, mkZijnHebbenV : (_,_,_,_ : Str) -> V ;
|
||||||
|
mkZijnV a b c d = zijnV (mkV a b c d) ;
|
||||||
|
mkZijnHebbenV a b c d = zijnV (mkV a b c d) ; ---- both could be
|
||||||
|
-}
|
||||||
|
}
|
||||||
192
lib/src/afrikaans/IrregAfrAbs.gf
Normal file
192
lib/src/afrikaans/IrregAfrAbs.gf
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
abstract IrregAfrAbs = Cat ** {
|
||||||
|
{-
|
||||||
|
fun bakken_V : V ; -- to fry
|
||||||
|
fun bannen_V : V ; -- to ban
|
||||||
|
fun barsten_V : V ; -- to burst
|
||||||
|
fun bederven_V : V ; -- to rot, to decay
|
||||||
|
fun bedriegen_V : V ; -- to deceive, to cheat, to trick
|
||||||
|
fun beginnen_V : V ; -- to begin
|
||||||
|
fun behangen_V : V ; -- to wall-paper
|
||||||
|
fun bergen_V : V ; -- to store, to recover
|
||||||
|
fun bevelen_V : V ; -- to order, to command
|
||||||
|
fun bezwijken_V : V ; -- to succumb, to collapse
|
||||||
|
fun bidden_V : V ; -- to pray
|
||||||
|
fun bieden_V : V ; -- to offer
|
||||||
|
fun bijten_V : V ; -- to bite
|
||||||
|
fun binden_V : V ; -- to bind, to tie
|
||||||
|
fun blazen_V : V ; -- to blow, to spit (cat)
|
||||||
|
fun blijken_V : V ; -- to appear, to be evident
|
||||||
|
fun blijven_V : V ; -- to stay, to remain, to keep
|
||||||
|
fun blinken_V : V ; -- to shine, to gleam
|
||||||
|
fun braden_V : V ; -- to roast, to grill
|
||||||
|
fun breken_V : V ; -- to break
|
||||||
|
fun brengen_V : V ; -- to bring
|
||||||
|
fun brouwen_V : V ; -- to brew
|
||||||
|
fun buigen_V : V ; -- to bend
|
||||||
|
fun denken_V : V ; -- to think
|
||||||
|
fun dingen_V : V ; -- dongen naar gedongen naar to bid for, to compete for
|
||||||
|
fun doen_V : V ; -- to do
|
||||||
|
fun dragen_V : V ; -- to carry, to bear
|
||||||
|
fun drijven_V : V ; -- to drive, to float , to manage
|
||||||
|
fun dringen_V : V ; -- to push (a crowd)
|
||||||
|
fun drinken_V : V ; -- to drink
|
||||||
|
fun druipen_V : V ; -- to drip
|
||||||
|
fun duiken_V : V ; -- to dive
|
||||||
|
fun dwingen_V : V ; -- to force
|
||||||
|
fun eten_V : V ; -- to eat
|
||||||
|
fun fluiten_V : V ; -- to whistle, to play the flute
|
||||||
|
fun gelden_V : V ; -- to be valid, to be in effect
|
||||||
|
fun gaan_V : V ; -- to go
|
||||||
|
fun genezen_V : V ; -- to heal, to cure
|
||||||
|
fun genieten_V : V ; -- to enjoy
|
||||||
|
fun geven_V : V ; -- to give
|
||||||
|
fun gieten_V : V ; -- to pour
|
||||||
|
fun glijden_V : V ; -- to glide
|
||||||
|
fun glimmen_V : V ; -- to glimmer, to shine, to gleam
|
||||||
|
fun graven_V : V ; -- to dig
|
||||||
|
fun grijpen_V : V ; -- to grab, to snatch
|
||||||
|
fun hangen_V : V ; -- to hang
|
||||||
|
fun heffen_V : V ; -- to raise, to lift, to levy
|
||||||
|
fun helpen_V : V ; -- to help
|
||||||
|
fun heten_V : V ; -- to be called, to be named
|
||||||
|
fun hijsen_V : V ; -- to hoist (sails, flag), to pull up
|
||||||
|
fun hoeven_V : V ; -- to be necessary
|
||||||
|
fun houden_V : V ; -- to hold
|
||||||
|
fun houwen_V : V ; -- to hew, hack
|
||||||
|
fun jagen_V : V ; -- to hunt
|
||||||
|
fun kiezen_V : V ; -- to choose, to elect
|
||||||
|
fun kijken_V : V ; -- keken naar gekeken naar to look at
|
||||||
|
fun klimmen_V : V ; -- to climb
|
||||||
|
fun klinken_V : V ; -- to sound, to ring, to clink
|
||||||
|
fun kluiven_V : V ; -- to pick (a bone), to nibble
|
||||||
|
fun knijpen_V : V ; -- to pinch, to squeeze
|
||||||
|
fun kopen_V : V ; -- to buy
|
||||||
|
fun krijgen_V : V ; -- to get
|
||||||
|
fun krimpen_V : V ; -- to shrink
|
||||||
|
fun kruipen_V : V ; -- to crawl, to creep
|
||||||
|
fun zich_V : V ; -- zich van kweten zich van zich gekweten van to acquit oneself of
|
||||||
|
fun lachen_V : V ; -- to laugh, to smile
|
||||||
|
fun laden_V : V ; -- to load, to charge
|
||||||
|
fun laten_V : V ; -- to let, to allow
|
||||||
|
fun lezen_V : V ; -- to read
|
||||||
|
fun liegen_V : V ; -- to (tell a) lie
|
||||||
|
fun liggen_V : V ; -- to lie (on a bed)
|
||||||
|
fun lijden_V : V ; -- to suffer
|
||||||
|
fun lijken_V : V ; -- leken op geleken op to resemble, to seem
|
||||||
|
fun lopen_V : V ; -- to walk
|
||||||
|
fun malen_V : V ; -- to grind
|
||||||
|
fun melken_V : V ; -- to milk (a cow)
|
||||||
|
fun meten_V : V ; -- to measure
|
||||||
|
fun mijden_V : V ; -- to avoid
|
||||||
|
fun moeten_V : V ; -- to must, have to
|
||||||
|
fun nemen_V : V ; -- to take
|
||||||
|
fun nijgen_V : V ; -- to (make a bow
|
||||||
|
fun ontginnen_V : V ; -- to reclaim (land), to clear (forest), to exploit (mine)
|
||||||
|
fun ontluiken_V : V ; -- to open (flower, beauty)
|
||||||
|
fun pluizen_V : V ; -- to fluff, to give off fluff
|
||||||
|
fun prijzen_V : V ; -- to praise
|
||||||
|
fun raden_V : V ; -- go guess
|
||||||
|
fun rijden_V : V ; -- to drive, to ride
|
||||||
|
fun rijgen_V : V ; -- to tack, to lace, to thread
|
||||||
|
fun rijten_V : V ; -- to tear, to rip
|
||||||
|
fun rijzen_V : V ; -- to rise
|
||||||
|
fun roepen_V : V ; -- to call, to shout
|
||||||
|
fun ruiken_V : V ; -- to smell, to scent
|
||||||
|
fun scheiden_V : V ; -- to divorce, to separate
|
||||||
|
fun schelden_V : V ; -- to curse, to swear
|
||||||
|
fun schenden_V : V ; -- to violate, to damage
|
||||||
|
fun schenken_V : V ; -- 1. to donate 2. to pour
|
||||||
|
fun scheppen_V : V ; -- to create
|
||||||
|
fun scheren_V : V ; -- to shave
|
||||||
|
fun schieten_V : V ; -- to shoot
|
||||||
|
fun schijnen_V : V ; -- geschenen
|
||||||
|
fun verschijnen_V : V ; -- to appear, to turn up
|
||||||
|
fun schijten_V : V ; -- to shit (flat)
|
||||||
|
fun schrijven_V : V ; -- to write
|
||||||
|
fun schrikken_V : V ; -- to be startled
|
||||||
|
fun schuilen_V : V ; -- to shelter
|
||||||
|
fun schuiven_V : V ; -- to shove
|
||||||
|
fun slaan_V : V ; -- to hit
|
||||||
|
fun slapen_V : V ; -- to sleep
|
||||||
|
fun slijpen_V : V ; -- to sharpen, to polish
|
||||||
|
fun slijten_V : V ; -- to wear out, to sell
|
||||||
|
fun slinken_V : V ; -- to shrink, to decrease in number
|
||||||
|
fun sluipen_V : V ; -- to sneak, to slink
|
||||||
|
fun sluiten_V : V ; -- to close, to shut
|
||||||
|
fun smelten_V : V ; -- to melt
|
||||||
|
fun smijten_V : V ; -- to throw, to fling
|
||||||
|
fun snijden_V : V ; -- to cut
|
||||||
|
fun snuiten_V : V ; -- to snout, to blow (nose)
|
||||||
|
fun snuiven_V : V ; -- to sniff, to snort
|
||||||
|
fun spannen_V : V ; -- to strain, to bend (a bow)
|
||||||
|
fun spijten_V : V ; -- to regret
|
||||||
|
fun spinnen_V : V ; -- to twist
|
||||||
|
fun splijten_V : V ; -- to split, to cleave
|
||||||
|
fun spreken_V : V ; -- to speak
|
||||||
|
fun springen_V : V ; -- to jump, to spring
|
||||||
|
fun spruiten_V : V ; -- to sprout, to grow out
|
||||||
|
fun spuiten_V : V ; -- to spout, to squirt
|
||||||
|
fun staan_V : V ; -- to stand
|
||||||
|
fun steken_V : V ; -- to stab, to prick, to sting
|
||||||
|
fun stelen_V : V ; -- to steal
|
||||||
|
fun sterven_V : V ; -- to die
|
||||||
|
fun stijgen_V : V ; -- to rise
|
||||||
|
fun stijven_V : V ; -- to starch
|
||||||
|
fun stinken_V : V ; -- to stink
|
||||||
|
fun stoten_V : V ; -- to push, to bump
|
||||||
|
fun strijden_V : V ; -- to battle, to fight
|
||||||
|
fun strijken_V : V ; -- to iron (clothes), strike (flag), smooth (hair)
|
||||||
|
fun neerstrijken_V : V ; -- neer neergestreken * to settle in a place
|
||||||
|
fun stuiven_V : V ; -- to cause dust to whirl, to dash forward
|
||||||
|
fun treden_V : V ; -- to tread
|
||||||
|
fun treffen_V : V ; -- to hit (goal) to strike
|
||||||
|
fun trekken_V : V ; -- to pull, to draw, to travel
|
||||||
|
fun vallen_V : V ; -- to fall
|
||||||
|
fun vangen_V : V ; -- to catch
|
||||||
|
fun varen_V : V ; -- to fare, to sail
|
||||||
|
fun vechten_V : V ; -- to fight
|
||||||
|
fun verdrieten_V : V ; -- to grieve
|
||||||
|
fun verdwijnen_V : V ; -- to disappear
|
||||||
|
fun vergeten_V : V ; -- vergeten to forget
|
||||||
|
fun verliezen_V : V ; -- to lose
|
||||||
|
fun vinden_V : V ; -- to find
|
||||||
|
fun vlechten_V : V ; -- to plait, to braid
|
||||||
|
fun vliegen_V : V ; -- to fly
|
||||||
|
fun vouwen_V : V ; -- to fold
|
||||||
|
fun vragen_V : V ; -- to ask
|
||||||
|
fun vreten_V : V ; -- to eat, to devour
|
||||||
|
fun vriezen_V : V ; -- to freeze ("it's freezing")
|
||||||
|
fun vrijen_V : V ; -- vreeën / vrijden gevreeën / gevrijd to make love
|
||||||
|
fun wassen_V : V ; -- to wash
|
||||||
|
fun wegen_V : V ; -- to weigh
|
||||||
|
fun werpen_V : V ; -- to throw
|
||||||
|
fun werven_V : V ; -- to recruit
|
||||||
|
fun weten_V : V ; -- to know
|
||||||
|
fun weven_V : V ; -- to weave
|
||||||
|
fun wijken_V : V ; -- to give way, to disappear
|
||||||
|
fun wijten_V : V ; -- to blame (something) on
|
||||||
|
fun wijzen_V : V ; -- to point
|
||||||
|
fun winden_V : V ; -- to wind
|
||||||
|
fun winnen_V : V ; -- to win
|
||||||
|
fun worden_V : V ; -- to become
|
||||||
|
fun wrijven_V : V ; -- to rub
|
||||||
|
fun wringen_V : V ; -- to wring
|
||||||
|
fun zeggen_V : V ; -- to say
|
||||||
|
fun zenden_V : V ; -- to send
|
||||||
|
fun zien_V : V ; -- to see
|
||||||
|
fun zijgen_V : V ; -- to sink down (neerzijgen)
|
||||||
|
fun zingen_V : V ; -- to sing
|
||||||
|
fun zinken_V : V ; -- to sink
|
||||||
|
fun zinnen_V : V ; -- to ponder (zinnen op)
|
||||||
|
fun zitten_V : V ; -- to sit
|
||||||
|
fun zoeken_V : V ; -- to seek, to search
|
||||||
|
fun zuigen_V : V ; -- to suck
|
||||||
|
fun zuipen_V : V ; -- to booze
|
||||||
|
fun zwelgen_V : V ; -- to revel, to dwell (in self-pity)
|
||||||
|
fun zwellen_V : V ; -- to swell
|
||||||
|
fun zwemmen_V : V ; -- to swim
|
||||||
|
fun zweren_V : V ; -- to swear (oath)
|
||||||
|
fun zwerven_V : V ; -- to wander, to ramble
|
||||||
|
fun zwijgen_V : V ; -- to be silent
|
||||||
|
-}
|
||||||
|
}
|
||||||
5
lib/src/afrikaans/LangAfr.gf
Normal file
5
lib/src/afrikaans/LangAfr.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
--# -path=.:../abstract:../common:../prelude
|
||||||
|
|
||||||
|
concrete LangAfr of Lang =
|
||||||
|
GrammarAfr,
|
||||||
|
LexiconAfr ;
|
||||||
362
lib/src/afrikaans/LexiconAfr.gf
Normal file
362
lib/src/afrikaans/LexiconAfr.gf
Normal file
@@ -0,0 +1,362 @@
|
|||||||
|
--# -path=.:../common:../abstract:../../prelude
|
||||||
|
|
||||||
|
-- work by Aarne Ranta
|
||||||
|
|
||||||
|
concrete LexiconAfr of Lexicon = CatAfr **
|
||||||
|
open Prelude, ParadigmsAfr, IrregAfr in {
|
||||||
|
|
||||||
|
flags
|
||||||
|
optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
add_V3 = mkV3 (mkV "toe" (mkV "voeg")) (mkPrep "aan") ;
|
||||||
|
already_Adv = mkAdv "al" ;
|
||||||
|
answer_V2S = mkV2S (mkV "antwoord") noPrep ;
|
||||||
|
ask_V2Q = mkV2Q (mkV "vra") noPrep ;
|
||||||
|
bad_A = mkA "boos" ;
|
||||||
|
beautiful_A = mkA "mooi" ;
|
||||||
|
become_VA = mkVA (mkV "word") ;
|
||||||
|
beer_N = mkN "bier" "bieren" neuter ;
|
||||||
|
beg_V2V = mkV2V (mkV "smek") noPrep ; ---- om te
|
||||||
|
big_A = mkA "groot" ;
|
||||||
|
bike_N = mkN "fiets" ;
|
||||||
|
black_A = mkA "swart" ;
|
||||||
|
blue_A = mkA "blauw";
|
||||||
|
book_N = mkN "boek" ;
|
||||||
|
brother_N2 = mkN2 (mkN "broer" "broers" masculine) van_Prep ;
|
||||||
|
brown_A = mkA "bruin" ;
|
||||||
|
buy_V2 = mkV2 (mkV "kop" "kocht" "gekocht") ;
|
||||||
|
child_N = mkN "kind" "kinderen" neuter ;
|
||||||
|
come_V = zijnV (mkV "kom") ;
|
||||||
|
die_V = zijnV (mkV "sterv" "stierf" "gestorv") ;
|
||||||
|
distance_N3 = mkN3 (mkN "afstand") van_Prep (mkPrep "naar") ;
|
||||||
|
drink_V2 = mkV2 (mkV "drink") ;
|
||||||
|
easy_A2V = mkA2 (mkA "gemakkelik") noPrep ;
|
||||||
|
eat_V2 = mkV2 (mkV "eet") ;
|
||||||
|
father_N2 = mkN2 (mkN "vader") van_Prep ;
|
||||||
|
fear_VS = mkVS (mkV "vres") ;
|
||||||
|
fish_N = mkN "vis" ;
|
||||||
|
go_V = mkV "gaan" ;
|
||||||
|
hope_VS = mkVS (mkV "hop") ;
|
||||||
|
house_N = mkN "huis" neuter ;
|
||||||
|
know_VQ = mkVQ (mkV "weet") ;
|
||||||
|
know_VS = mkVS (mkV "weet") ;
|
||||||
|
married_A2 = mkA2 (mkA "getrouwd") (mkPrep "met") ;
|
||||||
|
mother_N2 = mkN2 (mkN "moeder") ;
|
||||||
|
now_Adv = mkAdv "nu" ;
|
||||||
|
paint_V2A = mkV2A (mkV "schilder") noPrep ;
|
||||||
|
paris_PN = mkPN "Parys" ;
|
||||||
|
red_A = mkA "rood" ;
|
||||||
|
say_VS = mkVS (mkV "sê") ;
|
||||||
|
see_V2 = mkV2 (mkV "sien") ;
|
||||||
|
sell_V3 = mkV3 (mkV "verkop" "verkocht" "verkocht") ;
|
||||||
|
send_V3 = mkV3 (mkV "stur") (mkPrep "naar") ;
|
||||||
|
sleep_V = mkV "slaap" ;
|
||||||
|
small_A = mkA "klein" ;
|
||||||
|
talk_V3 = mkV3 (mkV "prat") (mkPrep "met") (mkPrep "over") ;
|
||||||
|
warm_A = mkA "warm" ;
|
||||||
|
wine_N = mkN "wyn" ;
|
||||||
|
john_PN = mkPN "Jan" ;
|
||||||
|
left_Ord = mkOrd (invarA "linker") ; ----
|
||||||
|
right_Ord = mkOrd (invarA "rechter") ; ----
|
||||||
|
today_Adv = mkAdv "vandaag" ;
|
||||||
|
far_Adv = mkAdv "ver" ;
|
||||||
|
give_V3 = mkV3 (mkV "gee") ;
|
||||||
|
wonder_VQ = mkVQ (reflV (mkV "af" (mkV "vra"))) ;
|
||||||
|
airplane_N = mkN "vliegtuig" neuter ;
|
||||||
|
animal_N = mkN "dier" neuter ;
|
||||||
|
apartment_N = mkN "appartement" neuter ;
|
||||||
|
apple_N = mkN "appel" utrum ;
|
||||||
|
art_N = mkN "kunst" utrum ;
|
||||||
|
ashes_N = mkN "as" utrum ;
|
||||||
|
baby_N = mkN "baby" utrum ;
|
||||||
|
back_N = mkN "achterkant" utrum ;
|
||||||
|
bank_N = mkN "bank" utrum ;
|
||||||
|
bark_N = mkN "schors" utrum ;
|
||||||
|
belly_N = mkN "buik" utrum ;
|
||||||
|
bird_N = mkN "vogel" utrum ;
|
||||||
|
bite_V2 = mkV2 (mkV "byt") ;
|
||||||
|
black_A = mkA "swart" ;
|
||||||
|
blood_N = mkN "bloed" neuter ;
|
||||||
|
blow_V = mkV "blaas" ;
|
||||||
|
boat_N = mkN "boot" utrum ;
|
||||||
|
bone_N = mkN "bot" neuter ;
|
||||||
|
boot_N = mkN "boot" utrum ;
|
||||||
|
boss_N = mkN "baas" utrum ;
|
||||||
|
boy_N = mkN "jongen" utrum ;
|
||||||
|
bread_N = mkN "brood" neuter ;
|
||||||
|
break_V2 = mkV2 (mkV "breek") ;
|
||||||
|
breast_N = mkN "borst" utrum ;
|
||||||
|
breathe_V = mkV "adem" ;
|
||||||
|
broad_A = mkA "breed" ;
|
||||||
|
burn_V = mkV "brand" ;
|
||||||
|
butter_N = mkN "boter" utrum ;
|
||||||
|
camera_N = mkN "camera" utrum ;
|
||||||
|
cap_N = mkN "kap" utrum ;
|
||||||
|
car_N = mkN "auto" utrum ;
|
||||||
|
carpet_N = mkN "tapyt" neuter ;
|
||||||
|
cat_N = mkN "kat" utrum ;
|
||||||
|
ceiling_N = mkN "plafond" neuter ;
|
||||||
|
chair_N = mkN "stoel" utrum ;
|
||||||
|
cheese_N = mkN "kaas" utrum ;
|
||||||
|
church_N = mkN "kerk" utrum ;
|
||||||
|
city_N = mkN "stad" utrum ;
|
||||||
|
clean_A = mkA "schoon" ;
|
||||||
|
clever_A = mkA "slim" ;
|
||||||
|
close_V2 = mkV2 (mkV "sluit") ;
|
||||||
|
cloud_N = mkN "wolk" utrum ;
|
||||||
|
coat_N = mkN "vacht" utrum ;
|
||||||
|
cold_A = mkA "koud" ;
|
||||||
|
computer_N = mkN "computer" utrum ;
|
||||||
|
correct_A = mkA "correct" ;
|
||||||
|
count_V2 = mkV2 "reken" ;
|
||||||
|
country_N = mkN "land" neuter ;
|
||||||
|
cousin_N = mkN "neef" utrum ;
|
||||||
|
cow_N = mkN "koe" utrum ;
|
||||||
|
cut_V2 = mkV2 (mkV "sny") ;
|
||||||
|
day_N = mkN "dag" utrum ;
|
||||||
|
dig_V = mkV "grawe" ;
|
||||||
|
dirty_A = mkA "vuil" ;
|
||||||
|
do_V2 = mkV2 (mkV "doen") ;
|
||||||
|
doctor_N = mkN "arts" utrum ;
|
||||||
|
dog_N = mkN "hond" utrum ;
|
||||||
|
door_N = mkN "deur" utrum ;
|
||||||
|
dry_A = mkA "droog" ;
|
||||||
|
dull_A = mkA "saai" ;
|
||||||
|
dust_N = mkN "stof" neuter ;
|
||||||
|
ear_N = mkN "oor" neuter ;
|
||||||
|
earth_N = mkN "aarde" utrum ;
|
||||||
|
egg_N = mkN "ei" neuter ;
|
||||||
|
empty_A = mkA "leeg" ;
|
||||||
|
enemy_N = mkN "vyand" utrum ;
|
||||||
|
eye_N = mkN "oog" neuter ;
|
||||||
|
factory_N = mkN "fabriek" utrum ;
|
||||||
|
fall_V = mkV "val" ;
|
||||||
|
fat_N = mkN "vet" neuter ;
|
||||||
|
fear_V2 = mkV2 "vrez" ;
|
||||||
|
feather_N = mkN "veer" utrum ;
|
||||||
|
fight_V2 = mkV2 (mkV "veg") ;
|
||||||
|
find_V2 = mkV2 (mkV "vind") ;
|
||||||
|
fingernail_N = mkN "vingernagel" utrum ;
|
||||||
|
fire_N = mkN "brand" utrum ;
|
||||||
|
float_V = mkV "dryf" ;
|
||||||
|
floor_N = mkN "vloer" utrum ;
|
||||||
|
flow_V = mkV "strom" ;
|
||||||
|
flower_N = mkN "bloem" utrum ;
|
||||||
|
fly_V = mkV "vlieg" ;
|
||||||
|
fog_N = mkN "mist" utrum ;
|
||||||
|
foot_N = mkN "voet" utrum ;
|
||||||
|
forest_N = mkN "bos" neuter ;
|
||||||
|
forget_V2 = mkV2 (mkV "vergeet") ;
|
||||||
|
freeze_V = mkV "vries" ;
|
||||||
|
fridge_N = mkN "koelkast" utrum ;
|
||||||
|
friend_N = mkN "vriend" utrum ;
|
||||||
|
fruit_N = mkN "vrucht" utrum ;
|
||||||
|
full_A = mkA "vol" ;
|
||||||
|
fun_AV = mkA "leuk" ;
|
||||||
|
garden_N = mkN "tuin" utrum ;
|
||||||
|
girl_N = mkN "meisje" neuter ;
|
||||||
|
glove_N = mkN "handschoen" utrum ;
|
||||||
|
gold_N = mkN "goud" neuter ;
|
||||||
|
good_A = mkA "goed" "goede" "goeds" "beter" "best" ;
|
||||||
|
grammar_N = mkN "grammatica" utrum ;
|
||||||
|
grass_N = mkN "gras" neuter ;
|
||||||
|
green_A = mkA "groen" ;
|
||||||
|
guts_N = mkN "darm" utrum ;
|
||||||
|
hair_N = mkN "haar" neuter ;
|
||||||
|
hand_N = mkN "hand" utrum ;
|
||||||
|
harbour_N = mkN "haven" utrum ;
|
||||||
|
hat_N = mkN "hoed" utrum ;
|
||||||
|
hate_V2 = mkV2 "hat" ;
|
||||||
|
head_N = mkN "hoofd" neuter ;
|
||||||
|
hear_V2 = mkV2 "hor" ;
|
||||||
|
heart_N = mkN "hart" neuter ;
|
||||||
|
heavy_A = mkA "swaar" ;
|
||||||
|
hill_N = mkN "heuvel" utrum ;
|
||||||
|
hit_V2 = mkV2 "rak" ;
|
||||||
|
hold_V2 = mkV2 (mkV "hou") ;
|
||||||
|
horn_N = mkN "hoorn" utrum ;
|
||||||
|
horse_N = mkN "paard" neuter ;
|
||||||
|
hot_A = mkA "heet" ;
|
||||||
|
hunt_V2 = mkV2 "jag" ;
|
||||||
|
husband_N = mkN "man" utrum ;
|
||||||
|
ice_N = mkN "ys" neuter ;
|
||||||
|
important_A = mkA "belangryk" ;
|
||||||
|
industry_N = mkN "industrie" "industrieën" utrum ;
|
||||||
|
iron_N = mkN "yser" neuter ;
|
||||||
|
jump_V = mkV "spring" ;
|
||||||
|
kill_V2 = mkV2 "dood" ;
|
||||||
|
king_N = mkN "koning" utrum ;
|
||||||
|
knee_N = mkN "knie" utrum ;
|
||||||
|
know_V2 = mkV2 "kenn" ;
|
||||||
|
lake_N = mkN "meer" neuter ;
|
||||||
|
lamp_N = mkN "lamp" utrum ;
|
||||||
|
language_N = mkN "taal" utrum ;
|
||||||
|
laugh_V = mkV "lag" ;
|
||||||
|
leaf_N = mkN "blad" neuter ;
|
||||||
|
learn_V2 = mkV2 "ler" ;
|
||||||
|
leather_N = mkN "leer" neuter ;
|
||||||
|
leave_V2 = mkV2 (mkV "laat") ;
|
||||||
|
leg_N = mkN "been" neuter ;
|
||||||
|
lie_V = mkV "lê" ;
|
||||||
|
like_V2 = mkV2 (mkV "hou") van_Prep ;
|
||||||
|
listen_V2 = mkV2 "luister" ;
|
||||||
|
live_V = mkV "leef" ;
|
||||||
|
liver_N = mkN "lewer" utrum ;
|
||||||
|
long_A = mkA "lang" ;
|
||||||
|
lose_V2 = mkV2 (mkV "verloor") ;
|
||||||
|
louse_N = mkN "luis" utrum ;
|
||||||
|
love_N = mkN "liefde" utrum ;
|
||||||
|
love_V2 = mkV2 (mkV "lief" hebben_V) ;
|
||||||
|
man_N = mkN "man" utrum ;
|
||||||
|
meat_N = mkN "vlees" neuter ;
|
||||||
|
milk_N = mkN "melk" utrum ;
|
||||||
|
moon_N = mkN "maan" utrum ;
|
||||||
|
mountain_N = mkN "berg" utrum ;
|
||||||
|
mouth_N = mkN "mond" utrum ;
|
||||||
|
music_N = mkN "musiek" utrum ;
|
||||||
|
name_N = mkN "naam" utrum ;
|
||||||
|
narrow_A = mkA "smal" ;
|
||||||
|
near_A = mkA "naby" ;
|
||||||
|
neck_N = mkN "nek" utrum ;
|
||||||
|
new_A = mkA "nieuw" ;
|
||||||
|
newspaper_N = mkN "krant" utrum ;
|
||||||
|
night_N = mkN "nacht" utrum ;
|
||||||
|
nose_N = mkN "neus" utrum ;
|
||||||
|
number_N = mkN "nummer" neuter ;
|
||||||
|
oil_N = mkN "olie-schakelaars" utrum ;
|
||||||
|
old_A = mkA "oud" ;
|
||||||
|
open_V2 = mkV2 "open" ;
|
||||||
|
paper_N = mkN "papier" neuter ;
|
||||||
|
peace_N = mkN "vrede" utrum ;
|
||||||
|
pen_N = mkN "pen" utrum ;
|
||||||
|
person_N = mkN "persoon" utrum ;
|
||||||
|
planet_N = mkN "planeet" utrum ;
|
||||||
|
plastic_N = mkN "plastic" utrum ;
|
||||||
|
play_V = mkV "spel" ;
|
||||||
|
play_V2 = mkV2 "spel" ;
|
||||||
|
policeman_N = mkN "politieagent" utrum ;
|
||||||
|
priest_N = mkN "priester" utrum ;
|
||||||
|
probable_AS = mkA "waarschynlik" ;
|
||||||
|
pull_V2 = mkV2 "trekk" ;
|
||||||
|
push_V2 = mkV2 "duw" ;
|
||||||
|
put_V2 = mkV2 "sett" ;
|
||||||
|
queen_N = mkN "koningin" utrum ;
|
||||||
|
question_N = mkN "vraag" utrum ;
|
||||||
|
radio_N = mkN "radio" utrum ;
|
||||||
|
rain_N = mkN "regen" utrum ;
|
||||||
|
rain_V0 = mkV "regen" ;
|
||||||
|
read_V2 = mkV2 (mkV "lees") ;
|
||||||
|
ready_A = mkA "klaar" ;
|
||||||
|
reason_N = mkN "reden" utrum ;
|
||||||
|
-- red_A = mkA "rood" ;
|
||||||
|
religion_N = mkN "religie" utrum ;
|
||||||
|
restaurant_N = mkN "restaurant" neuter ;
|
||||||
|
river_N = mkN "rivier" utrum ;
|
||||||
|
road_N = mkN "weg" utrum ;
|
||||||
|
rock_N = mkN "rots" utrum ;
|
||||||
|
roof_N = mkN "dak" neuter ;
|
||||||
|
root_N = mkN "wortel" utrum ;
|
||||||
|
rope_N = mkN "touw" neuter ;
|
||||||
|
rotten_A = mkA "verrot" ;
|
||||||
|
round_A = mkA "rond" ;
|
||||||
|
rub_V2 = mkV2 (mkV "vryf") ;
|
||||||
|
rubber_N = mkN "rubberen" utrum ;
|
||||||
|
rule_N = mkN "regel" utrum ;
|
||||||
|
run_V = zijnV (mkV "renn") ;
|
||||||
|
salt_N = mkN "sout" neuter ;
|
||||||
|
sand_N = mkN "sand" neuter ;
|
||||||
|
school_N = mkN "school" utrum ;
|
||||||
|
science_N = mkN "wetenschap" utrum ;
|
||||||
|
scratch_V2 = mkV2 "krass" ;
|
||||||
|
sea_N = mkN "see" utrum ;
|
||||||
|
seed_N = mkN "saad" neuter ;
|
||||||
|
seek_V2 = mkV2 (mkV "soek") ;
|
||||||
|
sew_V = mkV "naai" ;
|
||||||
|
sharp_A = mkA "scherp" ;
|
||||||
|
sheep_N = mkN "schaap" neuter ;
|
||||||
|
ship_N = mkN "schip" neuter ;
|
||||||
|
shirt_N = mkN "shirt" neuter ;
|
||||||
|
shoe_N = mkN "schoen" utrum ;
|
||||||
|
shop_N = mkN "winkel" utrum ;
|
||||||
|
short_A = mkA "kort" ;
|
||||||
|
silver_N = mkN "silver" neuter ;
|
||||||
|
sing_V = mkV "sing" ;
|
||||||
|
sister_N = mkN "suster" utrum ;
|
||||||
|
sit_V = mkV "sit" ;
|
||||||
|
skin_N = mkN "huid" utrum ;
|
||||||
|
sky_N = mkN "lucht" utrum ;
|
||||||
|
smell_V = mkV "ruik" ;
|
||||||
|
smoke_N = mkN "rook" utrum ;
|
||||||
|
smooth_A = mkA "glad" ;
|
||||||
|
snake_N = mkN "slang" utrum ;
|
||||||
|
snow_N = mkN "sneeuw" utrum ;
|
||||||
|
sock_N = mkN "sok" utrum ;
|
||||||
|
song_N = mkN "liedje" neuter ;
|
||||||
|
speak_V2 = mkV2 (mkV "spreek") ;
|
||||||
|
spit_V = mkV "spug" ;
|
||||||
|
split_V2 = mkV2 (mkV "splyt") ;
|
||||||
|
squeeze_V2 = mkV2 (mkV "knyp") ;
|
||||||
|
stab_V2 = mkV2 (mkV "steek") ;
|
||||||
|
stand_V = mkV "staan" ;
|
||||||
|
star_N = mkN "ster" utrum ;
|
||||||
|
steel_N = mkN "staal" neuter ;
|
||||||
|
stick_N = mkN "stok" utrum ;
|
||||||
|
stone_N = mkN "steen" utrum ;
|
||||||
|
stop_V = mkV "stoppen" ;
|
||||||
|
stove_N = mkN "kachel" utrum ;
|
||||||
|
straight_A = mkA "recht" ;
|
||||||
|
student_N = mkN "student" utrum ;
|
||||||
|
stupid_A = mkA "dom" ;
|
||||||
|
suck_V2 = mkV2 (mkV "suig") ;
|
||||||
|
sun_N = mkN "son" utrum ;
|
||||||
|
swell_V = mkV "swel" ;
|
||||||
|
swim_V = mkV "swem" ;
|
||||||
|
switch8off_V2 = mkV2 "schakel" ;
|
||||||
|
switch8on_V2 = mkV2 (mkV "op" (mkV "schakel")) ;
|
||||||
|
table_N = mkN "tabel" utrum ;
|
||||||
|
tail_N = mkN "staart" utrum ;
|
||||||
|
teach_V2 = mkV2 "ler" ;
|
||||||
|
teacher_N = mkN "leraar" utrum ;
|
||||||
|
television_N = mkN "televisie" utrum ;
|
||||||
|
thick_A = mkA "dik" ;
|
||||||
|
thin_A = mkA "dun" ;
|
||||||
|
think_V = mkV "dink" ;
|
||||||
|
throw_V2 = mkV2 "gooi" ;
|
||||||
|
tie_V2 = mkV2 "band" ;
|
||||||
|
tongue_N = mkN "tong" utrum ;
|
||||||
|
tooth_N = mkN "tand" utrum ;
|
||||||
|
train_N = mkN "trein" utrum ;
|
||||||
|
travel_V = mkV "reis" ;
|
||||||
|
tree_N = mkN "boom" utrum ;
|
||||||
|
turn_V = mkV "draai" ;
|
||||||
|
ugly_A = mkA "lelik" ;
|
||||||
|
uncertain_A = mkA "onseker" ;
|
||||||
|
understand_V2 = mkV2 (mkV "begryp") ;
|
||||||
|
university_N = mkN "universiteit" utrum ;
|
||||||
|
village_N = mkN "dorp" neuter ;
|
||||||
|
vomit_V = mkV "brak" ;
|
||||||
|
wait_V2 = mkV2 "wach" ;
|
||||||
|
walk_V = mkV "lop" ;
|
||||||
|
war_N = mkN "oorlog" utrum ;
|
||||||
|
wash_V2 = mkV2 (mkV "was") ;
|
||||||
|
watch_V2 = mkV2 (mkV "kyk") (mkPrep "naar") ;
|
||||||
|
water_N = mkN "water" neuter ;
|
||||||
|
wet_A = mkA "nat" ;
|
||||||
|
white_A = mkA "wit" ;
|
||||||
|
wide_A = mkA "breed" ;
|
||||||
|
wife_N = mkN "vrouw" utrum ;
|
||||||
|
win_V2 = mkV2 (mkV "wen") ;
|
||||||
|
wind_N = mkN "wind" utrum ;
|
||||||
|
window_N = mkN "raam" neuter ;
|
||||||
|
wing_N = mkN "vleugel" utrum ;
|
||||||
|
wipe_V2 = mkV2 "veg" ;
|
||||||
|
woman_N = mkN "vrouw" utrum ;
|
||||||
|
wood_N = mkN "hout" neuter ;
|
||||||
|
worm_N = mkN "worm" utrum ;
|
||||||
|
write_V2 = mkV2 (mkV "skryf") ;
|
||||||
|
year_N = mkN "jaar" neuter ;
|
||||||
|
yellow_A = mkA "geel" ;
|
||||||
|
young_A = mkA "jong" ;
|
||||||
|
|
||||||
|
}
|
||||||
100
lib/src/afrikaans/MorphoAfr.gf
Normal file
100
lib/src/afrikaans/MorphoAfr.gf
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
--# -path=.:../common:../../prelude
|
||||||
|
--
|
||||||
|
----1 A Simple Afrman Resource Morphology
|
||||||
|
----
|
||||||
|
---- Aarne Ranta & Harald Hammarström 2002 -- 2006
|
||||||
|
----
|
||||||
|
---- This resource morphology contains definitions needed in the resource
|
||||||
|
---- syntax. To build a lexicon, it is better to use $ParadigmsAfr$, which
|
||||||
|
---- gives a higher-level access to this module.
|
||||||
|
--
|
||||||
|
resource MorphoAfr = ResAfr ** open Prelude, (Predef=Predef) in
|
||||||
|
{
|
||||||
|
--{
|
||||||
|
--
|
||||||
|
-- flags optimize=all ;
|
||||||
|
--
|
||||||
|
--oper
|
||||||
|
--
|
||||||
|
---- For $StructuralAfr$.
|
||||||
|
--
|
||||||
|
-- mkPrep : Str -> Case -> Preposition = \s,c ->
|
||||||
|
-- {s = s ; c = c} ;
|
||||||
|
--
|
||||||
|
-- nameNounPhrase : {s : Case => Str} -> {s : Case => Str ; a : Agr} = \name ->
|
||||||
|
-- name ** {a = agrP3 Sg} ;
|
||||||
|
--
|
||||||
|
-- detLikeAdj : Number -> Str ->
|
||||||
|
-- {s,sp : Gender => Case => Str ; n : Number ; a : Adjf} = \n,dies ->
|
||||||
|
-- {s,sp = appAdj (regA dies) ! n ; n = n ; a = Weak} ;
|
||||||
|
--
|
||||||
|
-- mkOrd : {s : Degree => AForm => Str} -> {s : AForm => Str} = \a ->
|
||||||
|
-- {s = a.s ! Posit} ;
|
||||||
|
--
|
||||||
|
---- For $ParadigmsAfr$.
|
||||||
|
--
|
||||||
|
-- genitS : Str -> Str = \hund -> case hund of {
|
||||||
|
-- _ + ("el" | "en" | "er") => hund + "s" ;
|
||||||
|
-- _ + ("s" | "ß" | "sch" | "st" | "x" | "z") => hund + "es" ;
|
||||||
|
-- _ => hund + variants {"s" ; "es"}
|
||||||
|
-- } ;
|
||||||
|
-- pluralN : Str -> Str = \hund -> case hund of {
|
||||||
|
-- _ + ("el" | "er" | "e") => hund + "n" ;
|
||||||
|
-- _ + "en" => hund ;
|
||||||
|
-- _ => hund + "en"
|
||||||
|
-- } ;
|
||||||
|
-- dativE : Str -> Str = \hund -> case hund of {
|
||||||
|
-- _ + ("el" | "en" | "er" | "e") => hund ;
|
||||||
|
-- _ => variants {hund ; hund + "e"}
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
---- Duden, p. 119
|
||||||
|
--
|
||||||
|
-- verbT : Str -> Str = \v -> case v of {
|
||||||
|
-- _ + ("t" | "d") => v + "et" ; -- gründen, reden, betten
|
||||||
|
-- _ + ("ch" | "k" | "p" | "t" | "g" | "b" | "d" | "f" | "s") +
|
||||||
|
-- ("m" | "n") => v + "et" ; -- atmen, widmen, öffnen, rechnen
|
||||||
|
-- _ => v + "t" -- lernen, lärmen, qualmen etc
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
-- verbST : Str -> Str = \v -> case v of {
|
||||||
|
-- _ + ("s" | "ss" | "ß" | "sch" | "x" | "z") => v + "t" ;
|
||||||
|
-- _ => v + "st"
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
-- stemVerb : Str -> Str = \v -> case v of {
|
||||||
|
-- _ + ("rn" | "ln") => init v ;
|
||||||
|
-- _ => Predef.tk 2 v
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
---- For $Numeral$.
|
||||||
|
--
|
||||||
|
-- LinDigit = {s : DForm => CardOrd => Str} ;
|
||||||
|
--
|
||||||
|
-- cardOrd : Str -> Str -> CardOrd => Str = \drei,dritte ->
|
||||||
|
-- table {
|
||||||
|
-- NCard _ _ => drei ;
|
||||||
|
-- NOrd a => (regA (init dritte)).s ! Posit ! a
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
-- cardReg : Str -> CardOrd => Str = \zehn ->
|
||||||
|
-- cardOrd zehn (zehn + "te") ;
|
||||||
|
--
|
||||||
|
-- mkDigit : (x1,_,_,x4 : Str) -> LinDigit =
|
||||||
|
-- \drei,dreizehn,dreissig,dritte ->
|
||||||
|
-- {s = table {
|
||||||
|
-- DUnit => cardOrd drei dritte ;
|
||||||
|
-- DTeen => cardReg dreizehn ;
|
||||||
|
-- DTen => cardOrd dreissig (dreissig + "ste")
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
-- regDigit : Str -> LinDigit = \vier ->
|
||||||
|
-- mkDigit vier (vier + "zehn") (vier + "zig") (vier + "te") ;
|
||||||
|
--
|
||||||
|
-- invNum : CardOrd = NCard Masc Nom ;
|
||||||
|
--
|
||||||
|
--} ;
|
||||||
|
--
|
||||||
|
|
||||||
|
}
|
||||||
180
lib/src/afrikaans/NounAfr.gf
Normal file
180
lib/src/afrikaans/NounAfr.gf
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
concrete NounAfr of Noun = CatAfr ** open ResAfr, Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
DetCN det cn = {
|
||||||
|
s = \\c => det.s ! cn.g ++ cn.s ! det.a ! NF det.n Nom ;
|
||||||
|
a = agrP3 det.n ;
|
||||||
|
isPron = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
DetNP det = {
|
||||||
|
s = \\_ => det.sp ! Neutr ;
|
||||||
|
a = agrP3 det.n ;
|
||||||
|
isPron = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
UsePN pn = {s = pn.s ; a = agrP3 Sg ; isPron = False} ;
|
||||||
|
|
||||||
|
UsePron pron = {
|
||||||
|
s = table {NPNom => pron.unstressed.nom ; NPAcc => pron.unstressed.acc} ;
|
||||||
|
a = pron.a ;
|
||||||
|
isPron = True
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PredetNP pred np = heavyNP {
|
||||||
|
s = \\c =>
|
||||||
|
pred.s ! np.a.n ! np.a.g ++ np.s ! c ; ---- g
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PPartNP np v2 = heavyNP {
|
||||||
|
s = \\c => np.s ! c ++ v2.s ! VPerf ; -- invar part
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvNP np adv = heavyNP {
|
||||||
|
s = \\c => np.s ! c ++ adv.s ;
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
DetQuantOrd quant num ord =
|
||||||
|
let
|
||||||
|
n = num.n ;
|
||||||
|
a = quant.a
|
||||||
|
in {
|
||||||
|
s = \\g => quant.s ! num.isNum ! n ! g ++
|
||||||
|
num.s ++ ord.s ! agrAdj g quant.a (NF n Nom) ;
|
||||||
|
sp = \\g => quant.sp ! n ! g ++
|
||||||
|
num.s ++ ord.s ! agrAdj g quant.a (NF n Nom) ;
|
||||||
|
n = n ;
|
||||||
|
a = a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
DetQuant quant num =
|
||||||
|
let
|
||||||
|
n = num.n ;
|
||||||
|
a = quant.a
|
||||||
|
in {
|
||||||
|
s = \\g => quant.s ! num.isNum ! n ! g ++ num.s ;
|
||||||
|
sp = \\g => quant.sp ! n ! g ++ num.s ;
|
||||||
|
n = n ;
|
||||||
|
a = a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PossPron p = {
|
||||||
|
s = \\_,n,g => p.unstressed.poss ;
|
||||||
|
sp = \\n,g => p.substposs ;
|
||||||
|
a = Strong
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NumCard n = {s = n.s ! Utr ! Nom ; n = n.n ; isNum = True} ;
|
||||||
|
|
||||||
|
NumPl = {s = []; n = Pl ; isNum = False} ;
|
||||||
|
NumSg = {s = []; n = Sg ; isNum = False} ;
|
||||||
|
|
||||||
|
NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||||
|
OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ;
|
||||||
|
|
||||||
|
NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||||
|
OrdNumeral numeral = {s = \\af => numeral.s ! NOrd af} ;
|
||||||
|
|
||||||
|
AdNum adn num = {s = \\g,c => adn.s ++ num.s!g!c; n = num.n } ;
|
||||||
|
|
||||||
|
OrdSuperl a = {s = a.s ! Superl} ;
|
||||||
|
|
||||||
|
DefArt = {
|
||||||
|
s = \\_,n,g => case <n,g> of {<Sg,Neutr> => "het" ; _ => "de"} ;
|
||||||
|
sp = \\n,g => "die" ;
|
||||||
|
a = Weak
|
||||||
|
} ;
|
||||||
|
|
||||||
|
IndefArt = {
|
||||||
|
s = table {
|
||||||
|
True => \\_,_ => [] ;
|
||||||
|
False => table {
|
||||||
|
Sg => \\g => "een" ;
|
||||||
|
Pl => \\_ => []
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
sp = table {
|
||||||
|
Sg => \\g => "een" ;
|
||||||
|
Pl => \\_ => "een" ----
|
||||||
|
} ;
|
||||||
|
a = Strong
|
||||||
|
} ;
|
||||||
|
|
||||||
|
MassNP cn = {
|
||||||
|
s = \\c => cn.s ! Strong ! NF Sg Nom ;
|
||||||
|
a = agrP3 Sg ;
|
||||||
|
isPron = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
UseN, UseN2 = \n -> {
|
||||||
|
s = \\_ => n.s ;
|
||||||
|
g = n.g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplN2 f x = {
|
||||||
|
s = \\_,nc => f.s ! nc ++ appPrep f.c2 x.s ;
|
||||||
|
g = f.g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplN3 f x = {
|
||||||
|
s = \\nc => f.s ! nc ++ appPrep f.c2 x.s ;
|
||||||
|
g = f.g ;
|
||||||
|
c2 = f.c3
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Use2N3 f = {
|
||||||
|
s = f.s ;
|
||||||
|
g = f.g ;
|
||||||
|
c2 = f.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Use3N3 f = {
|
||||||
|
s = f.s ;
|
||||||
|
g = f.g ;
|
||||||
|
c2 = f.c3
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdjCN ap cn =
|
||||||
|
let
|
||||||
|
g = cn.g
|
||||||
|
in {
|
||||||
|
s = \\a,n =>
|
||||||
|
preOrPost ap.isPre
|
||||||
|
(ap.s ! agrAdj g a n)
|
||||||
|
(cn.s ! a ! n) ;
|
||||||
|
g = g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
RelCN cn rs = {
|
||||||
|
s = \\a,nc => cn.s ! a ! nc ++ rs.s ! cn.g ! (case nc of {NF n c => n}) ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
RelNP np rs = {
|
||||||
|
s = \\c => np.s ! c ++ "," ++ rs.s ! np.a.g ! np.a.n ;
|
||||||
|
a = np.a ;
|
||||||
|
isPron = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SentCN cn s = {
|
||||||
|
s = \\a,nc => cn.s ! a ! nc ++ s.s ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvCN cn s = {
|
||||||
|
s = \\a,nc => cn.s ! a ! nc ++ s.s ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ApposCN cn np = let g = cn.g in {
|
||||||
|
s = \\a,nc => cn.s ! a ! nc ++ np.s ! NPNom ;
|
||||||
|
g = g ;
|
||||||
|
isMod = cn.isMod
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
111
lib/src/afrikaans/NumeralAfr.gf
Normal file
111
lib/src/afrikaans/NumeralAfr.gf
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
concrete NumeralAfr of Numeral = CatAfr ** open ResAfr, Prelude in {
|
||||||
|
|
||||||
|
flags optimize = all_subs ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Digit = {s : DForm => CardOrd => Str ; en : Str} ;
|
||||||
|
Sub10 = {s : DForm => CardOrd => Str ; n : Number ; en : Str ; attr : Str} ;
|
||||||
|
Sub100, Sub1000, Sub1000000 =
|
||||||
|
{s : CardOrd => Str ; n : Number ; attr : Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
num x = x ;
|
||||||
|
|
||||||
|
n2 = mkDigit "twee" "twaalf" "twintig" "tweede" ;
|
||||||
|
n3 = mkDigit "drie" "dertien" "dertig" "derde" ;
|
||||||
|
n4 = mkDigit "vier" "veertien" "veertig" "vierde" ;
|
||||||
|
n5 = mkDigit "vijf" "vijftien" "vijftig" "vijfde" ;
|
||||||
|
n6 = mkDigit "zes" "zestien" "zestig" "zesde" ;
|
||||||
|
n7 = mkDigit "zeven" "zeventien" "zeventig" "zevende" ;
|
||||||
|
n8 = mkDigit "acht" "achttien" "tachtig" "achtste" ;
|
||||||
|
n9 = mkDigit "negen" "negentien" "negentig" "negende" ;
|
||||||
|
|
||||||
|
pot01 = {
|
||||||
|
s = \\f => table {
|
||||||
|
NCard g _ => "een" ; ---- "één" ;
|
||||||
|
NOrd af => (regAdjective "eerst").s ! Posit ! af
|
||||||
|
} ;
|
||||||
|
n = Sg ;
|
||||||
|
attr = [] ;
|
||||||
|
en = "en"
|
||||||
|
} ;
|
||||||
|
pot0 d = {s = \\f,g => d.s ! f ! g ; n = Pl ; en = d.en ; attr = d.s ! DUnit ! invNum ++ BIND} ;
|
||||||
|
pot110 = {s = cardOrd "tien" "tiende" ; n = Pl ; attr = "tien" ++ BIND} ;
|
||||||
|
pot111 = {s = cardOrd "elf" "elfde" ; n = Pl ; attr = "elf" ++ BIND} ;
|
||||||
|
pot1to19 d = addAttr {s = d.s ! DTeen ; n = Pl} ;
|
||||||
|
pot0as1 n = {s = n.s ! DUnit; n = n.n ; attr = n.attr} ;
|
||||||
|
pot1 d = addAttr {s = d.s ! DTen ; n = Pl} ;
|
||||||
|
pot1plus d e = addAttr {s = \\g =>
|
||||||
|
e.s ! DUnit ! invNum ++ BIND ++ e.en ++ BIND ++ d.s ! DTen ! g ; n = Pl} ;
|
||||||
|
pot1as2 n = n ;
|
||||||
|
pot2 d =
|
||||||
|
addAttr {s = \\g => d.attr ++ cardOrd "honderd" "honderdste" ! g ; n = Pl} ;
|
||||||
|
pot2plus d e =
|
||||||
|
addAttr {s = \\g => d.attr ++ "honderd" ++ BIND ++ e.s ! g ; n = Pl} ;
|
||||||
|
pot2as3 n = n ;
|
||||||
|
pot3 n =
|
||||||
|
addAttr {s = \\g => n.attr ++ cardOrd "duizend" "duizendste" ! g ; n = Pl} ;
|
||||||
|
pot3plus n m =
|
||||||
|
addAttr {s = \\g => n.attr ++ "duizend" ++ m.s ! g ; n = Pl} ;
|
||||||
|
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Dig = TDigit ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
IDig d = d ;
|
||||||
|
|
||||||
|
IIDig d i = {
|
||||||
|
s = \\o => d.s ! invNum ++ i.s ! o ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
D_0 = mkDig "0" ;
|
||||||
|
D_1 = mk3Dig "1" "1e" Sg ;
|
||||||
|
D_2 = mk2Dig "2" "2e" ;
|
||||||
|
D_3 = mkDig "3" ;
|
||||||
|
D_4 = mkDig "4" ;
|
||||||
|
D_5 = mkDig "5" ;
|
||||||
|
D_6 = mkDig "6" ;
|
||||||
|
D_7 = mkDig "7" ;
|
||||||
|
D_8 = mkDig "8" ;
|
||||||
|
D_9 = mkDig "9" ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
|
||||||
|
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "e") ;
|
||||||
|
|
||||||
|
mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
|
||||||
|
s = table {NCard _ _ => c ; NOrd _ => o} ;
|
||||||
|
n = n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
TDigit = {
|
||||||
|
n : Number ;
|
||||||
|
s : CardOrd => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
LinDigit = {s : DForm => CardOrd => Str ; en : Str} ;
|
||||||
|
|
||||||
|
cardOrd : Str -> Str -> CardOrd => Str = \drei,dritte ->
|
||||||
|
let dritt = init dritte in
|
||||||
|
table {
|
||||||
|
NCard _ _ => drei ;
|
||||||
|
NOrd a => (regAdjective dritt).s ! Posit ! a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkDigit : (x1,_,_,x4 : Str) -> LinDigit =
|
||||||
|
\drei,dreizehn,dreissig,dritte ->
|
||||||
|
{s = table {
|
||||||
|
DUnit => cardOrd drei dritte ;
|
||||||
|
DTeen => cardOrd dreizehn (dreizehn + "de") ;
|
||||||
|
DTen => cardOrd dreissig (dreissig + "ste")
|
||||||
|
} ;
|
||||||
|
en = case drei of {_ + "e" => "ën" ; _ => "en"}
|
||||||
|
} ;
|
||||||
|
invNum : CardOrd = NCard Utr Nom ;
|
||||||
|
|
||||||
|
addAttr : {s : CardOrd => Str ; n : Number} ->
|
||||||
|
{s : CardOrd => Str ; n : Number ; attr : Str} = \n -> n ** {attr = n.s ! invNum ++ BIND} ;
|
||||||
|
|
||||||
|
}
|
||||||
494
lib/src/afrikaans/ParadigmsAfr.gf
Normal file
494
lib/src/afrikaans/ParadigmsAfr.gf
Normal file
@@ -0,0 +1,494 @@
|
|||||||
|
--# -path=.:../common:../abstract:../../prelude
|
||||||
|
|
||||||
|
--1 Afrch Lexical Paradigms
|
||||||
|
--
|
||||||
|
-- Aarne Ranta 2009
|
||||||
|
--
|
||||||
|
-- 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 structure of functions for each word class $C$ is the following:
|
||||||
|
-- first we give a handful of patterns that aim to cover all
|
||||||
|
-- cases, from the most regular (with just one argument) to the worst.
|
||||||
|
-- The name of this function is $mkC$.
|
||||||
|
--
|
||||||
|
-- There is also a module [``IrregAfr`` IrregAfr.gf]
|
||||||
|
-- which covers irregular verbs.
|
||||||
|
|
||||||
|
|
||||||
|
resource ParadigmsAfr = open
|
||||||
|
(Predef=Predef),
|
||||||
|
Prelude,
|
||||||
|
ResAfr,
|
||||||
|
CatAfr
|
||||||
|
in
|
||||||
|
{
|
||||||
|
--2 Parameters
|
||||||
|
|
||||||
|
-- To abstract over gender names, we define the following identifiers.
|
||||||
|
|
||||||
|
oper
|
||||||
|
masculine : Gender ; --%
|
||||||
|
feminine : Gender ; --%
|
||||||
|
neuter : Gender ; --%
|
||||||
|
utrum : Gender ; --%
|
||||||
|
|
||||||
|
de : Gender ; -- non-neutrum
|
||||||
|
het : Gender ; -- neutrum
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--2 Nouns
|
||||||
|
|
||||||
|
mkN : overload {
|
||||||
|
mkN : (muis : Str) -> N ; -- de muis-muisen, with some predictable exceptions
|
||||||
|
mkN : (bit : Str) -> Gender -> N ; -- if gender is not predictable
|
||||||
|
mkN : (gat,gaten : Str) -> Gender -> N ; -- worst-case for nouns
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Relational nouns need a preposition. The most common is "van".
|
||||||
|
|
||||||
|
mkN2 : overload {
|
||||||
|
mkN2 : N -> N2 ; -- relational noun with preposition van
|
||||||
|
mkN2 : N -> Prep -> N2 -- other preposition than van
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
---- Use the function $mkPrep$ or see the section on prepositions below to
|
||||||
|
---- form other prepositions.
|
||||||
|
---- Some prepositions are moreover constructed in [StructuralAfr StructuralAfr.html].
|
||||||
|
----
|
||||||
|
---- Three-place relational nouns ("die Verbindung von x nach y") need two prepositions.
|
||||||
|
--
|
||||||
|
mkN3 : N -> Prep -> Prep -> N3 ; -- e.g. afstand + van + naar
|
||||||
|
|
||||||
|
--3 Proper names and noun phrases
|
||||||
|
|
||||||
|
mkPN : overload {
|
||||||
|
mkPN : Str -> PN ; -- proper name
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
--2 Adjectives
|
||||||
|
|
||||||
|
mkA : overload {
|
||||||
|
mkA : (vers : Str) -> A ; -- regular adjective
|
||||||
|
mkA : (goed,goede,goeds,beter,best : Str) -> A ; -- irregular adjective
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Invariable adjective are a special case.
|
||||||
|
|
||||||
|
invarA : Str -> A ; -- adjective with just one form
|
||||||
|
|
||||||
|
|
||||||
|
---- Two-place adjectives are formed by adding a preposition to an adjective.
|
||||||
|
|
||||||
|
mkA2 : A -> Prep -> A2 ; -- e.g. getrouwd + met
|
||||||
|
|
||||||
|
--2 Adverbs
|
||||||
|
|
||||||
|
-- Adverbs are formed from strings.
|
||||||
|
|
||||||
|
mkAdv : Str -> Adv ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--2 Prepositions
|
||||||
|
|
||||||
|
-- A preposition is formed from a string.
|
||||||
|
|
||||||
|
mkPrep : Str -> Prep ;
|
||||||
|
|
||||||
|
|
||||||
|
---- A couple of common prepositions (always with the dative).
|
||||||
|
--
|
||||||
|
van_Prep : Prep ;
|
||||||
|
te_Prep : Prep ;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
--2 Verbs
|
||||||
|
|
||||||
|
mkV : overload {
|
||||||
|
mkV : (aaien : Str) -> V ; -- regular verb
|
||||||
|
mkV : (breken,brak,gebroken : Str) -> V ; -- theme of irregular verb
|
||||||
|
mkV : (breken,brak,braken,gebroken : Str) -> V ; -- also past plural irregular
|
||||||
|
mkV : (aai,aait,aaien,aaide,aaide,aaiden,geaaid : Str) -> V ; -- worst-case verb
|
||||||
|
|
||||||
|
-- To add a movable suffix e.g. "auf(fassen)".
|
||||||
|
|
||||||
|
mkV : Str -> V -> V -- add movable suffix, e.g. af + stappen
|
||||||
|
} ;
|
||||||
|
|
||||||
|
zijnV : V -> V ; -- force zijn as auxiliary (default hebben)
|
||||||
|
|
||||||
|
reflV : V -> V ; -- reflexive verb e.g. zich afvragen
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--3 Three-place verbs
|
||||||
|
|
||||||
|
-- Three-place (ditransitive) verbs need two prepositions, of which
|
||||||
|
-- the first one or both can be absent.
|
||||||
|
|
||||||
|
mkV3 : overload {
|
||||||
|
mkV3 : V -> V3 ; -- geven,(accusative),(dative)
|
||||||
|
mkV3 : V -> Prep -> V3 ; -- sturen,(accusative),naar
|
||||||
|
mkV3 : V -> Prep -> Prep -> V3 ; -- praten, met, over
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
----3 Other complement patterns
|
||||||
|
----
|
||||||
|
---- Verbs and adjectives can take complements such as sentences,
|
||||||
|
---- questions, verb phrases, and adjectives.
|
||||||
|
|
||||||
|
mkV0 : V -> V0 ; --%
|
||||||
|
mkVS : V -> VS ;
|
||||||
|
mkV2S : V -> Prep -> V2S ;
|
||||||
|
mkVV : V -> VV ;
|
||||||
|
mkV2V : V -> Prep -> V2V ;
|
||||||
|
mkVA : V -> VA ;
|
||||||
|
mkV2A : V -> Prep -> V2A ;
|
||||||
|
mkVQ : V -> VQ ;
|
||||||
|
mkV2Q : V -> Prep -> V2Q ;
|
||||||
|
--
|
||||||
|
-- mkAS : A -> AS ;
|
||||||
|
-- mkA2S : A -> Prep -> A2S ;
|
||||||
|
-- mkAV : A -> AV ;
|
||||||
|
-- mkA2V : A -> Prep -> A2V ;
|
||||||
|
--
|
||||||
|
---- Notice: categories $AS, A2S, AV, A2V$ are just $A$,
|
||||||
|
---- and the second argument is given as an adverb. Likewise
|
||||||
|
---- $V0$ is just $V$.
|
||||||
|
--
|
||||||
|
-- V0 : Type ;
|
||||||
|
-- AS, A2S, AV, A2V : Type ;
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
--.
|
||||||
|
|
||||||
|
mkOrd : A -> Ord = \a -> lin Ord {s = a.s ! Posit} ;
|
||||||
|
|
||||||
|
mkN = overload {
|
||||||
|
mkN : (muis : Str) -> N
|
||||||
|
= \a -> lin N (regNoun a) ;
|
||||||
|
mkN : (bit : Str) -> Gender -> N
|
||||||
|
= \a,b -> lin N (regNounG a b) ;
|
||||||
|
mkN : (gat,gaten : Str) -> Gender -> N
|
||||||
|
= \a,b,c -> lin N (mkNoun a b c) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkN2 = overload {
|
||||||
|
mkN2 : N -> N2
|
||||||
|
= \n -> lin N2 (n ** {c2 = "van"}) ;
|
||||||
|
mkN2 : N -> Prep -> N2
|
||||||
|
= \n,p -> lin N2 (n ** {c2 = p.s}) ;
|
||||||
|
} ;
|
||||||
|
mkN3 n p q = lin N3 (n ** {c2 = p.s ; c3 = q.s}) ;
|
||||||
|
|
||||||
|
mkPN = overload {
|
||||||
|
mkPN : Str -> PN = \s -> lin PN {s = \\_ => s} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
masculine = Utr ;
|
||||||
|
feminine = Utr ;
|
||||||
|
het,neuter = Neutr ;
|
||||||
|
de,utrum = Utr ;
|
||||||
|
|
||||||
|
mkA = overload {
|
||||||
|
mkA : (vers : Str) -> A = \a -> lin A (regAdjective a) ;
|
||||||
|
mkA : (goed,goede,goeds,beter,best : Str) -> A = \a,b,c,d,e -> lin A (mkAdjective a b c d e) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkPrep s = lin Prep (ss s) ;
|
||||||
|
van_Prep = mkPrep "van" ;
|
||||||
|
te_Prep = mkPrep "te" ;
|
||||||
|
|
||||||
|
mkV = overload {
|
||||||
|
mkV : (aaien : Str) -> V =
|
||||||
|
\s -> lin V (v2vv (regVerb s)) ;
|
||||||
|
mkV : (breek,gebreek : Str) -> V =
|
||||||
|
\a,b -> lin V (v2vv (irregVerb a b)) ;
|
||||||
|
mkV : (wil,wou,gewil : Str) -> V =
|
||||||
|
\a,b,c -> lin V (v2vv (mkVerb a a b c)) ;
|
||||||
|
mkV : Str -> V -> V = \v,s ->lin V (prefixV v s) ;
|
||||||
|
} ;
|
||||||
|
zijnV v = v ; -- lin V (v2vvAux v VZijn) ;
|
||||||
|
reflV v = lin V {s = v.s ; aux = v.aux ; prefix = v.prefix ; vtype = VRefl} ;
|
||||||
|
|
||||||
|
zijn_V : V = lin V ResAfr.zijn_V ;
|
||||||
|
hebben_V : V = lin V ResAfr.hebben_V ;
|
||||||
|
|
||||||
|
mkV2 = overload {
|
||||||
|
mkV2 : Str -> V2 = \s -> lin V2 (v2vv (regVerb s) ** {c2 = []}) ;
|
||||||
|
mkV2 : V -> V2 = \s -> lin V2 (s ** {c2 = []}) ;
|
||||||
|
mkV2 : V -> Prep -> V2 = \s,p -> lin V2 (s ** {c2 = p.s}) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
--3 Two-place verbs
|
||||||
|
|
||||||
|
mkV2 : overload {
|
||||||
|
mkV2 : Str -> V2 ;
|
||||||
|
mkV2 : V -> V2 ;
|
||||||
|
mkV2 : V -> Prep -> V2 ;
|
||||||
|
} ;
|
||||||
|
mkV3 = overload {
|
||||||
|
mkV3 : V -> Prep -> Prep -> V3 = mkmaxV3 ;
|
||||||
|
mkV3 : V -> Prep -> V3 = \v,p -> mkmaxV3 v (mkPrep []) p ;
|
||||||
|
mkV3 : V -> V3 = \v -> mkmaxV3 v (mkPrep []) (mkPrep []) ;
|
||||||
|
} ;
|
||||||
|
mkmaxV3 : V -> Prep -> Prep -> V3 = \v,c,d -> lin V3 (v ** {c2 = c.s ; c3 = d.s}) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----2 Definitions of paradigms
|
||||||
|
----
|
||||||
|
---- The definitions should not bother the user of the API. So they are
|
||||||
|
---- hidden from the document.
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- Gender = MorphoAfr.Gender ;
|
||||||
|
-- Case = MorphoAfr.Case ;
|
||||||
|
-- Number = MorphoAfr.Number ;
|
||||||
|
-- masculine = Masc ;
|
||||||
|
-- feminine = Fem ;
|
||||||
|
-- neuter = Neutr ;
|
||||||
|
-- nominative = Nom ;
|
||||||
|
-- accusative = Acc ;
|
||||||
|
-- dative = Dat ;
|
||||||
|
-- genitive = Gen ;
|
||||||
|
-- singular = Sg ;
|
||||||
|
-- plural = Pl ;
|
||||||
|
--
|
||||||
|
-- mk6N a b c d e f g = MorphoAfr.mkN a b c d e f g ** {lock_N = <>} ;
|
||||||
|
--
|
||||||
|
-- regN : Str -> N = \hund -> case hund of {
|
||||||
|
-- _ + "e" => mk6N hund hund hund hund (hund + "n") (hund + "n") Fem ;
|
||||||
|
-- _ + ("ion" | "ung") => mk6N hund hund hund hund (hund + "en") (hund + "en") Fem ;
|
||||||
|
-- _ + ("er" | "en" | "el") => mk6N hund hund hund (genitS hund) hund (pluralN hund) Masc ;
|
||||||
|
-- _ => mk6N hund hund hund (genitS hund) (hund + "e") (pluralN hund) Masc
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
-- reg2N : (x1,x2 : Str) -> Gender -> N = \hund,hunde,g ->
|
||||||
|
-- let
|
||||||
|
-- hunds = genitS hund ;
|
||||||
|
-- hundE = dativE hund ;
|
||||||
|
-- hunden = pluralN hunde
|
||||||
|
-- in
|
||||||
|
-- case <hund,hunde,g> of { -- Duden p. 223
|
||||||
|
-- <_,_ + ("e" | "er"), Masc | Neutr> => -- I,IV
|
||||||
|
-- mk6N hund hund hundE hunds hunde hunden g ;
|
||||||
|
-- <_ + ("el"|"er"|"en"),_ + ("el"|"er"|"en"), Masc | Neutr> => -- II
|
||||||
|
-- mk6N hund hund hund hunds hunde hunden g ;
|
||||||
|
-- <_,_ + "s", Masc | Neutr> => -- V
|
||||||
|
-- mk6N hund hund hund (hund + "s") hunde hunde g ;
|
||||||
|
-- <_,_ + "en", Masc> => -- VI
|
||||||
|
-- mk6N hund hunde hunde hunde hunde hunde g ;
|
||||||
|
-- <_,_ + ("e" | "er"), Fem> => -- VII,VIII
|
||||||
|
-- mk6N hund hund hund hund hunde hunden g ;
|
||||||
|
-- <_,_ + ("n" | "s"), Fem> => -- IX,X
|
||||||
|
-- mk6N hund hund hund hund hunde hunde g ;
|
||||||
|
-- _ => {s = (regN hund).s ; g = g ; lock_N = <>}
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
-- mkN2 = overload {
|
||||||
|
-- mkN2 : Str -> N2 = \s -> vonN2 (regN s) ;
|
||||||
|
-- mkN2 : N -> N2 = vonN2 ;
|
||||||
|
-- mkN2 : N -> Prep -> N2 = mmkN2
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- mmkN2 : N -> Prep -> N2 = \n,p -> n ** {c2 = p ; lock_N2 = <>} ;
|
||||||
|
-- vonN2 : N -> N2 = \n -> n ** {c2 = {s = "von" ; c = dative} ; lock_N2 = <>} ;
|
||||||
|
--
|
||||||
|
-- mkN3 = \n,p,q -> n ** {c2 = p ; c3 = q ; lock_N3 = <>} ;
|
||||||
|
--
|
||||||
|
-- mk2PN = \karolus, karoli ->
|
||||||
|
-- {s = table {Gen => karoli ; _ => karolus} ; lock_PN = <>} ;
|
||||||
|
-- regPN = \horst ->
|
||||||
|
-- mk2PN horst (ifTok Tok (Predef.dp 1 horst) "s" horst (horst + "s")) ;
|
||||||
|
--
|
||||||
|
-- mkPN = overload {
|
||||||
|
-- mkPN : Str -> PN = regPN ;
|
||||||
|
-- mkPN : (nom,gen : Str) -> PN = mk2PN ;
|
||||||
|
-- mkPN : (nom,acc,dat,gen : Str) -> PN = \nom,acc,dat,gen ->
|
||||||
|
-- {s = table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ; lock_PN = <>}
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
-- mk2PN : (karolus, karoli : Str) -> PN ; -- karolus, karoli
|
||||||
|
-- regPN : (Johann : Str) -> PN ;
|
||||||
|
-- -- Johann, Johanns ; Johannes, Johannes
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- mk3A : (gut,besser,beste : Str) -> A = \a,b,c ->
|
||||||
|
-- let aa : Str = case a of {
|
||||||
|
-- teu + "er" => teu + "r" ;
|
||||||
|
-- mud + "e" => mud ;
|
||||||
|
-- _ => a
|
||||||
|
-- } in
|
||||||
|
-- MorphoAfr.mkA a aa b (init c) ** {lock_A = <>} ;
|
||||||
|
-- mk4A : (gut,gute,besser,beste : Str) -> A = \a,aa,b,c ->
|
||||||
|
-- MorphoAfr.mkA a aa b (init c) ** {lock_A = <>} ;
|
||||||
|
--
|
||||||
|
-- regA : Str -> A = \a -> case a of {
|
||||||
|
-- teu + "er" => mk3A a (teu + "rer") (teu + "reste") ;
|
||||||
|
-- _ + "e" => mk3A a (a + "r") (a + "ste") ;
|
||||||
|
-- _ => mk3A a (a + "er") (a + "este")
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
invarA = \s -> lin A {s = \\_,_ => s} ; ---- comparison
|
||||||
|
|
||||||
|
mkA2 = \a,p -> lin A2 (a ** {c2 = p.s}) ;
|
||||||
|
|
||||||
|
mkAdv s = {s = s ; lock_Adv = <>} ;
|
||||||
|
--
|
||||||
|
-- mkPrep s c = {s = s ; c = c ; lock_Prep = <>} ;
|
||||||
|
noPrep = mkPrep [] ;
|
||||||
|
-- datPrep = mkPrep [] dative ;
|
||||||
|
-- genPrep = mkPrep [] genitive ;
|
||||||
|
-- von_Prep = mkPrep "von" dative ;
|
||||||
|
-- zu_Prep = mkPrep "zu" dative ;
|
||||||
|
--
|
||||||
|
-- mk6V geben gibt gib gab gaebe gegeben =
|
||||||
|
-- let
|
||||||
|
-- geb = stemVerb geben ;
|
||||||
|
-- gebe = geb + "e" ;
|
||||||
|
-- gibst = verbST (init gibt) ;
|
||||||
|
-- gebt = verbT geb ;
|
||||||
|
-- gabst = verbST gab ;
|
||||||
|
-- gaben = pluralN gab ;
|
||||||
|
-- gabt = verbT gab
|
||||||
|
-- in
|
||||||
|
-- MorphoAfr.mkV
|
||||||
|
-- geben gebe gibst gibt gebt gib gab gabst gaben gabt gaebe gegeben
|
||||||
|
-- [] VHaben ** {lock_V = <>} ;
|
||||||
|
--
|
||||||
|
-- regV fragen =
|
||||||
|
-- let
|
||||||
|
-- frag = stemVerb fragen ;
|
||||||
|
-- fragt = verbT frag ;
|
||||||
|
-- fragte = fragt + "e" ;
|
||||||
|
-- gefragt = "ge" + fragt ;
|
||||||
|
-- in
|
||||||
|
-- mk6V fragen fragt (frag + "e") fragte fragte gefragt ;
|
||||||
|
--
|
||||||
|
-- irregV singen singt sang saenge gesungen =
|
||||||
|
-- let
|
||||||
|
-- sing = stemVerb singen ;
|
||||||
|
-- in
|
||||||
|
-- mk6V singen singt sing sang saenge gesungen ;
|
||||||
|
--
|
||||||
|
-- prefixV p v = MorphoAfr.prefixV p v ** {lock_V = v.lock_V} ;
|
||||||
|
--
|
||||||
|
-- habenV v =
|
||||||
|
-- {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = v.vtype} ;
|
||||||
|
-- seinV v =
|
||||||
|
-- {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VSein ; vtype = v.vtype} ;
|
||||||
|
-- reflV v c =
|
||||||
|
-- {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = VRefl c} ;
|
||||||
|
--
|
||||||
|
-- no_geV v = let vs = v.s in {
|
||||||
|
-- s = table {
|
||||||
|
-- p@(VPastPart _) => Predef.drop 2 (vs ! p) ;
|
||||||
|
-- p => vs ! p
|
||||||
|
-- } ;
|
||||||
|
-- prefix = v.prefix ; lock_V = v.lock_V ; aux = v.aux ; vtype = v.vtype
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
-- haben_V = MorphoAfr.haben_V ** {lock_V = <>} ;
|
||||||
|
-- sein_V = MorphoAfr.sein_V ** {lock_V = <>} ;
|
||||||
|
-- werden_V = MorphoAfr.werden_V ** {lock_V = <>} ;
|
||||||
|
--
|
||||||
|
prepV2 : V -> Prep -> V2 ;
|
||||||
|
prepV2 v c = lin V2 (v ** {c2 = c.s}) ;
|
||||||
|
-- dirV2 v = prepV2 v (mkPrep [] accusative) ;
|
||||||
|
-- datV2 v = prepV2 v (mkPrep [] dative) ;
|
||||||
|
--
|
||||||
|
--
|
||||||
|
mkVS v = lin VS v ;
|
||||||
|
mkVQ v = lin VQ v ;
|
||||||
|
mkVV v = lin VV (v ** {isAux = False}) ;
|
||||||
|
|
||||||
|
V0 : Type = V ;
|
||||||
|
-- AS, A2S, AV : Type = A ;
|
||||||
|
-- A2V : Type = A2 ;
|
||||||
|
|
||||||
|
mkV0 v = v ;
|
||||||
|
mkV2S v p = lin V2S (prepV2 v p) ;
|
||||||
|
mkV2V v p = lin V2V (prepV2 v p ** {isAux = False}) ;
|
||||||
|
mkVA v = lin VA v ;
|
||||||
|
mkV2A v p = lin V2A (prepV2 v p) ;
|
||||||
|
mkV2Q v p = lin V2Q (prepV2 v p) ;
|
||||||
|
--
|
||||||
|
-- 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 ;
|
||||||
|
-- reg2N : (x1,x2 : Str) -> Gender -> N ;
|
||||||
|
-- mk6N : (x1,_,_,_,_,x6 : Str) -> Gender -> N ;
|
||||||
|
--
|
||||||
|
-- mkN = overload {
|
||||||
|
-- mkN : Str -> N = regN ;
|
||||||
|
-- mkN : (x1,x2 : Str) -> Gender -> N = reg2N ;
|
||||||
|
-- mkN : (x1,_,_,_,_,x6 : Str) -> Gender -> N = mk6N
|
||||||
|
-- };
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- regA : Str -> A ;
|
||||||
|
-- mk3A : (gut,besser,beste : Str) -> A ;
|
||||||
|
--
|
||||||
|
-- mkA = overload {
|
||||||
|
-- mkA : Str -> A = regA ;
|
||||||
|
-- mkA : (gut,besser,beste : Str) -> A = mk3A ;
|
||||||
|
-- mkA : (gut,gute,besser,beste : Str) -> A = mk4A
|
||||||
|
-- };
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- regV : Str -> V ;
|
||||||
|
-- irregV : (x1,_,_,_,x5 : Str) -> V ;
|
||||||
|
-- mk6V : (x1,_,_,_,_,x6 : Str) -> V ;
|
||||||
|
--
|
||||||
|
-- prefixV : Str -> V -> V ;
|
||||||
|
--
|
||||||
|
-- mkV = overload {
|
||||||
|
-- mkV : Str -> V = regV ;
|
||||||
|
-- mkV : (x1,_,_,_,x5 : Str) -> V = irregV ;
|
||||||
|
-- mkV : (x1,_,_,_,_,x6 : Str) -> V = mk6V ;
|
||||||
|
-- mkV : Str -> V -> V = prefixV
|
||||||
|
-- };
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
-- dirV2 : V -> V2 ;
|
||||||
|
--
|
||||||
|
-- datV2 : V -> V2 ;
|
||||||
|
--
|
||||||
|
-- mkV2 = overload {
|
||||||
|
-- mkV2 : Str -> V2 = \s -> dirV2 (regV s) ;
|
||||||
|
-- mkV2 : V -> V2 = dirV2 ;
|
||||||
|
-- mkV2 : V -> Prep -> V2 = prepV2;
|
||||||
|
-- mkV2 : V -> Case -> V2 = \v,c -> prepV2 v (mkPrep [] c)
|
||||||
|
-- } ;
|
||||||
|
--
|
||||||
|
--}
|
||||||
|
|
||||||
|
}
|
||||||
31
lib/src/afrikaans/PhraseAfr.gf
Normal file
31
lib/src/afrikaans/PhraseAfr.gf
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
concrete PhraseAfr of Phrase = CatAfr ** open Prelude, ResAfr in
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
|
||||||
|
UttS s = {s = s.s ! Main} ;
|
||||||
|
UttQS qs = {s = qs.s ! QDir} ;
|
||||||
|
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False} ;
|
||||||
|
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False} ;
|
||||||
|
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True} ;
|
||||||
|
|
||||||
|
UttIP ip = {s = ip.s ! NPNom} ; --- Acc also
|
||||||
|
UttIAdv iadv = iadv ;
|
||||||
|
UttNP np = {s = np.s ! NPNom} ;
|
||||||
|
UttVP vp = {s = useInfVP True vp} ; -- without zu
|
||||||
|
UttAdv adv = adv ;
|
||||||
|
UttCN n = {s = n.s ! Strong ! NF Sg Nom} ;
|
||||||
|
UttCard n = {s = n.s ! Utr ! Nom} ;
|
||||||
|
UttAP ap = {s = ap.s ! APred} ;
|
||||||
|
|
||||||
|
NoPConj = {s = []} ;
|
||||||
|
PConjConj conj = ss (conj.s2) ;
|
||||||
|
|
||||||
|
NoVoc = {s = []} ;
|
||||||
|
VocNP np = {s = "," ++ np.s ! NPNom} ;
|
||||||
|
|
||||||
|
}
|
||||||
103
lib/src/afrikaans/QuestionAfr.gf
Normal file
103
lib/src/afrikaans/QuestionAfr.gf
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
concrete QuestionAfr of Question = CatAfr ** open ResAfr in {
|
||||||
|
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
QuestCl cl = {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
let cls = cl.s ! t ! a ! p
|
||||||
|
in table {
|
||||||
|
QDir => cls ! Inv ;
|
||||||
|
QIndir => "of" ++ cls ! Sub
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
QuestVP qp vp = {
|
||||||
|
s = \\t,a,b,q =>
|
||||||
|
let
|
||||||
|
cl = (mkClause (qp.s ! NPNom) (agrP3 qp.n) vp).s ! t ! a ! b
|
||||||
|
in
|
||||||
|
case q of {
|
||||||
|
QIndir => cl ! Sub ;
|
||||||
|
_ => cl ! Main
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
QuestSlash ip slash = {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
let
|
||||||
|
cls = slash.s ! t ! a ! p ;
|
||||||
|
who = appPrep slash.c2 ip.s
|
||||||
|
in table {
|
||||||
|
QDir => who ++ cls ! Inv ;
|
||||||
|
QIndir => who ++ cls ! Sub
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
QuestIAdv iadv cl = {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
let
|
||||||
|
cls = cl.s ! t ! a ! p ;
|
||||||
|
why = iadv.s
|
||||||
|
in table {
|
||||||
|
QDir => why ++ cls ! Inv ;
|
||||||
|
QIndir => why ++ cls ! Sub
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
QuestIComp icomp np = {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
let
|
||||||
|
vp = predV zijn_V ;
|
||||||
|
cls = (mkClause (np.s ! NPNom) np.a vp).s ! t ! a ! p ;
|
||||||
|
why = icomp.s ! np.a
|
||||||
|
in table {
|
||||||
|
QDir => why ++ cls ! Inv ;
|
||||||
|
QIndir => why ++ cls ! Sub
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PrepIP p ip = {
|
||||||
|
s = appPrep p.s ip.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvIP ip adv = {
|
||||||
|
s = \\c => ip.s ! c ++ adv.s ;
|
||||||
|
n = ip.n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
IdetCN idet cn =
|
||||||
|
let
|
||||||
|
g = cn.g ;
|
||||||
|
n = idet.n
|
||||||
|
in {
|
||||||
|
s = \\c => idet.s ! g ++ cn.s ! Weak ! NF n Nom ;
|
||||||
|
n = n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
IdetIP idet =
|
||||||
|
let
|
||||||
|
g = Neutr ; ----
|
||||||
|
n = idet.n
|
||||||
|
in {
|
||||||
|
s = \\_ => idet.s ! g ;
|
||||||
|
n = n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
IdetQuant idet num =
|
||||||
|
let
|
||||||
|
n = num.n
|
||||||
|
in {
|
||||||
|
s = \\g => idet.s ! n ! g ++ num.s ;
|
||||||
|
n = n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvIAdv i a = {s = i.s ++ a.s} ;
|
||||||
|
|
||||||
|
CompIAdv a = {s = \\_ => a.s} ;
|
||||||
|
|
||||||
|
CompIP ip = {s = \\_ => ip.s ! NPNom} ;
|
||||||
|
|
||||||
|
}
|
||||||
44
lib/src/afrikaans/RelativeAfr.gf
Normal file
44
lib/src/afrikaans/RelativeAfr.gf
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
concrete RelativeAfr of Relative = CatAfr ** open ResAfr in {
|
||||||
|
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
RelCl cl = {
|
||||||
|
s = \\t,a,b,_,_ => "zodat" ++ cl.s ! t ! a ! b ! Sub
|
||||||
|
} ;
|
||||||
|
|
||||||
|
RelVP rp vp = {
|
||||||
|
s = \\t,ant,b,g,n =>
|
||||||
|
let
|
||||||
|
agr = case rp.a of {
|
||||||
|
RNoAg => agrgP3 g n ;
|
||||||
|
RAg rn p => {g = Utr ; n = rn ; p = p} ---- g
|
||||||
|
} ;
|
||||||
|
cl = mkClause (rp.s ! g ! n) agr vp
|
||||||
|
in
|
||||||
|
cl.s ! t ! ant ! b ! Sub
|
||||||
|
} ;
|
||||||
|
|
||||||
|
RelSlash rp slash = {
|
||||||
|
s = \\t,a,p,g,n =>
|
||||||
|
appPrep slash.c2 (\\_ => rp.s ! g ! n) ++ slash.s ! t ! a ! p ! Sub ;
|
||||||
|
c = slash.c2.c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
FunRP p np rp = {
|
||||||
|
s = \\g,n => np.s ! NPNom ++ appPrep p.s (\\_ => rp.s ! g ! n) ;
|
||||||
|
a = RAg np.a.n np.a.p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
IdRP = {s = relPron ; a = RNoAg} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
relPron : Gender => Number => Str = \\g,n =>
|
||||||
|
case <g,n> of {
|
||||||
|
<Neutr,Sg> => "dat" ;
|
||||||
|
_ => "die"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
495
lib/src/afrikaans/ResAfr.gf
Normal file
495
lib/src/afrikaans/ResAfr.gf
Normal file
@@ -0,0 +1,495 @@
|
|||||||
|
--# -path=.:../abstract:../common
|
||||||
|
|
||||||
|
--1 Afrch auxiliary operations.
|
||||||
|
--
|
||||||
|
-- (c) 2009 Femke Johansson and Aarne Ranta
|
||||||
|
|
||||||
|
resource ResAfr = ParamX ** open Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all ;
|
||||||
|
|
||||||
|
--2 For $Noun$
|
||||||
|
|
||||||
|
param
|
||||||
|
Case = Nom | Gen ;
|
||||||
|
Gender = Utr | Neutr ; --!
|
||||||
|
-- Gender = Utr | Neutr ; --!
|
||||||
|
|
||||||
|
NForm = NF Number Case ;
|
||||||
|
|
||||||
|
NPCase = NPNom | NPAcc ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
Noun = {s : NForm => Str ; g : Gender} ;
|
||||||
|
|
||||||
|
mkNoun : (_,_ : Str) -> Gender -> Noun = \sg,pl,g -> {
|
||||||
|
s = table {
|
||||||
|
NF Sg Nom => sg ;
|
||||||
|
NF Sg Gen => add_s sg ;
|
||||||
|
NF Pl Nom => pl ;
|
||||||
|
NF Pl Gen => add_s pl
|
||||||
|
} ;
|
||||||
|
g = g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
regNoun : Str -> Noun = \s -> case s of {
|
||||||
|
_ + ("a" | "o" | "y" | "u" | "oe" | "é") => mkNoun s (s + "'s") Utr ;
|
||||||
|
_ + ("oir" | "ion" | "je") => mkNoun s (s + "s") Neutr ;
|
||||||
|
? + ? + ? + _ +
|
||||||
|
("el" | "em" | "en" | "er" | "erd" | "aar" | "aard" | "ie") => -- unstressed
|
||||||
|
mkNoun s (s + "s") Utr ;
|
||||||
|
_ + ("i"|"u") => mkNoun s (endCons s + "en") Utr ;
|
||||||
|
b + v@("aa"|"ee"|"oo"|"uu") + c@? => mkNoun s (b + shortVoc v c + "en") Utr ;
|
||||||
|
b + ("ei"|"eu"|"oe"|"ou"|"ie"|"ij"|"ui") + ? => mkNoun s (endCons s + "en") Utr ;
|
||||||
|
_ + "ie" => mkNoun s (s + "ën") Utr ;
|
||||||
|
b + v@("a"|"e"|"i"|"o"|"u" ) + c@? => mkNoun s (b + v + c + c + "en") Utr ;
|
||||||
|
_ => mkNoun s (endCons s + "en") Utr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
regNounG : Str -> Gender -> Noun = \s,g -> {
|
||||||
|
s = (regNoun s).s ;
|
||||||
|
g = g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
shortVoc : Str -> Str -> Str = \v,s -> init v + endCons s ;
|
||||||
|
|
||||||
|
endCons : Str -> Str = \s -> case s of {
|
||||||
|
_ + ("ts" |"rs" | "ls" | "ds" | "ns" | "ms") => s ;
|
||||||
|
b + "s" => b + "z" ;
|
||||||
|
b + "f" => b + "v" ;
|
||||||
|
_ => s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
dupCons : pattern Str = #("b"|"d"|"f"|"g"|"k"|"l"|"m"|"n"|"p"|"r"|"s"|"t") ;
|
||||||
|
|
||||||
|
add_s : Str -> Str = \s -> case s of {
|
||||||
|
_ + "s" => s ;
|
||||||
|
_ => s + "s"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
param
|
||||||
|
AForm = APred | AAttr | AGen ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
Adjective = {s : Degree => AForm => Str} ;
|
||||||
|
|
||||||
|
mkAdjective : (_,_,_,_,_ : Str) -> Adjective = \ap,aa,ag,ac,as -> {
|
||||||
|
s = table {
|
||||||
|
Posit => table {APred => ap ; AAttr => aa ; AGen => ag} ;
|
||||||
|
Compar => table {APred => ac ; AAttr => ac + "e" ; AGen => ac + "es"} ; ----
|
||||||
|
Superl => table {APred => as ; AAttr => as + "e" ; AGen => as + "es"} ----
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
regAdjective : Str -> Adjective = \s -> ----
|
||||||
|
let
|
||||||
|
se : Str = case s of {
|
||||||
|
_ + "er" => s + "e" ; ----
|
||||||
|
_ + ("i"|"u") => endCons s + "e" ;
|
||||||
|
b + v@("aa"|"ee"|"oo"|"uu") + c@? => b + shortVoc v c + "e" ;
|
||||||
|
b + ("ei"|"eu"|"oe"|"ou"|"ie"|"ij"|"ui") + ? => endCons s + "e" ;
|
||||||
|
b + v@("a"|"e"|"i"|"o"|"u" ) + c@? => b + v + c + c + "e" ;
|
||||||
|
_ => endCons s + "e"
|
||||||
|
} ;
|
||||||
|
ser : Str = case s of {
|
||||||
|
_ + "r" => s + "der" ;
|
||||||
|
_ => se + "r"
|
||||||
|
} ;
|
||||||
|
sst : Str = case s of {
|
||||||
|
_ + "s" => s + "t" ;
|
||||||
|
_ => s + "st"
|
||||||
|
} ;
|
||||||
|
in
|
||||||
|
mkAdjective s se (s + "s") ser sst ;
|
||||||
|
|
||||||
|
param
|
||||||
|
VForm = --!
|
||||||
|
VInf -- wees
|
||||||
|
| VPres -- is
|
||||||
|
| VPast -- was --# notpresent
|
||||||
|
| VPerf -- gewees
|
||||||
|
;
|
||||||
|
|
||||||
|
VPart = VPart_aan | VPart_af | VPart_be ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
Verb : Type = {s: VForm => Str};
|
||||||
|
|
||||||
|
mkVerb : (_,_,_,_ : Str) ->
|
||||||
|
Verb = \aai, aaien, aaide, geaaid -> {
|
||||||
|
s = table {
|
||||||
|
VInf => aaien; -- hij/zij/het/wij aaien
|
||||||
|
VPres => aai; -- ik aai
|
||||||
|
VPast => aaide; -- ik aaide --# notpresent
|
||||||
|
VPerf => geaaid -- ik heb geaaid
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
regVerb : Str -> Verb = \s -> irregVerb s ("ge" + s) ;
|
||||||
|
|
||||||
|
irregVerb : (breek, gebreek : Str) -> Verb = \breek,gebreek ->
|
||||||
|
mkVerb breek breek breek gebreek ;
|
||||||
|
|
||||||
|
|
||||||
|
-- To add a prefix (like "ein") to an already existing verb.
|
||||||
|
|
||||||
|
prefixV : Str -> VVerb -> VVerb = \ein,verb ->
|
||||||
|
let
|
||||||
|
vs = verb.s ;
|
||||||
|
einb : Bool -> Str -> Str = \b,geb ->
|
||||||
|
if_then_Str b (ein + geb) geb ;
|
||||||
|
in
|
||||||
|
{s = table {
|
||||||
|
f@(VInf | VPerf) => ein + vs ! f ; ---- TODO: eingegeven
|
||||||
|
f => vs ! f
|
||||||
|
} ;
|
||||||
|
prefix = ein ;
|
||||||
|
aux = verb.aux ;
|
||||||
|
vtype = verb.vtype
|
||||||
|
} ;
|
||||||
|
zijn_V : VVerb = {
|
||||||
|
s = table {
|
||||||
|
VInf => "wees" ;
|
||||||
|
VPres => "is" ;
|
||||||
|
VPast => "was" ; --# notpresent
|
||||||
|
VPerf => "gewees"
|
||||||
|
} ;
|
||||||
|
aux = VZijn ;
|
||||||
|
prefix = [] ;
|
||||||
|
vtype = VAct ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
hebben_V : VVerb = {
|
||||||
|
s = table {
|
||||||
|
VInf => "hê" ;
|
||||||
|
VPres => "het" ;
|
||||||
|
VPast => "hat" ; --# notpresent
|
||||||
|
VPerf => "gehad"
|
||||||
|
} ;
|
||||||
|
aux = VHebben ;
|
||||||
|
prefix = [] ;
|
||||||
|
vtype = VAct ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Pronoun : Type = {
|
||||||
|
unstressed,stressed : {nom, acc, poss : Str} ;
|
||||||
|
substposs : Str ;
|
||||||
|
a : Agr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
sal_V : VVerb = {
|
||||||
|
s = table {
|
||||||
|
VInf => "sal" ;
|
||||||
|
VPres => "sal" ;
|
||||||
|
VPast => "sou" ; --# notpresent
|
||||||
|
VPerf => "gesou"
|
||||||
|
} ;
|
||||||
|
aux = VHebben ;
|
||||||
|
prefix = [] ;
|
||||||
|
vtype = VAct ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
word_V : VVerb = {
|
||||||
|
s = table {
|
||||||
|
VInf => "word" ;
|
||||||
|
VPres => "word" ;
|
||||||
|
VPast => "word" ; --# notpresent
|
||||||
|
VPerf => "geword"
|
||||||
|
} ;
|
||||||
|
aux = VHebben ;
|
||||||
|
prefix = [] ;
|
||||||
|
vtype = VAct ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkPronoun : (x1,_,_,_,_,x6,x7 : Str) -> Gender -> Number -> Person -> Pronoun =
|
||||||
|
\ik,me,mn,Ik,mij,mijn,mijne,g,n,p -> {
|
||||||
|
unstressed = {nom = ik ; acc = me ; poss = mn} ;
|
||||||
|
stressed = {nom = Ik ; acc = mij ; poss = mijn} ;
|
||||||
|
substposs = mijne ;
|
||||||
|
a = {g = g ; n = n ; p = p}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
het_Pron : Pronoun = mkPronoun "'t" "'t" "ze" "hij" "hem" "zijn" "zijne" Neutr Sg P3 ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Complex $CN$s, like adjectives, have strong and weak forms.
|
||||||
|
|
||||||
|
param
|
||||||
|
Adjf = Strong | Weak ;
|
||||||
|
|
||||||
|
|
||||||
|
oper VVerb = Verb ** {prefix : Str ; aux : VAux ; vtype : VType} ;
|
||||||
|
param VAux = VHebben | VZijn ;
|
||||||
|
|
||||||
|
param VType = VAct | VRefl ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
v2vvAux : Verb -> VAux -> VVerb = \v,a ->
|
||||||
|
{s = v.s ; aux = a ; prefix = [] ; vtype = VAct} ;
|
||||||
|
v2vv : Verb -> VVerb = \v -> v2vvAux v VHebben ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---- The order of sentence is depends on whether it is used as a main
|
||||||
|
---- clause, inverted, or subordinate.
|
||||||
|
|
||||||
|
oper
|
||||||
|
Preposition = Str ;
|
||||||
|
appPrep : Preposition -> (NPCase => Str) -> Str = \p,np -> p ++ np ! NPAcc ; ----
|
||||||
|
|
||||||
|
param
|
||||||
|
Order = Main | Inv | Sub ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
vForm : Tense -> VForm = \t -> case t of {
|
||||||
|
Pres => VPres ;
|
||||||
|
Fut => VPres --# notpresent
|
||||||
|
; Past | Cond => VPast -- Fut and Cond affect zullen --# notpresent
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--2 For $Relative$
|
||||||
|
|
||||||
|
param
|
||||||
|
RAgr = RNoAg | RAg Number Person ;
|
||||||
|
|
||||||
|
--2 For $Numeral$
|
||||||
|
|
||||||
|
param
|
||||||
|
CardOrd = NCard Gender Case | NOrd AForm ;
|
||||||
|
DForm = DUnit | DTeen | DTen ;
|
||||||
|
|
||||||
|
--2 Transformations between parameter types
|
||||||
|
|
||||||
|
oper Agr : Type = {g : Gender ; n : Number ; p : Person} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
agrP3 : Number -> Agr = agrgP3 Neutr ;
|
||||||
|
|
||||||
|
agrgP3 : Gender -> Number -> Agr = \g,n ->
|
||||||
|
{g = g ; n = n ; p = P3} ;
|
||||||
|
|
||||||
|
-- Used in $NounAfr$.
|
||||||
|
|
||||||
|
agrAdj : Gender -> Adjf -> NForm -> AForm = \g,a,n ->
|
||||||
|
case <a,g,n> of {
|
||||||
|
<Strong,Neutr,NF Sg _> => APred ;
|
||||||
|
_ => AAttr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper VP : Type = {
|
||||||
|
s : VVerb ;
|
||||||
|
a1 : Polarity => Str ; -- niet
|
||||||
|
n0 : Agr => Str ; -- je
|
||||||
|
n2 : Agr => Str ; -- je vrouw
|
||||||
|
a2 : Str ; -- vandaag
|
||||||
|
isAux : Bool ; -- is a double infinitive
|
||||||
|
inf : Str * Bool ; -- sagen (True = non-empty)
|
||||||
|
ext : Str -- dass sie kommt
|
||||||
|
} ;
|
||||||
|
|
||||||
|
predV : VVerb -> VP = predVGen False ;
|
||||||
|
|
||||||
|
|
||||||
|
predVGen : Bool -> VVerb -> VP = \isAux, verb -> {
|
||||||
|
s = verb ;
|
||||||
|
a1 : Polarity => Str = negation ;
|
||||||
|
n0 : Agr => Str = \\a => case verb.vtype of {
|
||||||
|
VAct => [] ;
|
||||||
|
VRefl => reflPron ! a
|
||||||
|
} ;
|
||||||
|
n2 : Agr => Str = \\a => [] ;
|
||||||
|
a2 : Str = [] ;
|
||||||
|
isAux = isAux ; ----
|
||||||
|
inf : Str * Bool = <[],False> ;
|
||||||
|
ext : Str = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
negation : Polarity => Str = table {
|
||||||
|
Pos => [] ;
|
||||||
|
Neg => "niet"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Extending a verb phrase with new constituents.
|
||||||
|
|
||||||
|
insertObj : (Agr => Str) -> VP -> VP = insertObjNP False ;
|
||||||
|
|
||||||
|
insertObjNP : Bool -> (Agr => Str) -> VP -> VP = \isPron, obj,vp -> {
|
||||||
|
s = vp.s ;
|
||||||
|
a1 = vp.a1 ;
|
||||||
|
n0 = \\a => case isPron of {True => obj ! a ; _ => []} ++ vp.n0 ! a ;
|
||||||
|
n2 = \\a => case isPron of {False => obj ! a ; _ => []} ++ vp.n2 ! a ;
|
||||||
|
a2 = vp.a2 ;
|
||||||
|
isAux = vp.isAux ;
|
||||||
|
inf = vp.inf ;
|
||||||
|
ext = vp.ext
|
||||||
|
} ;
|
||||||
|
|
||||||
|
insertAdV : Str -> VP -> VP = \adv,vp -> {
|
||||||
|
s = vp.s ;
|
||||||
|
a1 = \\a => adv ++ vp.a1 ! a ; -- immer nicht
|
||||||
|
n0 = vp.n0 ;
|
||||||
|
n2 = vp.n2 ;
|
||||||
|
a2 = vp.a2 ;
|
||||||
|
isAux = vp.isAux ;
|
||||||
|
inf = vp.inf ;
|
||||||
|
ext = vp.ext
|
||||||
|
} ;
|
||||||
|
|
||||||
|
insertAdv : Str -> VP -> VP = \adv,vp -> {
|
||||||
|
s = vp.s ;
|
||||||
|
a1 = vp.a1 ;
|
||||||
|
n0 = vp.n0 ;
|
||||||
|
n2 = vp.n2 ;
|
||||||
|
a2 = vp.a2 ++ adv ;
|
||||||
|
isAux = vp.isAux ;
|
||||||
|
inf = vp.inf ;
|
||||||
|
ext = vp.ext
|
||||||
|
} ;
|
||||||
|
|
||||||
|
insertExtrapos : Str -> VP -> VP = \ext,vp -> {
|
||||||
|
s = vp.s ;
|
||||||
|
a1 = vp.a1 ;
|
||||||
|
n0 = vp.n0 ;
|
||||||
|
n2 = vp.n2 ;
|
||||||
|
a2 = vp.a2 ;
|
||||||
|
isAux = vp.isAux ;
|
||||||
|
inf = vp.inf ;
|
||||||
|
ext = vp.ext ++ ext
|
||||||
|
} ;
|
||||||
|
|
||||||
|
insertInf : Str -> VP -> VP = \inf,vp -> {
|
||||||
|
s = vp.s ;
|
||||||
|
a1 = vp.a1 ;
|
||||||
|
n0 = vp.n0 ;
|
||||||
|
n2 = vp.n2 ;
|
||||||
|
a2 = vp.a2 ;
|
||||||
|
isAux = vp.isAux ; ----
|
||||||
|
inf = <inf ++ vp.inf.p1, True> ;
|
||||||
|
ext = vp.ext
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- For $Sentence$.
|
||||||
|
|
||||||
|
Clause : Type = {
|
||||||
|
s : Tense => Anteriority => Polarity => Order => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> {
|
||||||
|
s = \\t,a,b,o =>
|
||||||
|
let
|
||||||
|
ord = case o of {
|
||||||
|
Sub => True ; -- glue prefix to verb
|
||||||
|
_ => False
|
||||||
|
} ;
|
||||||
|
vform = vForm t ;
|
||||||
|
auxv = (auxVerb vp.s.aux).s ;
|
||||||
|
vperf = vp.s.s ! VPerf ;
|
||||||
|
verb : Str * Str = case <t,a> of {
|
||||||
|
<Fut|Cond,Simul> => <sal_V.s ! vform, vperf ++ auxv ! VInf> ; --# notpresent
|
||||||
|
<Fut|Cond,Anter> => <sal_V.s ! vform, vperf ++ auxv ! VInf> ; --# notpresent
|
||||||
|
<_, Anter> => <auxv ! vform, vperf> ; --# notpresent
|
||||||
|
<_, Simul> => <vp.s.s ! vform, []>
|
||||||
|
} ;
|
||||||
|
fin = verb.p1 ;
|
||||||
|
neg = vp.a1 ! b ;
|
||||||
|
obj0 = vp.n0 ! agr ;
|
||||||
|
obj = vp.n2 ! agr ;
|
||||||
|
compl = obj0 ++ neg ++ obj ++ vp.a2 ++ vp.s.prefix ;
|
||||||
|
inf =
|
||||||
|
case <vp.isAux, vp.inf.p2, a> of { --# notpresent
|
||||||
|
<True,True,Anter> => vp.s.s ! VInf ++ vp.inf.p1 ; --# notpresent
|
||||||
|
_ => --# notpresent
|
||||||
|
vp.inf.p1 ++ verb.p2
|
||||||
|
} --# notpresent
|
||||||
|
;
|
||||||
|
extra = vp.ext ;
|
||||||
|
inffin =
|
||||||
|
case <a,vp.isAux> of { --# notpresent
|
||||||
|
<Anter,True> => fin ++ inf ; -- double inf --# notpresent
|
||||||
|
_ => --# notpresent
|
||||||
|
inf ++ fin --- or just auxiliary vp
|
||||||
|
} --# notpresent
|
||||||
|
in
|
||||||
|
case o of {
|
||||||
|
Main => subj ++ fin ++ compl ++ inf ++ extra ;
|
||||||
|
Inv => fin ++ subj ++ compl ++ inf ++ extra ;
|
||||||
|
Sub => subj ++ compl ++ inffin ++ extra
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
auxVerb : VAux -> VVerb = \a -> case a of {
|
||||||
|
VHebben => hebben_V ;
|
||||||
|
VZijn => zijn_V
|
||||||
|
} ;
|
||||||
|
|
||||||
|
infVP : Bool -> VP -> ((Agr => Str) * Str * Str) = \isAux, vp ->
|
||||||
|
<
|
||||||
|
\\agr => vp.n2 ! agr ++ vp.a2,
|
||||||
|
vp.a1 ! Pos ++
|
||||||
|
if_then_Str isAux [] "te" ++ vp.s.s ! VInf,
|
||||||
|
vp.inf.p1 ++ vp.ext
|
||||||
|
> ;
|
||||||
|
|
||||||
|
useInfVP : Bool -> VP -> Str = \isAux,vp ->
|
||||||
|
let vpi = infVP isAux vp in
|
||||||
|
vpi.p1 ! agrP3 Sg ++ vpi.p3 ++ vpi.p2 ;
|
||||||
|
|
||||||
|
reflPron : Agr => Str = table {
|
||||||
|
{n = Sg ; p = P1} => "me" ;
|
||||||
|
{n = Sg ; p = P2} => "je" ;
|
||||||
|
{n = Sg ; p = P3} => "zich" ;
|
||||||
|
{n = Pl ; p = P1} => "ons" ;
|
||||||
|
{n = Pl ; p = P2} => "je" ;
|
||||||
|
{n = Pl ; p = P3} => "zich"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
conjThat : Str = "dat" ;
|
||||||
|
|
||||||
|
conjThan : Str = "dan" ;
|
||||||
|
|
||||||
|
conjAgr : Agr -> Agr -> Agr = \a,b -> {
|
||||||
|
g = Utr ; ----
|
||||||
|
n = conjNumber a.n b.n ;
|
||||||
|
p = conjPerson a.p b.p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- The infinitive particle "zu" is used if and only if $vv.isAux = False$.
|
||||||
|
|
||||||
|
infPart : Bool -> Str = \b -> if_then_Str b [] "te" ;
|
||||||
|
|
||||||
|
mkDet : Str -> Str -> Number -> {s,sp : Gender => Str ; n : Number ; a : Adjf} =
|
||||||
|
\deze,dit,n -> {
|
||||||
|
s = \\g => case <n,g> of {<Sg,Neutr> => dit ; _ => deze} ;
|
||||||
|
sp = \\g => case <n,g> of {<Sg,Neutr> => dit ; _ => deze} ;
|
||||||
|
n = n ;
|
||||||
|
a = Weak
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkQuant : Str -> Str -> {
|
||||||
|
s : Bool => Number => Gender => Str ;
|
||||||
|
sp : Number => Gender => Str ;
|
||||||
|
a : Adjf
|
||||||
|
} =
|
||||||
|
\deze,dit -> {
|
||||||
|
s = \\_ ,n,g => case <n,g> of {<Sg,Neutr> => dit ; _ => deze} ;
|
||||||
|
sp = \\ n,g => case <n,g> of {<Sg,Neutr> => dit ; _ => deze} ;
|
||||||
|
a = Weak
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkPredet : Str -> Str -> {s : Number => Gender => Str} =
|
||||||
|
\deze,dit -> {
|
||||||
|
s = \\n,g => case <n,g> of {<Sg,Neutr> => dit ; _ => deze}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkNP : Str -> Gender -> Number -> {s : NPCase => Str ; a : Agr ; isPron : Bool} =
|
||||||
|
\s,g,n -> heavyNP {
|
||||||
|
s = \\_ => s ;
|
||||||
|
a = agrgP3 g n ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
auxVV : VVerb -> VVerb ** {isAux : Bool} = \v -> v ** {isAux = True} ;
|
||||||
|
|
||||||
|
heavyNP :
|
||||||
|
{s : NPCase => Str ; a : Agr} -> {s : NPCase => Str ; a : Agr ; isPron : Bool} = \np ->
|
||||||
|
np ** {isPron = False} ;
|
||||||
|
|
||||||
|
}
|
||||||
67
lib/src/afrikaans/SentenceAfr.gf
Normal file
67
lib/src/afrikaans/SentenceAfr.gf
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
concrete SentenceAfr of Sentence = CatAfr ** open ResAfr, Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
PredVP np vp = mkClause (np.s ! NPNom) np.a vp ;
|
||||||
|
|
||||||
|
PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
|
||||||
|
|
||||||
|
ImpVP vp = {
|
||||||
|
s = \\pol,im =>
|
||||||
|
let
|
||||||
|
ps = case im of {
|
||||||
|
ImpF Pl _ => <VInf,[],Pl> ;
|
||||||
|
ImpF Sg True => <VInf,[],Sg> ;
|
||||||
|
ImpF Sg False => <VInf,[],Sg>
|
||||||
|
} ;
|
||||||
|
agr = {g = Utr ; n = ps.p3 ; p = P2} ; ---- P2? -- g does not matter
|
||||||
|
verb = vp.s.s ! ps.p1 ;
|
||||||
|
inf = vp.inf.p1 ;
|
||||||
|
in
|
||||||
|
verb ++ ps.p2 ++
|
||||||
|
vp.n2 ! agr ++ vp.a1 ! pol ++ vp.a2 ++ inf ++ vp.ext
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SlashVP np vp =
|
||||||
|
mkClause
|
||||||
|
(np.s ! NPNom) np.a
|
||||||
|
vp **
|
||||||
|
{c2 = vp.c2} ;
|
||||||
|
|
||||||
|
AdvSlash slash adv = {
|
||||||
|
s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ;
|
||||||
|
c2 = slash.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SlashPrep cl prep = cl ** {c2 = prep.s} ;
|
||||||
|
|
||||||
|
SlashVS np vs slash =
|
||||||
|
mkClause (np.s ! NPNom) np.a
|
||||||
|
(insertExtrapos (conjThat ++ slash.s ! Sub) (predV vs)) **
|
||||||
|
{c2 = slash.c2} ;
|
||||||
|
|
||||||
|
EmbedS s = {s = conjThat ++ s.s ! Sub} ;
|
||||||
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
|
EmbedVP vp = {s = useInfVP False vp} ;
|
||||||
|
|
||||||
|
UseCl t p cl = {
|
||||||
|
s = \\o => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! o
|
||||||
|
} ;
|
||||||
|
UseQCl t p cl = {
|
||||||
|
s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! q
|
||||||
|
} ;
|
||||||
|
UseRCl t p cl = {
|
||||||
|
s = \\g,n => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! g ! n
|
||||||
|
} ;
|
||||||
|
UseSlash t p cl = {
|
||||||
|
s = \\o => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! o ;
|
||||||
|
c2 = cl.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvS a s = {s = \\o => a.s ++ s.s ! Inv} ;
|
||||||
|
|
||||||
|
RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! Neutr ! Sg} ;
|
||||||
|
|
||||||
|
}
|
||||||
125
lib/src/afrikaans/StructuralAfr.gf
Normal file
125
lib/src/afrikaans/StructuralAfr.gf
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
concrete StructuralAfr of Structural = CatAfr, Prelude **
|
||||||
|
|
||||||
|
open ParadigmsAfr, ResAfr, (X = ConstructX) in
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
flags optimize=all ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
above_Prep = mkPrep "boven" ;
|
||||||
|
after_Prep = mkPrep "na" ;
|
||||||
|
all_Predet = mkPredet "alle" "alle" ; ----
|
||||||
|
almost_AdA, almost_AdN = ss "byna" ;
|
||||||
|
although_Subj = ss "hoewel" ;
|
||||||
|
always_AdV = ss "altyd" ;
|
||||||
|
and_Conj = {s1 = [] ; s2 = "en" ; n = Pl} ;
|
||||||
|
because_Subj = ss "omdat" ; ---- doordat
|
||||||
|
before_Prep = mkPrep "voor" ;
|
||||||
|
behind_Prep = mkPrep "achter" ;
|
||||||
|
between_Prep = mkPrep "tussen" ;
|
||||||
|
both7and_DConj = {s1 = "sowel" ; s2 = "als" ; n = Pl} ;
|
||||||
|
but_PConj = ss "maar" ;
|
||||||
|
by8agent_Prep = mkPrep "door" ;
|
||||||
|
by8means_Prep = mkPrep "met" ;
|
||||||
|
can8know_VV, can_VV = auxVV (mkV "kan" "kon") ;
|
||||||
|
during_Prep = mkPrep "tydens" ;
|
||||||
|
either7or_DConj = {s1 = "ofwel" ; s2 = "of" ; n = Pl} ;
|
||||||
|
everybody_NP = mkNP "alle" Utr Pl ; ----
|
||||||
|
every_Det = mkDet "elke" "elk" Sg ; ----
|
||||||
|
everything_NP = mkNP "alles" Neutr Sg ; ----
|
||||||
|
everywhere_Adv = ss "overal" ;
|
||||||
|
few_Det = mkDet "weinig" "weinig" Pl ;
|
||||||
|
for_Prep = mkPrep "voor" ;
|
||||||
|
from_Prep = mkPrep "uit" ;
|
||||||
|
he_Pron = mkPronoun "hy" "hem" "syn" "hy" "hem" "syn" "syne" Utr Sg P3 ;
|
||||||
|
here7to_Adv = ss ["hier"] ;
|
||||||
|
here7from_Adv = ss ["van hier"] ; ----
|
||||||
|
here_Adv = ss "hier" ;
|
||||||
|
how_IAdv = ss "hoe" ;
|
||||||
|
how8much_IAdv = ss "hoeveel" ;
|
||||||
|
how8many_IDet = mkDet "hoeveel" "hoeveel" Pl ;
|
||||||
|
if_Subj = ss "als" ;
|
||||||
|
in8front_Prep = mkPrep "voor" ;
|
||||||
|
i_Pron = mkPronoun "ek" "me" "myn" "ik" "my" "myn" "myne" Utr Sg P1 ;
|
||||||
|
in_Prep = ss "in" ;
|
||||||
|
it_Pron = mkPronoun "het" "het" "syn" "het" "het" "syn" "syne" Neutr Sg P3 ;
|
||||||
|
|
||||||
|
less_CAdv = X.mkCAdv "minder" "dan" ;
|
||||||
|
many_Det = mkDet "veel" "veel" Pl ;
|
||||||
|
more_CAdv = X.mkCAdv "meer" "dan" ;
|
||||||
|
most_Predet = mkPredet "meeste" "meeste" ;
|
||||||
|
much_Det = mkDet "veel" "veel" Sg ;
|
||||||
|
|
||||||
|
must_VV = auxVV (mkV "moeten" "moest" "gemoeten") ;
|
||||||
|
|
||||||
|
only_Predet = {s = \\_,_ => "slechts"} ;
|
||||||
|
no_Utt = ss "neen" ;
|
||||||
|
on_Prep = mkPrep "op" ;
|
||||||
|
or_Conj = {s1 = [] ; s2 = "of" ; n = Sg} ;
|
||||||
|
otherwise_PConj = ss "anders" ;
|
||||||
|
part_Prep = mkPrep "van" ;
|
||||||
|
please_Voc = ss "alsjeblieft" ;
|
||||||
|
possess_Prep = mkPrep "van" ;
|
||||||
|
quite_Adv = ss "heel" ;
|
||||||
|
she_Pron = mkPronoun "se" "haar" "haar" "sy" "haar" "haar" "hare" Utr Sg P3 ;
|
||||||
|
|
||||||
|
so_AdA = ss "so" ;
|
||||||
|
somebody_NP = mkNP "iemand" Utr Sg ;
|
||||||
|
somePl_Det = mkDet "sommige" "sommige" Pl ;
|
||||||
|
someSg_Det = mkDet "sommige" "sommige" Sg ;
|
||||||
|
something_NP = mkNP "iets" Utr Sg ;
|
||||||
|
somewhere_Adv = ss "ergens" ;
|
||||||
|
that_Quant = mkQuant "die" "dat" ;
|
||||||
|
that_Subj = ss "dat" ;
|
||||||
|
there_Adv = ss "daar" ;
|
||||||
|
there7to_Adv = ss "daar" ;
|
||||||
|
there7from_Adv = ss "van daar" ;
|
||||||
|
therefore_PConj = ss "daarom" ;
|
||||||
|
|
||||||
|
they_Pron = mkPronoun "se" "se" "hun" "sy" "hen" "hun" "hunne" Utr Pl P3 ; ----
|
||||||
|
|
||||||
|
this_Quant = mkQuant "dese" "dit" ;
|
||||||
|
through_Prep = mkPrep "door" ;
|
||||||
|
too_AdA = ss "te" ;
|
||||||
|
to_Prep = mkPrep "naar" ;
|
||||||
|
under_Prep = mkPrep "onder" ;
|
||||||
|
very_AdA = ss "erg" ;
|
||||||
|
want_VV = auxVV (mkV "wil" "wou" "gewil") ;
|
||||||
|
|
||||||
|
we_Pron = mkPronoun "we" "ons" "ons" "wy" "ons" "onse" "onse" Utr Pl P3 ; ----
|
||||||
|
|
||||||
|
whatSg_IP = {s = \\_ => "wat" ; n = Sg} ;
|
||||||
|
whatPl_IP = {s = \\_ => "wat" ; n = Pl} ;
|
||||||
|
|
||||||
|
when_IAdv = ss "wanneer" ;
|
||||||
|
when_Subj = ss "als" ;
|
||||||
|
where_IAdv = ss "waar" ;
|
||||||
|
which_IQuant = mkPredet "welke" "welk" ;
|
||||||
|
|
||||||
|
whoSg_IP = {s = \\_ => "wie" ; n = Sg} ;
|
||||||
|
whoPl_IP = {s = \\_ => "wie" ; n = Pl} ;
|
||||||
|
why_IAdv = ss "waarom" ;
|
||||||
|
without_Prep = mkPrep "sonder" ;
|
||||||
|
with_Prep = mkPrep "met" ;
|
||||||
|
youSg_Pron = mkPronoun "je" "je" "je" "jy" "jou" "je" "jouwe" Neutr Sg P2 ; --- Neutr as hack for familiarity
|
||||||
|
youPl_Pron = mkPronoun "jullie" "jullie" "je" "jullie" "jullie" "jullie" "uwe" Utr Pl P2 ;
|
||||||
|
youPol_Pron = mkPronoun "u" "u" "uw" "u" "u" "uw" "uwe" Utr Sg P2 ;
|
||||||
|
yes_Utt = ss "ja" ;
|
||||||
|
|
||||||
|
not_Predet = mkPredet "niet" "niet" ;
|
||||||
|
no_Quant = mkQuant "geen" "geen" ;
|
||||||
|
if_then_Conj = {s1 = "als" ; s2 = "dan" ; n = Sg ; lock_Conj = <>} ;
|
||||||
|
nobody_NP = mkNP "niemand" Utr Sg ;
|
||||||
|
nothing_NP = mkNP "niets" Neutr Sg ;
|
||||||
|
at_least_AdN = ss "ten minste" ;
|
||||||
|
at_most_AdN = ss "hooguit" ;
|
||||||
|
except_Prep = mkPrep "met uitsondering van" ;
|
||||||
|
|
||||||
|
as_CAdv = X.mkCAdv "so" "als" ;
|
||||||
|
have_V2 = mkV2 ParadigmsAfr.hebben_V ;
|
||||||
|
|
||||||
|
lin language_title_Utt = ss "nederlands" ;
|
||||||
|
|
||||||
|
}
|
||||||
49
lib/src/afrikaans/SymbolAfr.gf
Normal file
49
lib/src/afrikaans/SymbolAfr.gf
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
--# -path=.:../abstract:../common
|
||||||
|
|
||||||
|
concrete SymbolAfr of Symbol = CatAfr ** open Prelude, ResAfr in
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
lin
|
||||||
|
SymbPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||||
|
IntPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||||
|
FloatPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||||
|
NumPN i = {s = \\_ => i.s ! Neutr ! Nom ; g = Neutr} ; --- c
|
||||||
|
|
||||||
|
CNIntNP cn i = {
|
||||||
|
s = \\c => cn.s ! Weak ! NF Sg Nom ++ i.s ;
|
||||||
|
a = agrP3 Sg ;
|
||||||
|
isPron = False
|
||||||
|
} ;
|
||||||
|
CNSymbNP det cn xs = let g = cn.g in {
|
||||||
|
s = \\c => det.s ! g ++ cn.s ! det.a ! NF det.n Nom ++ xs.s ;
|
||||||
|
a = agrP3 det.n ;
|
||||||
|
isPron = False
|
||||||
|
} ;
|
||||||
|
CNNumNP cn i = {
|
||||||
|
s = \\c => artDef Sg cn.g ++ cn.s ! Weak ! NF Sg Nom ++ i.s ! Neutr ! Nom ;
|
||||||
|
a = agrP3 Sg ;
|
||||||
|
isPron = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SymbS sy = {s = \\_ => sy.s} ;
|
||||||
|
|
||||||
|
SymbNum n = {s = \\_,_ => n.s ; n = Pl ; isNum = True} ;
|
||||||
|
SymbOrd n = {s = \\_ => n.s ++ "."} ;
|
||||||
|
|
||||||
|
|
||||||
|
lincat
|
||||||
|
|
||||||
|
Symb, [Symb] = SS ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
MkSymb s = s ;
|
||||||
|
|
||||||
|
BaseSymb = infixSS "en" ;
|
||||||
|
ConsSymb = infixSS "," ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
artDef : Number -> Gender -> Str = \n,g -> case <n,g> of {<Sg,Neutr> => "het" ; _ => "de"} ;
|
||||||
|
|
||||||
|
}
|
||||||
84
lib/src/afrikaans/VerbAfr.gf
Normal file
84
lib/src/afrikaans/VerbAfr.gf
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
concrete VerbAfr of Verb = CatAfr ** open Prelude, ResAfr in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
UseV = predV ;
|
||||||
|
|
||||||
|
ComplVV v vp =
|
||||||
|
let
|
||||||
|
vpi = infVP v.isAux vp
|
||||||
|
in
|
||||||
|
insertExtrapos vpi.p3 (
|
||||||
|
insertInf vpi.p2 (
|
||||||
|
insertObj vpi.p1 (
|
||||||
|
predVGen v.isAux (v2v v)))) ; ---- subtyp
|
||||||
|
|
||||||
|
ComplVS v s =
|
||||||
|
insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ;
|
||||||
|
ComplVQ v q =
|
||||||
|
insertExtrapos (q.s ! QIndir) (predV v) ;
|
||||||
|
ComplVA v ap = insertObj (\\ _ => ap.s ! APred) (predV v) ;
|
||||||
|
|
||||||
|
SlashV2a v = predV (v2v v) ** {c2 = v.c2} ;
|
||||||
|
|
||||||
|
Slash2V3 v np =
|
||||||
|
insertObj (\\_ => appPrep v.c2 np.s) (predVv v) ** {c2 = v.c3} ;
|
||||||
|
Slash3V3 v np =
|
||||||
|
insertObj (\\_ => appPrep v.c3 np.s) (predVv v) ** {c2 = v.c2} ;
|
||||||
|
|
||||||
|
SlashV2S v s =
|
||||||
|
insertExtrapos (conjThat ++ s.s ! Sub) (predVv v) ** {c2 = v.c2} ;
|
||||||
|
SlashV2Q v q =
|
||||||
|
insertExtrapos (q.s ! QIndir) (predVv v) ** {c2 = v.c2} ;
|
||||||
|
SlashV2V v vp =
|
||||||
|
let
|
||||||
|
vpi = infVP False vp
|
||||||
|
in
|
||||||
|
insertExtrapos vpi.p3 (
|
||||||
|
insertInf vpi.p2 (
|
||||||
|
insertObj vpi.p1 ((predVv v)))) ** {c2 = v.c2} ;
|
||||||
|
|
||||||
|
SlashV2A v ap =
|
||||||
|
insertObj (\\_ => ap.s ! APred) (predVv v) ** {c2 = v.c2} ;
|
||||||
|
|
||||||
|
ComplSlash vp np = insertObjNP np.isPron (\\_ => appPrep vp.c2 np.s) vp ;
|
||||||
|
|
||||||
|
SlashVV v vp =
|
||||||
|
let
|
||||||
|
vpi = infVP v.isAux vp
|
||||||
|
in
|
||||||
|
insertExtrapos vpi.p3 (
|
||||||
|
insertInf vpi.p2 (
|
||||||
|
insertObj vpi.p1 (
|
||||||
|
predVGen v.isAux (v2v v)))) ** {c2 = vp.c2} ;
|
||||||
|
|
||||||
|
SlashV2VNP v np vp =
|
||||||
|
let
|
||||||
|
vpi = infVP False vp
|
||||||
|
in
|
||||||
|
insertExtrapos vpi.p3 (
|
||||||
|
insertInf vpi.p2 (
|
||||||
|
insertObj vpi.p1 (
|
||||||
|
insertObj (\\_ => appPrep v.c2 np.s) (
|
||||||
|
predVv v)))) ** {c2 = v.c2} ;
|
||||||
|
|
||||||
|
UseComp comp = insertObj comp.s (predV zijn_V) ; -- agr not used
|
||||||
|
CompCN cn = {s = \\a => cn.s ! Strong ! NF a.n Nom} ;
|
||||||
|
CompAP ap = {s = \\_ => ap.s ! APred} ;
|
||||||
|
CompNP np = {s = \\_ => np.s ! NPNom} ;
|
||||||
|
CompAdv a = {s = \\_ => a.s} ;
|
||||||
|
|
||||||
|
AdvVP vp adv = insertAdv adv.s vp ;
|
||||||
|
AdVVP adv vp = insertAdV adv.s vp ;
|
||||||
|
|
||||||
|
ReflVP vp = insertObj (\\a => appPrep vp.c2 (\\_ => reflPron ! a)) vp ;
|
||||||
|
|
||||||
|
PassV2 v = insertInf (v.s ! VPerf) (predV word_V) ;
|
||||||
|
|
||||||
|
---- workaround for a subtyping bug
|
||||||
|
oper
|
||||||
|
v2v : VVerb -> VVerb = \v ->
|
||||||
|
{s = v.s ; aux = v.aux ; prefix = v.prefix ; vtype = v.vtype} ;
|
||||||
|
predVv : VVerb -> ResAfr.VP = \v -> predV (v2v v) ;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user