mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-09-18 08:16:05 -06:00
definitions moved from ParseExtendFao to ExtendFao
This commit is contained in:
+302
-1
@@ -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} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user