Merge pull request #279 from inariksit/somali

Somali
This commit is contained in:
Inari Listenmaa
2019-08-27 16:53:12 +02:00
committed by GitHub
10 changed files with 133 additions and 66 deletions

View File

@@ -11,7 +11,14 @@ lin
-- ComparAdvAdjS : CAdv -> A -> S -> Adv ; -- more warmly than he runs -- ComparAdvAdjS : CAdv -> A -> S -> Adv ; -- more warmly than he runs
-- : Prep -> NP -> Adv ; -- : Prep -> NP -> Adv ;
PrepNP prep np = prep ** {s = [] ; np = nplite np} ; PrepNP prep np = prep ** {
np = case prep.isPoss of {
True => nplite emptyNP ;
False => nplite np } ;
miscAdv = case prep.isPoss of {
True => np.s ! Abs ++ prep.miscAdv ! np.a ;
False => prep.miscAdv ! Sg3 Masc }
} ;
-- Adverbs can be modified by 'adadjectives', just like adjectives. -- Adverbs can be modified by 'adadjectives', just like adjectives.

View File

@@ -84,7 +84,11 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
-- Constructed in StructuralSom. -- Constructed in StructuralSom.
Conj = {s2 : State => Str ; s1 : Str ; n : Number } ; Conj = {s2 : State => Str ; s1 : Str ; n : Number } ;
Subj = SS ; Subj = SS ;
Prep = ResSom.Prep ** {c2 : Preposition ; berri, sii, dhex : Str} ; Prep = ResSom.Prep ** {
isPoss : Bool ;
c2 : Preposition ;
berri, sii, dhex : Str ;
miscAdv : Agreement => Str } ;
@@ -94,9 +98,9 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
-- additional lexicon modules. -- additional lexicon modules.
V, V,
-- TODO: eventually proper lincats VV, -- verb-phrase-complement verb e.g. "want" -- TODO: VPs that have sentential complement use waxa as stm? see Nilsson p. 68
VV, -- verb-phrase-complement verb e.g. "want" VS, -- sentence-complement verb e.g. "claim"
VS, -- sentence-complement verb e.g. "claim" -- TODO: VPs that have VS use waxa as stm? see Nilsson p. 68 -- TODO: eventually different lincats
VQ, -- question-complement verb e.g. "wonder" VQ, -- question-complement verb e.g. "wonder"
VA, -- adjective-complement verb e.g. "look" VA, -- adjective-complement verb e.g. "look"
V2V, -- verb with NP and V complement e.g. "cause" V2V, -- verb with NP and V complement e.g. "cause"
@@ -121,6 +125,6 @@ linref
-- Cl = linCl ; -- Cl = linCl ;
VP = linVP VInf ; VP = linVP VInf ;
CN = linCN ; CN = linCN ;
Prep = \prep -> prep.s ! P3_Prep ++ prep.sii ++ prep.dhex ; Prep = \prep -> prep.s ! P3_Prep ++ prep.sii ++ prep.dhex ++ prep.miscAdv ! Sg3 Masc ;
S = \s -> linBaseCl (s.s ! False) ; S = \s -> linBaseCl (s.s ! False) ;
} }

View File

@@ -31,7 +31,13 @@ concrete IdiomSom of Idiom = CatSom ** open Prelude, ResSom, VerbSom in {
ExistIPAdv : IP -> Adv -> QCl ; -- which houses are there in Paris ExistIPAdv : IP -> Adv -> QCl ; -- which houses are there in Paris
-} -}
-- : VP -> VP ; -- : VP -> VP ;
--ProgrVP vp = vp ** { } ; ProgrVP vp = vp ** {
s = table {
VPres _ agr pol => vp.s ! VPres Progressive agr pol ;
VPast _ agr => vp.s ! VPast Progressive agr ;
VNegPast _ => vp.s ! VNegPast Progressive ;
x => vp.s ! x }
} ;
{- TODO: Saeed p. 92 optative {- TODO: Saeed p. 92 optative

View File

@@ -1,5 +1,5 @@
concrete LexiconSom of Lexicon = CatSom ** concrete LexiconSom of Lexicon = CatSom **
open ParadigmsSom,ResSom in { open ParadigmsSom, ResSom in {
---- ----
-- A -- A
@@ -63,7 +63,7 @@ lin car_N = mkN "baabuur" masc ;
-- lin carpet_N = mkN "" ; -- lin carpet_N = mkN "" ;
lin cat_N = mkN "bisad" ; lin cat_N = mkN "bisad" ;
-- lin ceiling_N = mkN "" ; -- lin ceiling_N = mkN "" ;
-- lin chair_N = mkN "" ; lin chair_N = mkN "kursi" ;
-- lin cheese_N = mkN "" ; -- lin cheese_N = mkN "" ;
-- lin child_N = mkN "" ; -- lin child_N = mkN "" ;
-- lin church_N = mkN "" ; -- lin church_N = mkN "" ;
@@ -74,7 +74,7 @@ lin city_N = mkN "magaalo" ;
-- lin cloud_N = mkN "" ; -- lin cloud_N = mkN "" ;
-- lin coat_N = mkN "" ; -- lin coat_N = mkN "" ;
-- lin cold_A = mkA "" ; -- lin cold_A = mkA "" ;
-- lin come_V = etorri_V ; lin come_V = mkV "iman" ;
-- lin computer_N = mkN "" ; -- lin computer_N = mkN "" ;
-- lin correct_A = mkA "" ; -- lin correct_A = mkA "" ;
-- lin count_V2 = mkV2 "" ; -- lin count_V2 = mkV2 "" ;
@@ -193,7 +193,7 @@ lin jump_V = mkV "bood" ;
-- lin knee_N = mkN "" ; -- lin knee_N = mkN "" ;
-- lin know_V2 = mkV2 "" ; -- lin know_V2 = mkV2 "" ;
-- lin know_VQ = mkVQ "" ; -- lin know_VQ = mkVQ "" ;
-- lin know_VS = mkVS "" ; lin know_VS = mkV "ogaan" ; -- copula ** {sii = "og"} ;
---- ----
@@ -211,7 +211,7 @@ lin language_N = mkN "af" ;
-- lin lie_V = mkV "" ; -- lin lie_V = mkV "" ;
-- lin like_V2 = mkV2 "" ; -- lin like_V2 = mkV2 "" ;
-- lin listen_V2 = mkV2 "" ; -- lin listen_V2 = mkV2 "" ;
-- lin live_V = mkV "" ; lin live_V = copula ** {sii = "nool"} ;
-- lin liver_N = mkN "" ; -- lin liver_N = mkN "" ;
-- lin long_A = mkA "" ; -- lin long_A = mkA "" ;
-- lin lose_V2 = mkV2 "" ; -- lin lose_V2 = mkV2 "" ;
@@ -304,7 +304,7 @@ lin salt_N = mkN "cusbo" ;
-- lin school_N = mkN "" ; -- lin school_N = mkN "" ;
-- lin science_N = mkN "" ; -- lin science_N = mkN "" ;
-- lin scratch_V2 = mkV2 "" ; -- lin scratch_V2 = mkV2 "" ;
-- lin sea_N = mkN "" ; lin sea_N = mkN "bad" fem ;
lin see_V2 = mkV2 "ark" ; lin see_V2 = mkV2 "ark" ;
-- lin seed_N = mkN "" ; -- lin seed_N = mkN "" ;
-- lin seek_V2 = mkV2 "" ; -- lin seek_V2 = mkV2 "" ;

View File

@@ -64,13 +64,14 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
True => glue predet.s det ; True => glue predet.s det ;
False => predet.s False => predet.s
} ; } ;
in np ** {s = \\c => in np ** {
case <np.isPron,predet.isPoss> of { s = \\c =>
<True,True> => np.empty ++ predetS ; case <np.isPron,predet.isPoss> of {
_ => np.s ! c ++ predetS} <True,True> => np.empty ++ predetS ;
_ => np.s ! c ++ predetS} ;
isPron = False ; -- NP it loses its pronoun status when Predet is added
} ; } ;
-- A noun phrase can also be postmodified by the past participle of a -- A noun phrase can also be postmodified by the past participle of a
-- verb, by an adverb, or by a relative clause -- verb, by an adverb, or by a relative clause

View File

@@ -1,4 +1,4 @@
resource ParadigmsSom = open CatSom, ResSom, ParamSom, Prelude in { resource ParadigmsSom = open CatSom, ResSom, ParamSom, NounSom, Prelude in {
oper oper
@@ -104,17 +104,17 @@ oper
mkPrep = overload { mkPrep = overload {
mkPrep : Str -> CatSom.Prep = \s -> mkPrep : Str -> CatSom.Prep = \s ->
lin Prep ((ResSom.mkPrep s s s s s s) ** { emptyPrep ** (ResSom.mkPrep s s s s s s) ; -- ** {
c2=noPrep ; sii,dhex,berri=[]}) ;
mkPrep : (x1,_,_,_,_,x6 : Str) -> CatSom.Prep = \a,b,c,d,e,f -> mkPrep : (x1,_,_,_,_,x6 : Str) -> CatSom.Prep = \a,b,c,d,e,f ->
lin Prep ((ResSom.mkPrep a b c d e f) ** { emptyPrep ** (ResSom.mkPrep a b c d e f) ; --
c2=noPrep ; sii,dhex,berri=[]}) ;
mkPrep : Preposition -> CatSom.Prep = \p -> mkPrep : Preposition -> CatSom.Prep = \p ->
lin Prep ((prep p) ** {sii,dhex,berri=[]}) ; emptyPrep ** (prep p) ;
mkPrep : CatSom.Prep -> (x1,x2,x3 : Str) -> CatSom.Prep = \p,s,t,u -> mkPrep : CatSom.Prep -> (x1,x2,x3 : Str) -> CatSom.Prep = \p,s,t,u ->
p ** {berri = s ; sii = t ; dhex = u} ; p ** {berri = s ; sii = t ; dhex = u} ;
} ; } ;
possPrep : N -> CatSom.Prep ; -- Nouns like dhex that are used with possessive suffix to form adverbials
-- mkConj : (_,_ : Str) -> Number -> Conj = \s1,s2,num -> -- mkConj : (_,_ : Str) -> Number -> Conj = \s1,s2,num ->
-- lin Conj { s = s1 ; s2 = s2 } ; -- lin Conj { s = s1 ; s2 = s2 } ;
@@ -125,7 +125,7 @@ oper
berri = s ; berri = s ;
c2 = noPrep ; c2 = noPrep ;
np = {s = [] ; a = P3_Prep} ; np = {s = [] ; a = P3_Prep} ;
sii,dhex = [] sii,dhex,miscAdv = []
} ; } ;
mkAdV : Str -> AdV = \s -> lin AdV {s = s} ; mkAdV : Str -> AdV = \s -> lin AdV {s = s} ;
@@ -216,6 +216,24 @@ oper
mkV3 : (sug : Str) -> (_,_ : Preposition) -> V3 = \s,p,q -> lin V3 (regV s ** {c2 = p ; c3 = q}) ; mkV3 : (sug : Str) -> (_,_ : Preposition) -> V3 = \s,p,q -> lin V3 (regV s ** {c2 = p ; c3 = q}) ;
mkV3 : V -> (_,_ : Preposition) -> V2 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) ; mkV3 : V -> (_,_ : Preposition) -> V2 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) ;
} ; } ;
possPrep : N -> CatSom.Prep = \dhex -> emptyPrep ** {
miscAdv = \\agr =>
let qnt = PossPron (pronTable ! agr) ;
num = getNum agr ;
art = gda2da dhex.gda ! Sg ;
det = qnt.s ! art ! Abs ; -- this includes BIND
in dhex.s ! Def Sg ++ det ;
isPoss = True
} ;
emptyPrep : CatSom.Prep = lin Prep {
sii,berri,dhex = [] ;
miscAdv = \\_ => [] ;
s = \\_ => [] ;
c2 = noPrep ;
isPoss = False
} ;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
} }

View File

@@ -247,7 +247,7 @@ oper
s = \\_ => [] ; -- the string `la' comes from Passive (: PrepCombination) s = \\_ => [] ; -- the string `la' comes from Passive (: PrepCombination)
a = Impers ; isPron = True ; sp = \\_ => "" ; a = Impers ; isPron = True ; sp = \\_ => "" ;
empty = [] ; st = Definite ; empty = [] ; st = Definite ;
poss = {s, short = quantTable "??" ; sp = gnTable "??" "??" "??"} poss = {s, short = quantTable "iis" ; sp = gnTable "iis" "iis" "uwiis"}
} }
} ; } ;
@@ -463,15 +463,14 @@ oper
BaseVerb : Type = { BaseVerb : Type = {
s : VForm => Str ; s : VForm => Str ;
} ; } ;
Verb : Type = BaseVerb ** { Verb : Type = BaseVerb ** {
sii : Str ; -- closed class of particles: sii, soo, kala, wada (Saeed 171) sii : Str ; -- closed class of particles: sii, soo, kala, wada (Saeed 171)
dhex : Str ; -- closed class of adverbials: hoos, kor, dul, dhex, … dhex : Str ; -- closed class of adverbials: hoos, kor, dul, dhex, …
isCopula : Bool ;
} ; } ;
Verb2 : Type = Verb ** {c2 : Preposition} ; Verb2 : Type = Verb ** {c2 : Preposition} ;
Verb3 : Type = Verb2 ** {c3 : Preposition} ; Verb3 : Type = Verb2 ** {c3 : Preposition} ;
-- Saeed page 79: -- Saeed page 79:
-- "… the reference form is the imperative singular form -- "… the reference form is the imperative singular form
-- since it corresponds to the form of the basic root." -- since it corresponds to the form of the basic root."
@@ -566,6 +565,7 @@ oper
} ; } ;
sii, dhex = [] ; sii, dhex = [] ;
isCopula = False ;
} ; } ;
------------------------- -------------------------
@@ -637,7 +637,8 @@ oper
VImp Pl pol => if_then_Pol pol "ahaada" "ahaanina" ; VImp Pl pol => if_then_Pol pol "ahaada" "ahaanina" ;
VPres _ _ _ => nonExist -- use presCopula instead VPres _ _ _ => nonExist -- use presCopula instead
} ; } ;
sii, dhex = [] sii, dhex = [] ;
isCopula = True
} ; } ;
have_V : Verb = have_V : Verb =
@@ -672,7 +673,8 @@ oper
BaseAdv : Type = { BaseAdv : Type = {
sii, -- sii, soo, wala, kada go inside VP. sii, -- sii, soo, wala, kada go inside VP.
dhex, -- dhex, hoos, koor, dul, … go inside VP. dhex, -- dhex, hoos, koor, dul, … go inside VP.
berri : Str -- e.g. "tomorrow"; goes before VP. berri, -- AdV, e.g. "tomorrow"; goes before VP.
miscAdv : Str -- dump for any other kind of adverbial.
} ; } ;
Adverb : Type = BaseAdv ** { Adverb : Type = BaseAdv ** {
@@ -690,14 +692,13 @@ oper
obj2 : NPLite ; -- {s : Str ; a : PrepAgr} obj2 : NPLite ; -- {s : Str ; a : PrepAgr}
secObj : Str ; -- if two overt pronoun objects secObj : Str ; -- if two overt pronoun objects
vComp : Str ; -- VV complement vComp : Str ; -- VV complement
miscAdv : Str ; -- dump for any other kind of adverb, that isn't } ;
} ; -- in a closed class of particles or made with PrepNP.
VPSlash : Type = VerbPhrase ; VPSlash : Type = VerbPhrase ;
useV : Verb -> VerbPhrase = \v -> v ** { useV : Verb -> VerbPhrase = \v -> v ** {
comp = \\_ => <[],[]> ; comp = \\_ => <[],[]> ;
pred = NoPred ; pred = case v.isCopula of {True => Copula ; _ => NoPred} ;
vComp,berri,miscAdv,refl = [] ; vComp,berri,miscAdv,refl = [] ;
c2 = Single NoPrep ; c2 = Single NoPrep ;
obj2 = {s = [] ; a = P3_Prep} ; obj2 = {s = [] ; a = P3_Prep} ;
@@ -712,7 +713,7 @@ oper
c2 = combine v3.c2 v3.c3 ; c2 = combine v3.c2 v3.c3 ;
} ; } ;
passV2 : Verb2 -> VerbPhrase = \v2 -> passVP (useV v2) ; passV2 : Verb2 -> VerbPhrase = \v2 -> passVP (useVc v2) ;
passVP : VerbPhrase -> VerbPhrase = \vp -> vp ** { passVP : VerbPhrase -> VerbPhrase = \vp -> vp ** {
c2 = case vp.c2 of { c2 = case vp.c2 of {
@@ -739,9 +740,9 @@ oper
} ; } ;
insertComp : VPSlash -> NounPhrase -> VerbPhrase = \vp,np -> insertComp : VPSlash -> NounPhrase -> VerbPhrase = \vp,np ->
insertCompAgrPlus vp (nplite np) ; insertCompLite vp (nplite np) ;
insertCompAgrPlus : VPSlash -> NPLite -> VerbPhrase = \vp,nplite -> insertCompLite : VPSlash -> NPLite -> VerbPhrase = \vp,nplite ->
case vp.obj2.a of { case vp.obj2.a of {
-- If the old object is 3rd person (or nonexistent), we replace its agreement. -- If the old object is 3rd person (or nonexistent), we replace its agreement.
-- We keep both old and new string (=noun, if there was one) in obj2.s. -- We keep both old and new string (=noun, if there was one) in obj2.s.
@@ -765,20 +766,21 @@ oper
NoPrep => vp ** adv'' ; -- the adverb is not formed with PrepNP, e.g. "tomorrow" NoPrep => vp ** adv'' ; -- the adverb is not formed with PrepNP, e.g. "tomorrow"
_ => case vp.c2 of { _ => case vp.c2 of {
-- if free complement slots, introduce adv.np with insertComp -- if free complement slots, introduce adv.np with insertComp
Single NoPrep => insertCompAgrPlus (vp ** {c2 = Single adv.c2}) adv.np ** adv' ; Single NoPrep => insertCompLite (vp ** {c2 = Single adv.c2}) adv.np ** adv' ;
Single p => insertCompAgrPlus (vp ** {c2 = combine p adv.c2}) adv.np ** adv' ; Single p => insertCompLite (vp ** {c2 = combine p adv.c2}) adv.np ** adv' ;
-- if complement slots are full, just insert strings. -- if complement slots are full, just insert strings.
_ => vp ** adv'' _ => vp ** adv''
} }
} where { } where {
adv' : {sii,dhex,berri : Str} = { -- adv.np done with insertComp adv' : {sii,dhex,berri,miscAdv : Str} = { -- adv.np done with insertComp
sii = vp.sii ++ adv.sii ; sii = vp.sii ++ adv.sii ;
dhex = vp.dhex ++ adv.dhex ; dhex = vp.dhex ++ adv.dhex ;
berri = vp.berri ++ adv.berri } ; berri = vp.berri ++ adv.berri ;
miscAdv = vp.miscAdv ++ adv.miscAdv} ;
adv'' : {sii,dhex,berri,miscAdv : Str} -- adv.np inserted into miscAdv adv'' : {sii,dhex,berri,miscAdv : Str} -- adv.np inserted into miscAdv
= adv' ** {dhex = (prepTable ! adv.c2).s ! adv.np.a ++ adv.dhex ; = adv' ** {dhex = (prepTable ! adv.c2).s ! adv.np.a ++ adv.dhex ;
miscAdv = adv.np.s} miscAdv = adv.miscAdv ++ adv.np.s}
} ; } ;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Sentences etc. -- Sentences etc.
@@ -839,10 +841,10 @@ oper
_ => stmarkerNoContr ! subj.a ! p }} ; _ => stmarkerNoContr ! subj.a ! p }} ;
in (wordOrder subjnoun subjpron stm obj pred vp) ; in (wordOrder subjnoun subjpron stm obj pred vp) ;
} where { } where {
vp = case isPassive vps of { vp : VerbPhrase = case isPassive vps of {
True => complSlash (insertComp vps np) ; True => complSlash (insertComp vps np) ;
_ => complSlash vps } ; _ => complSlash vps } ;
subj = case isPassive vps of {True => impersNP ; _ => np} subj : NounPhrase = case isPassive vps of {True => impersNP ; _ => np}
} ; } ;
wordOrder : (sn,sp : Str) -> (stm,obj : {p1,p2 : Str}) -> {fin,inf : Str} -> VerbPhrase -> BaseCl = wordOrder : (sn,sp : Str) -> (stm,obj : {p1,p2 : Str}) -> {fin,inf : Str} -> VerbPhrase -> BaseCl =
@@ -862,7 +864,7 @@ oper
++ vp.miscAdv } ; ---- NB. Only used if there are several adverbs. ++ vp.miscAdv } ; ---- NB. Only used if there are several adverbs.
---- Primary places for adverbs are obj, sii or dhex. ---- Primary places for adverbs are obj, sii or dhex.
VFun : Type = Tense -> Anteriority -> Polarity -> Agreement -> Verb VFun : Type = Tense -> Anteriority -> Polarity -> Agreement -> BaseVerb
-> {fin : Str ; inf : Str} ; -> {fin : Str ; inf : Str} ;
vf : ClType -> VFun = \clt -> case clt of { vf : ClType -> VFun = \clt -> case clt of {
@@ -881,13 +883,13 @@ oper
} }
where { where {
agrPol : {agr:Agreement ; pol:Polarity} = {agr=agr; pol=p} ; agrPol : {agr:Agreement ; pol:Polarity} = {agr=agr; pol=p} ;
pastV : Verb -> Str = \v -> pastV : BaseVerb -> Str = \v ->
case p of { Neg => v.s ! VNegPast Simple ; case p of { Neg => v.s ! VNegPast Simple ;
Pos => v.s ! VPast Simple (agr2vagr agr) } ; Pos => v.s ! VPast Simple (agr2vagr agr) } ;
presV : Verb -> Str = \v -> v.s ! VPres Simple (agr2vagr agr) p ; presV : BaseVerb -> Str = \v -> v.s ! VPres Simple (agr2vagr agr) p ;
condNegV : Verb -> Str = \v -> case agr of { condNegV : BaseVerb -> Str = \v -> case agr of {
Sg2|Sg3 Fem Sg2|Sg3 Fem
|Pl2 => v.s ! VNegCond SgFem ; |Pl2 => v.s ! VNegCond SgFem ;
Pl1 _ => v.s ! VNegCond PlInv ; Pl1 _ => v.s ! VNegCond PlInv ;
@@ -936,7 +938,8 @@ oper
++ adv.sii ++ adv.sii
++ (prepTable ! adv.c2).s ! adv.np.a ++ (prepTable ! adv.c2).s ! adv.np.a
++ adv.dhex ++ adv.dhex
++ adv.np.s ; ++ adv.np.s
++ adv.miscAdv ;
linBaseCl : BaseCl -> Str = \b -> b.beforeSTM ++ b.stm ++ b.afterSTM ; linBaseCl : BaseCl -> Str = \b -> b.beforeSTM ++ b.stm ++ b.afterSTM ;
} }

View File

@@ -55,11 +55,10 @@ lin or_Conj = {s2 = \\_ => "ama" ; s1 = [] ; n = Sg} ; -- mise with interrogativ
--lin how8many_IDet = R.indefDet "" pl ; --lin how8many_IDet = R.indefDet "" pl ;
lin all_Predet = {s = "giddi" ; isPoss = True ; da = M GA} ; lin all_Predet = {s = "giddi" ; isPoss = True ; da = M GA} ;
--lin not_Predet = { s = "" } ;
--lin only_Predet = { s = "" } ;
lin most_Predet = {s = "badi" ; isPoss = True ; da = F DA} ;
{- {-
lin not_Predet = { s = "" } ;
lin only_Predet = { s = "" } ;
lin most_Predet = { s = "" } ;
lin every_Det = R.defDet [] pl ** lin every_Det = R.defDet [] pl **
{ s = mkVow } ; { s = mkVow } ;
lin few_Det = R.indefDet "" pl ; lin few_Det = R.indefDet "" pl ;
@@ -67,12 +66,12 @@ lin many_Det = R.indefDet "" pl ;
lin much_Det = R.indefDet "" sg ; lin much_Det = R.indefDet "" sg ;
-} -}
lin somePl_Det = { lin somePl_Det = {
sp = \\_,_ => "qaar" ;
isPoss, isNum = False ;
st = Definite ; -- NB. Indefinite means actually only IndefArt.
n = Pl ;
s = \\x,_ => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ; s = \\x,_ => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ;
shortPoss = \\x => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ; shortPoss = \\x => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ;
sp = \\_,_ => "qaarkood" ;
isPoss, isNum = False ;
n = Pl ;
st = Definite -- NB. Indefinite is really only reserved for IndefArt NumSg.
} ; } ;
lin someSg_Det = somePl_Det ** { lin someSg_Det = somePl_Det ** {
@@ -82,8 +81,7 @@ lin someSg_Det = somePl_Det ** {
F x => \\_ => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ; F x => \\_ => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ;
shortPoss = table { shortPoss = table {
M x => BIND ++ defStems ! M x ++ BIND ++ "a qaarkiis" ; M x => BIND ++ defStems ! M x ++ BIND ++ "a qaarkiis" ;
F x => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ; F x => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" }
sp = \\g,c => case g of {Fem => "qaarkeed" ; _ => "qaarkiis"}
} ; } ;
@@ -112,24 +110,26 @@ oper
-- Prep -- Prep
lin above_Prep = mkPrep (mkPrep ka) [] [] "dul" ; lin above_Prep = mkPrep (mkPrep ka) [] [] "dul" ;
-- lin after_Prep = mkPrep "" ; -- lin after_Prep = mkPrep ""
-- lin before_Prep = mkPrep "" ; -- lin before_Prep = mkPrep "" ;
-- lin behind_Prep = mkPrep "" ; -- lin behind_Prep = mkPrep "" ;
-- lin between_Prep = mkPrep "" ; lin between_Prep = possPrep (nUl "dhex") ;
-- lin by8agent_Prep = mkPrep ; -- lin by8agent_Prep = mkPrep ;
-- lin by8means_Prep = mkPrep ; -- lin by8means_Prep = mkPrep ;
-- lin during_Prep = mkPrep ; -- lin during_Prep = mkPrep ;
-- lin except_Prep = mkPrep ; -- lin except_Prep = mkPrep ;
-- lin for_Prep = mkPrep ; -- lin for_Prep = mkPrep ;
-- lin from_Prep = mkPrep "" ; -- lin from_Prep = mkPrep "" ;
-- lin in8front_Prep = mkPrep "" ; lin in8front_Prep = possPrep (nUl "hor") ;
lin in_Prep = mkPrep ku ; lin in_Prep = mkPrep ku ;
lin on_Prep = mkPrep ku ; lin on_Prep = mkPrep ku ;
-- lin part_Prep = mkPrep ; -- lin part_Prep = mkPrep ;
-- lin possess_Prep = mkPrep ; -- lin possess_Prep = mkPrep ;
-- lin through_Prep = mkPrep ; -- lin through_Prep = mkPrep ;
-- lin to_Prep = mkPrep ; -- lin to_Prep = mkPrep ;
-- lin under_Prep = mkPrep "" ; lin under_Prep =
let hoos : CatSom.Prep = possPrep (nUl "hoos")
in hoos ** {c2 = Ku} ;
lin with_Prep = mkPrep la ; lin with_Prep = mkPrep la ;
-- lin without_Prep = mkPrep ; -- lin without_Prep = mkPrep ;

View File

@@ -1,4 +1,4 @@
concrete VerbSom of Verb = CatSom ** open ResSom, Prelude in { concrete VerbSom of Verb = CatSom ** open ResSom, AdverbSom, Prelude in {
lin lin
@@ -20,10 +20,14 @@ lin
vComp = vp.vComp ++ vp.s ! VInf ; vComp = vp.vComp ++ vp.s ! VInf ;
pred = NoPred ; pred = NoPred ;
} ; } ;
{-
-- : VS -> S -> VP ;
ComplVS vs s = ;
-- : VS -> S -> VP ;
ComplVS vs s =
let vps = useV vs ;
subord = SubjS {s="in"} s ;
in vps ** {obj2 = {s = subord.berri ; a = P3_Prep}} ;
{-
-- : VQ -> QS -> VP ; -- : VQ -> QS -> VP ;
ComplVQ vq qs = ; ComplVQ vq qs = ;

View File

@@ -63,6 +63,13 @@ Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSla
LangSom: hilib cusbo waa lagu dari karaa LangSom: hilib cusbo waa lagu dari karaa
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplVV can_VV (ComplSlash (Slash3V3 add_V3 (MassNP (UseN meat_N))) (MassNP (UseN salt_N))))))) NoVoc Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplVV can_VV (ComplSlash (Slash3V3 add_V3 (MassNP (UseN meat_N))) (MassNP (UseN salt_N))))))) NoVoc
--------------------------------------------------------------------------------
-- Other complements
--LangEng: we knew that he is coming
LangSom: in uu imanayo waa aynu ogaannay
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron we_Pron) (ComplVS know_VS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ProgrVP (UseV come_V)))))))) NoVoc
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Adverbials -- Adverbials
@@ -73,3 +80,20 @@ Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_P
-- LangEng: you can't jump above me -- LangEng: you can't jump above me
LangSom: iga BIND ma dul boodi karto LangSom: iga BIND ma dul boodi karto
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron youSg_Pron) (AdvVP (ComplVV can_VV (UseV jump_V)) (PrepNP above_Prep (UsePron i_Pron)))))) NoVoc Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron youSg_Pron) (AdvVP (ComplVV can_VV (UseV jump_V)) (PrepNP above_Prep (UsePron i_Pron)))))) NoVoc
-- LangEng: I am taught in front of the house
LangSom: waa laygu baraa guri BIND ga hor BIND tiis BIND a
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (PassV2 teach_V2) (PrepNP in8front_Prep (DetCN (DetQuant DefArt NumSg) (UseN house_N))))))) NoVoc
-- LangEng: I am taught in front of my mother
LangSom: waa laygu baraa hooya BIND day hor BIND teed BIND a
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (PassV2 teach_V2) (PrepNP in8front_Prep (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN2 mother_N2))))))) NoVoc
-- LangEng: I see a cat under the chair
LangSom: bisad waa aan ku arkaa kursi BIND ga hoos BIND tiis BIND a
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))) (PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN chair_N))))))) NoVoc
-- LangEng: my mother lives under the sea
LangSom: hooya BIND day waa ku nool tahay bad BIND da hoos BIND teed BIND a
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN2 mother_N2)) (AdvVP (UseV live_V) (PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN sea_N))))))) NoVoc