some more functions added to Slv by guessing and using Morgan Nilsson's grammar book

This commit is contained in:
aarne
2016-10-04 16:17:07 +00:00
parent 3e6f1f05f2
commit a533fc70d3
7 changed files with 33 additions and 8 deletions

View File

@@ -4,6 +4,7 @@ lincat
-- Sentence
Cl = {s : P.Tense => P.Anteriority => P.Polarity => Str} ;
Imp = {s : P.Polarity => Gender => Number => Str} ;
ClSlash = {s : P.Tense => P.Anteriority => P.Polarity => Str ; c2 : Prep} ; ----AR
-- Question
QCl = {s : P.Tense => P.Anteriority => P.Polarity => Str} ;
@@ -36,11 +37,11 @@ lincat
Prep = {s : Str; c : Case} ;
-- Open lexical classes, e.g. Lexicon
V = {s : VForm => Str};
VS = {s : VForm => Str};
V = {s : VForm => Str ; p : Str}; ----AR: +p particle
VS = {s : VForm => Str ; p : Str};
VQ = {s : VForm => Str};
VV = {s : VForm => Str};
V2 = {s : VForm => Str; c2 : Prep};
V2 = {s : VForm => Str; c2 : Prep ; p : Str}; ----AR: +p particle
A = {s : AForm => Str};

View File

@@ -1,5 +1,5 @@
concrete ConstructionSlv of Construction = CatSlv **
open ParadigmsSlv in {
open ParadigmsSlv, ResSlv in {
flags
coding=utf8;
@@ -33,4 +33,12 @@ lin
october_Month = mkN "oktober" "oktobra" "oktobru" "oktober" "oktobru" "oktobrom" "oktobra" "oktobrov" "oktobroma" "oktobra" "oktobrih" "oktobroma" "oktobri" "oktobrov" "oktobrom" "oktobre" "oktobrih" "oktobri" masculine ;
november_Month = mkN "november" "novembra" "novembru" "november" "novembru" "novembrom" "novembra" "novembrov" "novembroma" "novembra" "novembrih" "novembroma" "novembri" "novembrov" "novembrom" "novembre" "novembrih" "novembri" masculine ;
december_Month = mkN "december" "decembra" "decembru" "december" "decembru" "decembrom" "decembra" "decembrov" "decembroma" "decembra" "decembrih" "decembroma" "decembri" "decembrov" "decembrom" "decembre" "decembrih" "decembri" masculine ;
weekdayPunctualAdv w = {s = "v" ++ w.s ! Acc ! Sg} ; ----AR
weekdayHabitualAdv w = {s = "ob" ++ w.s ! Loc ! Pl} ; ----AR
weekdayNextAdv w = {s = "naslednjo" ++ w.s ! Acc ! Sg} ; ----AR
weekdayLastAdv w = {s = "prejšnjo" ++ w.s ! Acc ! Sg} ; ----AR
monthAdv w = {s = "w" ++ w.s ! Loc ! Sg} ; ----AR
}

View File

@@ -138,6 +138,8 @@ oper
mkV : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x25 : Str) -> V = worstV ;
} ;
particleV : V -> Str -> V = \v,p -> v ** {p = p} ;
-- Regular verbs are formed from two forms. Infinitive and 3rd person singular presens.
regV : (_,_ : Str) -> V = \hoditi,hodi ->
@@ -209,7 +211,8 @@ oper
VImper2 Sg => imp2sg;
VImper2 Dl => imp2dl;
VImper2 Pl => imp2pl
}
} ;
p = [] ; ----AR: +p
};
--Imperative forms are formed separetely. Pattern matching performed on thirdpersonsingular verbform.

View File

@@ -4,7 +4,11 @@ concrete QuestionSlv of Question = CatSlv ** open ResSlv,Prelude in {
lin
QuestVP ip vp = mkClause (ip.s ! Nom) ip.a False vp ;
QuestCl cl = {s = \\t,a,p => "ali" ++ cl.s ! t ! a ! p} ;
QuestSlash ip cls = {s = \\t,a,p => cls.c2.s ++ ip.s ! cls.c2.c ++ cls.s ! t ! a ! p} ;
QuestIAdv iadv cl = {s = \\t,a,p => iadv.s ++ cl.s ! t ! a ! p} ;
QuestIComp icomp np = mkClause icomp.s np.a np.isPron {s = copula ; s2 = \\_ => [] ; isCop = True} ;
CompIAdv a = a ;
CompIP p = ss (p.s ! Nom) ;
------AR END

View File

@@ -7,6 +7,8 @@ lin
s = \\p,g,n => vp.s ! p ! VImper2 n ++ vp.s2 ! {g=g; n=n; p=P2} ;
} ;
SlashVP np vp = mkClause (np.s ! Nom) np.a np.isPron vp ** {c2 = vp.c2} ;
UseCl t p cl = {
s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p
} ;

View File

@@ -29,6 +29,7 @@ lin
"mòje" "mòjega" "mòjemu" "mòjo" "mòjem" "mòjim"
"mòji" "mòjih" "mòjima" "mòji" "mòjih" "mòjima"
"mòja" "mòjih" "mòjim" "mòja" "mòjih" "mòjimi" Masc Sg P1 ;
if_Subj = ss "če" ;
in_Prep = mkPrep "v" locative ;
it_Pron = mkPron "ôno" "njêga" "njêga" "njêmu" "njêm" "njím"
("njegôv"|"njegòv") "njegôvega" "njegôvemu" ("njegôv"|"njegôvega") "njegôvem" "njegôvim"
@@ -41,6 +42,8 @@ lin
"njegôvi" "njegôvih" "njegôvima" "njegôvi" "njegôvih" "njegôvima"
"njegôva" "njegôvih" "njegôvim" "njegôva" "njegôvih" "njegôvimi" Neut Sg P3 ;
must_VV = regV "morati" "mora" ;
or_Conj = mkConj "ali" Sg ;
she_Pron = variants {mkPron "ôna" "njó" "njé" "njéj" "njéj" "njó" ;
mkPron "ôna" "njó" "njé" "njèj" "njèj" "njó" ;
mkPron "ôna" "njó" "njé" "njì" "njì" "njó"}
@@ -81,6 +84,7 @@ lin
"tȏ" "tȇga" "tȇmu" "tȏ" "tȇm" "tȇm"
"tî" "tȇh" "tȇma" "tî" "tȇh" "tȇma"
"tȃ" "tȇh" "tȇm" "tȃ" "tȇh" "tȇmi" Def ;
very_AdA = {s = "zelo"} ; ----AR
want_VV = regV "želeti" "želi";
we_Pron = mkPron "mí" "nàs" "nàs" "nàm" "nàs" "nàmi"
"nàš" "nášega" "nášemu" ("náši"|"nášega") "nášem" "nášim"
@@ -96,7 +100,7 @@ lin
when_Subj = {s="medtem ko"} ;
where_IAdv = {s="kje"} ;
whatSg_NP = mkNP "káj" "káj" "čésa" "čému" "čém" "čím" Neut Sg ; ----AR
whatSg_IP = mkNP "káj" "káj" "čésa" "čému" "čém" "čím" Neut Sg ; ----AR
whoSg_IP = mkNP "kdó" "kóga" "kóga" "kómu" "kóm" "kóm" Masc Sg ; ----AR
why_IAdv = {s="zakaj"} ;

View File

@@ -3,13 +3,13 @@ concrete VerbSlv of Verb = CatSlv ** open ResSlv, ParamX, Prelude in {
lin
UseV v =
{ s = \\p,vform => ne ! p ++ v.s ! vform ;
s2 = \\a => "" ;
s2 = \\a => v.p ; ----AR: +p particle
isCop = False
} ;
SlashV2a v =
{ s = \\p,vform => ne ! p ++ v.s ! vform ;
s2 = \\a => "" ;
s2 = \\a => v.p ; ----AR: +p particle
c2 = v.c2 ;
isCop = False
} ;
@@ -28,5 +28,8 @@ concrete VerbSlv of Verb = CatSlv ** open ResSlv, ParamX, Prelude in {
CompAP ap = {
s = \\agr => ap.s ! Indef ! inanimateGender agr.g ! Nom ! agr.n
} ;
CompAdv adv = {s = \\agr => adv.s} ; ----AR
CompNP np = {s = \\agr => np.s ! Nom} ; ----AR
}