definitions moved from ParseExtendFao to ExtendFao

This commit is contained in:
Krasimir Angelov
2026-09-18 10:55:35 +02:00
parent d1503c00e8
commit eb24170d3a
+302 -1
View File
@@ -1,5 +1,5 @@
concrete ExtendFao of Extend = CatFao ** concrete ExtendFao of Extend = CatFao **
open ParadigmsFao, ResFao, (P = ParamX) in { open Prelude, ParadigmsFao, ResFao, (P = ParamX) in {
lincat lincat
VPS = {s : Gender => PersNum => Str} ; VPS = {s : Gender => PersNum => Str} ;
@@ -29,6 +29,307 @@ lin
youPolPlFem_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ; youPolPlFem_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
lin lin
GenIP ip = {s = ip.s} ;
GenRP num cn = {s = cn.s ! Def ! num.n ! Gen} ;
GenModNP num np cn = mkNP (np.s ! Gen ++ cn.s ! Def ! num.n ! Nom) cn.g num.n P3 ;
GenModIP num ip cn = {s = ip.s ++ cn.s ! Def ! num.n ! Nom ; n = num.n} ;
CompBareCN cn = {s = \\_,n => cn.s ! Indef ! n ! Nom} ;
StrandQuestSlash ip cls = {
s = \\t,pol => ip.s ++ cls.s ! t ! pol ;
anterior = \\t,pol => ip.s ++ cls.s ! t ! pol ;
future = \\pol => ip.s ++ cls.s ! Pres ! pol ;
conditional = \\pol => ip.s ++ cls.s ! Past ! pol
} ;
StrandRelSlash rp cls = {s = \\t,pol,_,_ => rp.s ++ cls.s ! t ! pol} ;
EmptyRelSlash cls = {s = \\t,pol,_,_ => cls.s ! t ! pol} ;
MkVPS temp pol vp =
let tense = case temp.t of {P.Pres => Pres ; P.Past => Past ; P.Fut => Pres ; P.Cond => Past} in {
s = \\g,p => temp.s ++ pol.s ++ vp.Indicative ! tense ! pol.p ! g ! p
} ;
ConjVPS conj xs = {s = \\g,p => xs.s1 ! g ! p ++ conj.s ++ xs.s2 ! g ! p} ;
PredVPS np vps = {s = np.s ! Nom ++ vps.s ! np.g ! persNum np.n np.p} ;
SQuestVPS np vps = {s = np.s ! Nom ++ vps.s ! np.g ! persNum np.n np.p} ;
QuestVPS ip vps = {s = ip.s ++ vps.s ! Masc ! persNum ip.n P3} ;
RelVPS rp vps = {s = \\g,p => rp.s ++ vps.s ! g ! p} ;
BaseVPS x y = {s1 = x.s ; s2 = y.s} ;
ConsVPS x xs = {s1 = \\g,p => x.s ! g ! p ++ "," ++ xs.s1 ! g ! p ; s2 = xs.s2} ;
ExistS temp pol np =
let tense = case temp.t of {P.Pres => Pres ; P.Past => Past ; P.Fut => Pres ; P.Cond => Past} in {
s = temp.s ++ "tað" ++ copula ! tense ! persNum np.n P3 ++ negStr pol.p ++ np.s ! Nom
} ;
ExistNPQS temp pol np =
let tense = case temp.t of {P.Pres => Pres ; P.Past => Past ; P.Fut => Pres ; P.Cond => Past} in {
s = temp.s ++ "er tað" ++ np.s ! Nom
} ;
ExistIPQS temp pol ip =
let tense = case temp.t of {P.Pres => Pres ; P.Past => Past ; P.Fut => Pres ; P.Cond => Past} in {
s = temp.s ++ ip.s ++ copula ! tense ! persNum ip.n P3 ++ negStr pol.p
} ;
MkVPI vp = {s = vp.Nonfinite} ;
ConjVPI conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ComplVPIVV vv vpi = {
Converb = vv.Converb ++ vv.particle ++ vpi.s ;
Imperative = \\n => vv.imperative ! n ++ vv.particle ++ vpi.s ;
Indicative = \\t,pol,g,p => vv.Indicative ! t ! p ++ vv.particle ++ negStr pol ++ vpi.s ;
Finite = vv.Indicative ;
Remainder = \\pol,_,_ => negStr pol ++ vv.particle ++ vpi.s ;
Nonfinite = vv.Nonfinite ++ vv.particle ++ vpi.s ;
Participle = \\t => vv.Participle ! t ++ vv.particle ++ vpi.s
} ;
BaseVPI x y = {s1 = x.s ; s2 = y.s} ;
ConsVPI x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
MkVPS2 temp pol vps =
let tense = case temp.t of {P.Pres => Pres ; P.Past => Past ; P.Fut => Pres ; P.Cond => Past} in {
s = \\g,p => temp.s ++ pol.s ++ vps.Indicative ! tense ! p ++ vps.particle ++ negStr pol.p ++ vps.sc ;
c2 = vps.c2 ;
sc = vps.sc
} ;
ConjVPS2 conj xs = {s = \\g,p => xs.s1 ! g ! p ++ conj.s ++ xs.s2 ! g ! p ; c2 = xs.c2 ; sc = xs.sc} ;
ComplVPS2 vps np = {s = \\g,p => vps.s ! g ! p ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.sc} ;
ReflVPS2 vps rnp = {s = \\g,p => vps.s ! g ! p ++ vps.c2.s ++ rnp.s ! vps.c2.c ++ vps.sc} ;
BaseVPS2 x y = {s1 = x.s ; s2 = y.s ; c2 = y.c2 ; sc = y.sc} ;
ConsVPS2 x xs = {s1 = \\g,p => x.s ! g ! p ++ "," ++ xs.s1 ! g ! p ; s2 = xs.s2 ; c2 = xs.c2 ; sc = xs.sc} ;
MkVPI2 vps = {s = vps.Nonfinite ++ vps.particle ; c2 = vps.c2 ; sc = vps.sc} ;
ConjVPI2 conj xs = {s = xs.s1 ++ conj.s ++ xs.s2 ; c2 = xs.c2 ; sc = xs.sc} ;
ComplVPI2 vpi np = {s = vpi.s ++ vpi.c2.s ++ np.s ! vpi.c2.c ++ vpi.sc} ;
BaseVPI2 x y = {s1 = x.s ; s2 = y.s ; c2 = y.c2 ; sc = y.sc} ;
ConsVPI2 x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2 ; c2 = xs.c2 ; sc = xs.sc} ;
ConjComp conj xs = {s = \\g,n => xs.s1 ! g ! n ++ conj.s ++ xs.s2 ! g ! n} ;
BaseComp x y = {s1 = x.s ; s2 = y.s} ;
ConsComp x xs = {s1 = \\g,n => x.s ! g ! n ++ "," ++ xs.s1 ! g ! n ; s2 = xs.s2} ;
ConjImp conj xs = {s = \\pol,n => xs.s1 ! pol ! n ++ conj.s ++ xs.s2 ! pol ! n} ;
BaseImp x y = {s1 = x.s ; s2 = y.s} ;
ConsImp x xs = {s1 = \\pol,n => x.s ! pol ! n ++ "," ++ xs.s1 ! pol ! n ; s2 = xs.s2} ;
ProDrop p = p ** {s = \\_ => []} ;
ICompAP ap = {s = ap.s ! Strong ! Neuter ! Sg ! Nom} ;
IAdvAdv adv = {s = adv.s} ;
CompIQuant iq = {s = iq.s} ;
PrepCN prep cn = {s = prep.s ++ cn.s ! Indef ! Sg ! prep.c} ;
FocusObj np ss = {s = np.s ! Acc ++ ss.s} ;
FocusAdv adv s = {s = adv.s ++ s.s} ;
FocusAdV adv s = {s = adv.s ++ s.s} ;
PresPartAP vp = {s = \\_,_,_,_ => vp.Participle ! Pres} ;
EmbedPresPart vp = {s = vp.Participle ! Pres} ;
PastPartAP vps = {s = \\_,_,_,_ => vps.Participle ! Past ++ vps.particle ++ vps.sc} ;
PastPartAgentAP vps np = {s = \\_,_,_,_ => vps.Participle ! Past ++ vps.particle ++ vps.sc ++ "av" ++ np.s ! Dat} ;
PassVPSlash vps = {
Converb = "verið" ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ;
Imperative = \\n => case n of {Sg => "ver" ; Pl => "verið"} ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ;
Indicative = \\t,pol,_,p => copula ! t ! p ++ negStr pol ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ;
Finite = copula ;
Remainder = \\pol,_,_ => negStr pol ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ;
Nonfinite = "vera" ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ;
Participle = \\_ => "verið" ++ vps.Participle ! Past ++ vps.particle ++ vps.sc
} ;
PassAgentVPSlash vps np = {
Converb = "verið" ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ++ "av" ++ np.s ! Dat ;
Imperative = \\n => case n of {Sg => "ver" ; Pl => "verið"} ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ++ "av" ++ np.s ! Dat ;
Indicative = \\t,pol,_,p => copula ! t ! p ++ negStr pol ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ++ "av" ++ np.s ! Dat ;
Finite = copula ;
Remainder = \\pol,_,_ => negStr pol ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ++ "av" ++ np.s ! Dat ;
Nonfinite = "vera" ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ++ "av" ++ np.s ! Dat ;
Participle = \\_ => "verið" ++ vps.Participle ! Past ++ vps.particle ++ vps.sc ++ "av" ++ np.s ! Dat
} ;
ProgrVPSlash vps = vps ** {
Nonfinite = "vera við at" ++ vps.Nonfinite ;
Participle = \\_ => "verið við at" ++ vps.Nonfinite
} ;
ExistsNP np = {
Converb = "tað finst" ++ np.s ! Nom ;
Indicative = \\t,pol => "tað" ++ copula ! t ! persNum np.n P3 ++ negStr pol ++ np.s ! Nom ;
Interrogative = \\t,pol => copula ! t ! persNum np.n P3 ++ "tað" ++ negStr pol ++ np.s ! Nom ;
Future = \\pol => "tað" ++ futureAux ! PSg P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ;
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ np.s ! Nom ;
Conditional = \\pol => "tað" ++ conditionalAux ! PSg P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ;
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ np.s ! Nom ;
Anterior = \\t,pol => "tað" ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ "verið" ++ np.s ! Nom ;
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ "tað" ++ negStr pol ++ "verið" ++ np.s ! Nom ;
Nonfinite = "vera" ++ np.s ! Nom ;
Participle = \\_ => "verið" ++ np.s ! Nom
} ;
AdvIsNP adv np = {
Converb = adv.s ++ copula ! Pres ! persNum np.n P3 ++ np.s ! Nom ;
Indicative = \\t,pol => adv.s ++ copula ! t ! persNum np.n P3 ++ negStr pol ++ np.s ! Nom ;
Interrogative = \\t,pol => copula ! t ! persNum np.n P3 ++ adv.s ++ negStr pol ++ np.s ! Nom ;
Future = \\pol => adv.s ++ futureAux ! persNum np.n P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ;
FutureInterrogative = \\pol => adv.s ++ futureAux ! persNum np.n P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ;
Conditional = \\pol => adv.s ++ conditionalAux ! persNum np.n P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ;
ConditionalInterrogative = \\pol => adv.s ++ conditionalAux ! persNum np.n P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ;
Anterior = \\t,pol => adv.s ++ perfectAux ! t ! persNum np.n P3 ++ negStr pol ++ "verið" ++ np.s ! Nom ;
AnteriorInterrogative = \\t,pol => adv.s ++ perfectAux ! t ! persNum np.n P3 ++ negStr pol ++ "verið" ++ np.s ! Nom ;
Nonfinite = adv.s ++ "vera" ++ np.s ! Nom ;
Participle = \\_ => adv.s ++ "verið" ++ np.s ! Nom
} ;
ComplBareVS vs s = {
Converb = vs.Converb ++ vs.particle ++ s.s ;
Imperative = \\n => vs.imperative ! n ++ vs.particle ++ s.s ;
Indicative = \\t,pol,g,p => vs.Indicative ! t ! p ++ vs.particle ++ negStr pol ++ s.s ;
Finite = vs.Indicative ;
Remainder = \\pol,_,_ => negStr pol ++ vs.particle ++ s.s ;
Nonfinite = vs.Nonfinite ++ vs.particle ++ s.s ;
Participle = \\t => vs.Participle ! t ++ vs.particle ++ s.s
} ;
SlashBareV2S v s = v ** {c2 = v.c2 ; sc = s.s} ;
ComplDirectVS vs utt = {
Converb = vs.Converb ++ vs.particle ++ utt.s ;
Imperative = \\n => vs.imperative ! n ++ vs.particle ++ utt.s ;
Indicative = \\t,pol,g,p => vs.Indicative ! t ! p ++ vs.particle ++ negStr pol ++ utt.s ;
Finite = vs.Indicative ;
Remainder = \\pol,_,_ => negStr pol ++ vs.particle ++ utt.s ;
Nonfinite = vs.Nonfinite ++ vs.particle ++ utt.s ;
Participle = \\t => vs.Participle ! t ++ vs.particle ++ utt.s
} ;
ComplDirectVQ vq utt = {
Converb = vq.Converb ++ vq.particle ++ utt.s ;
Imperative = \\n => vq.imperative ! n ++ vq.particle ++ utt.s ;
Indicative = \\t,pol,g,p => vq.Indicative ! t ! p ++ vq.particle ++ negStr pol ++ utt.s ;
Finite = vq.Indicative ;
Remainder = \\pol,_,_ => negStr pol ++ vq.particle ++ utt.s ;
Nonfinite = vq.Nonfinite ++ vq.particle ++ utt.s ;
Participle = \\t => vq.Participle ! t ++ vq.particle ++ utt.s
} ;
FrontComplDirectVS np vs utt = {
Converb = utt.s ++ np.s ! Nom ++ vs.Converb ;
Indicative = \\t,pol => utt.s ++ np.s ! Nom ++ vs.Indicative ! t ! persNum np.n np.p ++ negStr pol ;
Interrogative = \\t,pol => utt.s ++ vs.Indicative ! t ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ;
Future = \\pol => utt.s ++ np.s ! Nom ++ futureAux ! persNum np.n np.p ++ negStr pol ++ vs.Nonfinite ;
FutureInterrogative = \\pol => utt.s ++ futureAux ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ vs.Nonfinite ;
Conditional = \\pol => utt.s ++ np.s ! Nom ++ conditionalAux ! persNum np.n np.p ++ negStr pol ++ vs.Nonfinite ;
ConditionalInterrogative = \\pol => utt.s ++ conditionalAux ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ vs.Nonfinite ;
Anterior = \\t,pol => utt.s ++ np.s ! Nom ++ perfectAux ! t ! persNum np.n np.p ++ negStr pol ++ vs.Converb ;
AnteriorInterrogative = \\t,pol => utt.s ++ perfectAux ! t ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ vs.Converb ;
Nonfinite = utt.s ++ np.s ! Nom ++ vs.Nonfinite ;
Participle = \\t => utt.s ++ np.s ! Nom ++ vs.Participle ! t
} ;
FrontComplDirectVQ np vq utt = {
Converb = utt.s ++ np.s ! Nom ++ vq.Converb ;
Indicative = \\t,pol => utt.s ++ np.s ! Nom ++ vq.Indicative ! t ! persNum np.n np.p ++ negStr pol ;
Interrogative = \\t,pol => utt.s ++ vq.Indicative ! t ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ;
Future = \\pol => utt.s ++ np.s ! Nom ++ futureAux ! persNum np.n np.p ++ negStr pol ++ vq.Nonfinite ;
FutureInterrogative = \\pol => utt.s ++ futureAux ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ vq.Nonfinite ;
Conditional = \\pol => utt.s ++ np.s ! Nom ++ conditionalAux ! persNum np.n np.p ++ negStr pol ++ vq.Nonfinite ;
ConditionalInterrogative = \\pol => utt.s ++ conditionalAux ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ vq.Nonfinite ;
Anterior = \\t,pol => utt.s ++ np.s ! Nom ++ perfectAux ! t ! persNum np.n np.p ++ negStr pol ++ vq.Converb ;
AnteriorInterrogative = \\t,pol => utt.s ++ perfectAux ! t ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ vq.Converb ;
Nonfinite = utt.s ++ np.s ! Nom ++ vq.Nonfinite ;
Participle = \\t => utt.s ++ np.s ! Nom ++ vq.Participle ! t
} ;
PredAPVP ap vp = {
Converb = "tað er" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
Indicative = \\t,pol => "tað" ++ copula ! t ! PSg P3 ++ negStr pol ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
Interrogative = \\t,pol => copula ! t ! PSg P3 ++ "tað" ++ negStr pol ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
Future = \\pol => "tað" ++ futureAux ! PSg P3 ++ negStr pol ++ "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
Conditional = \\pol => "tað" ++ conditionalAux ! PSg P3 ++ negStr pol ++ "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
Anterior = \\t,pol => "tað" ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ "verið" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ "tað" ++ negStr pol ++ "verið" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
Nonfinite = "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite ;
Participle = \\_ => "verið" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ++ vp.Nonfinite
} ;
AdjAsCN ap = mkCN (ap.s ! Strong ! Masc ! Sg ! Nom) Masc ;
AdjAsNP ap = mkNP (ap.s ! Strong ! Masc ! Sg ! Nom) Masc Sg P3 ;
PredIAdvVP iadv vp = {
s = \\t,pol => iadv.s ++ vp.Nonfinite ;
anterior = \\t,pol => iadv.s ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ vp.Converb ;
future = \\pol => iadv.s ++ futureAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite ;
conditional = \\pol => iadv.s ++ conditionalAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite
} ;
EmbedSSlash ss = {s = ss.s} ;
ReflPron = mkNP "seg" Masc Sg P3 ;
ReflPoss num cn = {
s = \\c => reflPoss cn.g num.n c ++ cn.p ! num.n ! c ;
g = cn.g ; n = num.n ; p = P3
} ;
PredetRNP pred rnp = rnp ** {s = \\c => pred.s ++ rnp.s ! c} ;
AdvRNP np prep rnp = rnp ** {s = \\c => rnp.s ! c ++ prep.s ++ np.s ! prep.c} ;
AdvRVP vp prep rnp = vp ** {
Converb = vp.Converb ++ prep.s ++ rnp.s ! prep.c ;
Imperative = \\n => vp.Imperative ! n ++ prep.s ++ rnp.s ! prep.c ;
Indicative = \\t,pol,g,p => vp.Indicative ! t ! pol ! g ! p ++ prep.s ++ rnp.s ! prep.c ;
Remainder = \\pol,g,p => vp.Remainder ! pol ! g ! p ++ prep.s ++ rnp.s ! prep.c ;
Nonfinite = vp.Nonfinite ++ prep.s ++ rnp.s ! prep.c ;
Participle = \\t => vp.Participle ! t ++ prep.s ++ rnp.s ! prep.c
} ;
AdvRAP ap prep rnp = {s = \\d,g,n,c => ap.s ! d ! g ! n ! c ++ prep.s ++ rnp.s ! prep.c} ;
PossPronRNP pron num cn rnp = mkNP (pron.poss ! cn.g ! num.n ! Nom ++ cn.p ! num.n ! Nom ++ rnp.s ! Gen) cn.g num.n P3 ;
ConjRNP conj xs = mkNP (xs.s1 ! Nom ++ conj.s ++ xs.s2 ! Nom) xs.g Pl P3 ;
Base_rr_RNP x y = {s1 = x.s ; s2 = y.s ; g = x.g ; n = Pl ; p = P3} ;
Base_nr_RNP x y = {s1 = x.s ; s2 = y.s ; g = x.g ; n = Pl ; p = P3} ;
Base_rn_RNP x y = {s1 = x.s ; s2 = y.s ; g = x.g ; n = Pl ; p = P3} ;
Cons_rr_RNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c ; s2 = xs.s2 ; g = xs.g ; n = Pl ; p = P3} ;
Cons_nr_RNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c ; s2 = xs.s2 ; g = xs.g ; n = Pl ; p = P3} ;
ReflPossPron = {s = \\_,g,n,c => reflPoss g n c ; sp = Indef ; d = Weak} ;
CompoundN n1 n2 = mkCN (n1.s ! Indef ! Sg ! Nom ++ BIND ++ n2.s ! Indef ! Sg ! Nom) n2.g ;
CompoundAP n a = {s = \\d,g,num,c => n.s ! Indef ! Sg ! Nom ++ BIND ++ a.s ! d ! g ! num ! c} ;
GerundCN vp = mkCN vp.Nonfinite Neuter ;
GerundNP vp = mkNP vp.Nonfinite Neuter Sg P3 ;
GerundAdv vp = {s = vp.Nonfinite} ;
WithoutVP vp = {s = "uttan at" ++ vp.Nonfinite} ;
ByVP vp = {s = "við at" ++ vp.Nonfinite} ;
ApposNP np app = np ** {s = \\c => np.s ! c ++ "," ++ app.s ! Nom} ;
AdAdV ada adv = {s = ada.s ++ adv.s} ;
PositAdVAdj a = {s = a.s ! Strong ! Neuter ! Sg ! Nom} ;
CompS s = {s = \\_,_ => s.s} ;
CompQS qs = {s = \\_,_ => qs.s} ;
UttVPShort vp = {s = vp.Nonfinite} ;
ComplSlashPartLast vps np = {
Converb = vps.Converb ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.particle ++ vps.sc ;
Imperative = \\n => vps.imperative ! n ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.particle ++ vps.sc ;
Indicative = \\t,pol,g,p => vps.Indicative ! t ! p ++ negStr pol ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.particle ++ vps.sc ;
Finite = vps.Indicative ;
Remainder = \\pol,_,_ => negStr pol ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.particle ++ vps.sc ;
Nonfinite = vps.Nonfinite ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.particle ++ vps.sc ;
Participle = \\t => vps.Participle ! t ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.particle ++ vps.sc
} ;
UseComp_estar comp = {
Converb = "verið" ++ comp.s ! Masc ! Sg ;
Imperative = \\n => case n of {Sg => "ver" ; Pl => "verið"} ++ comp.s ! Masc ! n ;
Indicative = \\t,pol,g,p => copula ! t ! p ++ negStr pol ++ comp.s ! g ! persNumNumber p ;
Finite = copula ;
Remainder = \\pol,g,p => negStr pol ++ comp.s ! g ! persNumNumber p ;
Nonfinite = "vera" ++ comp.s ! Masc ! Sg ;
Participle = \\_ => "verið" ++ comp.s ! Masc ! Sg
} ;
UseComp_ser comp = {
Converb = "verið" ++ comp.s ! Masc ! Sg ;
Imperative = \\n => case n of {Sg => "ver" ; Pl => "verið"} ++ comp.s ! Masc ! n ;
Indicative = \\t,pol,g,p => copula ! t ! p ++ negStr pol ++ comp.s ! g ! persNumNumber p ;
Finite = copula ;
Remainder = \\pol,g,p => negStr pol ++ comp.s ! g ! persNumNumber p ;
Nonfinite = "vera" ++ comp.s ! Masc ! Sg ;
Participle = \\_ => "verið" ++ comp.s ! Masc ! Sg
} ;
SubjRelNP np rs = np ** {s = \\c => np.s ! c ++ rs.s ! np.g ! persNum np.n np.p} ;
theyNeutr_Pron = {
s = table {Nom => "tey" ; Acc => "tey" ; Dat => "teimum" ; Gen => "teirra"} ;
poss = \\_,_,_ => "teirra" ;
g = Neuter ; n = Pl ; p = P3
} ;
UttAccNP np = {s = np.s ! Acc} ;
UttDatNP np = {s = np.s ! Dat} ;
UttAccIP ip = {s = ip.s} ;
UttDatIP ip = {s = ip.s} ;
UseDAP dap = mkNP (dap.s ! Neuter ! Nom) Neuter dap.n P3 ;
UseDAPMasc dap = mkNP (dap.s ! Masc ! Nom) Masc dap.n P3 ;
UseDAPFem dap = mkNP (dap.s ! Fem ! Nom) Fem dap.n P3 ;
CardCNCard card cn = {s = \\_,c => card.s ! cn.g ! c ++ cn.s ! Indef ! card.n ! c ; n = Pl} ;
SubjunctRelCN cn rs = cn ** {
s = \\sp,n,c => cn.s ! sp ! n ! c ++ rs.s ! cn.g ! persNum n P3 ;
p = \\n,c => cn.p ! n ! c ++ rs.s ! cn.g ! persNum n P3
} ;
TPastSimple = {s = [] ; t = P.Past} ; TPastSimple = {s = [] ; t = P.Past} ;
} }