mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl
This commit is contained in:
@@ -8,18 +8,18 @@ FocusObjS nsubj head -- again might be wrong; more correct to call
|
|||||||
QuestIAdv advmod head -- "where does John sleep" cf. AdvVP
|
QuestIAdv advmod head -- "where does John sleep" cf. AdvVP
|
||||||
QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head?
|
QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head?
|
||||||
QuestQVP nsubj head
|
QuestQVP nsubj head
|
||||||
QuestSlash dobj head
|
QuestSlash obj head
|
||||||
QuestVP nsubj head
|
QuestVP nsubj head
|
||||||
IdetCN det head
|
IdetCN det head
|
||||||
|
|
||||||
PredSCVP csubj head
|
PredSCVP csubj head
|
||||||
|
|
||||||
ComplSlash head dobj
|
ComplSlash head obj
|
||||||
ComplSlashIP head dobj
|
ComplSlashIP head obj
|
||||||
Slash3V3 head dobj
|
Slash3V3 head obj
|
||||||
SlashV2VNP head dobj xcomp
|
SlashV2VNP head obj xcomp
|
||||||
PastPartAgentAP head dobj
|
PastPartAgentAP head obj
|
||||||
AdvQVP head dobj
|
AdvQVP head obj
|
||||||
|
|
||||||
Slash2V3 head iobj
|
Slash2V3 head iobj
|
||||||
|
|
||||||
@@ -157,12 +157,12 @@ TExclMark head dep -- punctuation in the middle in these three
|
|||||||
TFullStop head dep
|
TFullStop head dep
|
||||||
TQuestMark head dep
|
TQuestMark head dep
|
||||||
|
|
||||||
ComplV2 head dobj -- shortcuts in App
|
ComplV2 head obj -- shortcuts in App
|
||||||
ComplV2V head dobj xcomp
|
ComplV2V head obj xcomp
|
||||||
ComplV3 head iobj dobj ---- could be dobj dobj
|
ComplV3 head iobj obj ---- could be dobj dobj
|
||||||
PassAgentV2 head ncomp -- not sure
|
PassAgentV2 head ncomp -- not sure
|
||||||
RelV2 mark nsubj head
|
RelV2 mark nsubj head
|
||||||
QuestV2 dobj nsubj head
|
QuestV2 obj nsubj head
|
||||||
|
|
||||||
ModCN amod head -- in ResourceDemo
|
ModCN amod head -- in ResourceDemo
|
||||||
RSubjS mark advcl head
|
RSubjS mark advcl head
|
||||||
|
|||||||
@@ -105,6 +105,10 @@ abstract Extend = Cat ** {
|
|||||||
|
|
||||||
NominalizeVPSlashNP : VPSlash -> NP -> NP ;
|
NominalizeVPSlashNP : VPSlash -> NP -> NP ;
|
||||||
|
|
||||||
|
-- counterpart to ProgrVP, for VPSlash
|
||||||
|
|
||||||
|
ProgrVPSlash : VPSlash -> VPSlash;
|
||||||
|
|
||||||
-- existential for mathematics
|
-- existential for mathematics
|
||||||
|
|
||||||
ExistsNP : NP -> Cl ; -- there exists a number / there exist numbers
|
ExistsNP : NP -> Cl ; -- there exists a number / there exist numbers
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ lin
|
|||||||
PastPartAP = variants {} ; -- VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
|
PastPartAP = variants {} ; -- VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
|
||||||
PastPartAgentAP = variants {} ; -- VPSlash -> NP -> AP ; -- (opportunity) lost by the company
|
PastPartAgentAP = variants {} ; -- VPSlash -> NP -> AP ; -- (opportunity) lost by the company
|
||||||
NominalizeVPSlashNP = variants {} ; -- VPSlash -> NP -> NP ;
|
NominalizeVPSlashNP = variants {} ; -- VPSlash -> NP -> NP ;
|
||||||
|
ProgrVPSlash = variants {} ; -- VPSlash -> VPSlash ;
|
||||||
ExistsNP = ExistNP ; -- NP -> Cl ; -- there exists a number / there exist numbers
|
ExistsNP = ExistNP ; -- NP -> Cl ; -- there exists a number / there exist numbers
|
||||||
ExistCN cn = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
ExistCN cn = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||||
ExistMassCN cn = ExistNP (MassNP cn) ;
|
ExistMassCN cn = ExistNP (MassNP cn) ;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ concrete ExtendEng of Extend =
|
|||||||
ExistsNP, ExistCN, ExistMassCN, ExistPluralCN,
|
ExistsNP, ExistCN, ExistMassCN, ExistPluralCN,
|
||||||
FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP,
|
FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP,
|
||||||
GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP,
|
GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP,
|
||||||
PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN,
|
PassAgentVPSlash, PassVPSlash, ProgrVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN,
|
||||||
EmbedSSlash, PredIAdvVP, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash,
|
EmbedSSlash, PredIAdvVP, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash,
|
||||||
UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2
|
UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2
|
||||||
]
|
]
|
||||||
@@ -222,6 +222,8 @@ concrete ExtendEng of Extend =
|
|||||||
lin
|
lin
|
||||||
PassVPSlash vps = passVPSlash (lin VPS vps) [] ;
|
PassVPSlash vps = passVPSlash (lin VPS vps) [] ;
|
||||||
PassAgentVPSlash vps np = passVPSlash (lin VPS vps) ("by" ++ np.s ! NPAcc) ;
|
PassAgentVPSlash vps np = passVPSlash (lin VPS vps) ("by" ++ np.s ! NPAcc) ;
|
||||||
|
ProgrVPSlash vp = insertObjc (\\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a)
|
||||||
|
(predAux auxBe ** {c2 = vp.c2; gapInMiddle = vp.gapInMiddle; missingAdv = vp.missingAdv});
|
||||||
|
|
||||||
--- AR 7/3/2013
|
--- AR 7/3/2013
|
||||||
ComplSlashPartLast vps np = case vps.gapInMiddle of {
|
ComplSlashPartLast vps np = case vps.gapInMiddle of {
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ concrete LangFin of Lang =
|
|||||||
LexiconFin
|
LexiconFin
|
||||||
, ConstructionFin
|
, ConstructionFin
|
||||||
, DocumentationFin --# notpresent
|
, DocumentationFin --# notpresent
|
||||||
** {
|
, MarkupFin - [stringMark]
|
||||||
|
** {
|
||||||
flags startcat = Phr ; unlexer = text ; lexer = finnish ;
|
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
9
src/finnish/LangFin.labels
Normal file
9
src/finnish/LangFin.labels
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
* {"en","et","ei","emme","ette","eivät","älä","älkää"} PART neg head
|
||||||
|
UseComp {"olen","olet","on","olemme","olette","ovat","olin","olit","oli","olimme","olitte","olivat","olisin","olisit","olisi","olisimme","olisitte","olisivat","ole","olko"} VERB cop head
|
||||||
|
CompAdv {"olen","olet","on","olemme","olette","ovat","olin","olit","oli","olimme","olitte","olivat","olisin","olisit","olisi","olisimme","olisitte","olisivat","ole","olko"} VERB cop head
|
||||||
|
CompAP {"olen","olet","on","olemme","olette","ovat","olin","olit","oli","olimme","olitte","olivat","olisin","olisit","olisi","olisimme","olisitte","olisivat","ole","olko"} VERB cop head
|
||||||
|
CompNP {"olen","olet","on","olemme","olette","ovat","olin","olit","oli","olimme","olitte","olivat","olisin","olisit","olisi","olisimme","olisitte","olisivat","ole","olko"} VERB cop head
|
||||||
|
CompCN {"olen","olet","on","olemme","olette","ovat","olin","olit","oli","olimme","olitte","olivat","olisin","olisit","olisi","olisimme","olisitte","olisivat","ole","olko"} VERB cop head
|
||||||
|
PredVP {"olen","olet","on","olemme","olette","ovat","olin","olit","oli","olimme","olitte","olivat","olisin","olisit","olisi","olisimme","olisitte","olisivat","ole","olko"} AUX aux head
|
||||||
|
ComplVS {"että"} PART mark xcomp
|
||||||
|
|
||||||
15
src/finnish/MarkupFin.gf
Normal file
15
src/finnish/MarkupFin.gf
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
--# -path=.:../abstract:../common
|
||||||
|
|
||||||
|
concrete MarkupFin of Markup = CatFin, MarkHTMLX ** {
|
||||||
|
|
||||||
|
lin
|
||||||
|
MarkupCN m cn = cn ** {s = \\nf => appMark m (cn.s ! nf)} ;
|
||||||
|
MarkupNP m np = np ** {s = \\c => appMark m (np.s ! c)} ;
|
||||||
|
MarkupAP m ap = ap ** {s = \\b,nf => appMark m (ap.s ! b ! nf)} ;
|
||||||
|
MarkupAdv m adv = {s = appMark m adv.s} ;
|
||||||
|
MarkupS m s = {s = appMark m s.s} ;
|
||||||
|
MarkupUtt m utt = {s = appMark m utt.s} ;
|
||||||
|
MarkupPhr m phr = {s = appMark m phr.s} ;
|
||||||
|
MarkupText m txt = {s = appMark m txt.s} ;
|
||||||
|
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
10
src/icelandic/LangIce.labels
Normal file
10
src/icelandic/LangIce.labels
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
* {"ekki"} PART neg head
|
||||||
|
* {"hef","hefur","hafa","höfum","hafði","hafið","hafðir","hafð","höfðuð","höfðu","höfðum","mun","munt","munu","munum","myndi","myndir","mynduð","myndum","myndu"} AUX aux head
|
||||||
|
* {"kan","kunde","kunnat","måste"} AUX aux head
|
||||||
|
UseComp {"verið","vera","var","voru","vorum","voruð","varst","er","eru","erum","ert"} VERB cop head
|
||||||
|
CompAdv {"verið","vera","var","voru","vorum","voruð","varst","er","eru","erum","ert"} VERB cop head
|
||||||
|
CompAP {"verið","vera","var","voru","vorum","voruð","varst","er","eru","erum","ert"} VERB cop head
|
||||||
|
CompNP {"verið","vera","var","voru","vorum","voruð","varst","er","eru","erum","ert"} VERB cop head
|
||||||
|
CompCN {"verið","vera","var","voru","vorum","voruð","varst","er","eru","erum","ert"} VERB cop head
|
||||||
|
ComplVV {"að"} PART mark xcomp
|
||||||
|
ComplVS {"að"} PART mark xcomp
|
||||||
@@ -1102,7 +1102,8 @@ resource MorphoIce = ResIce ** open Prelude, (Predef=Predef), ResIce in {
|
|||||||
getðiditi : Str -> Str = \s -> case s of {
|
getðiditi : Str -> Str = \s -> case s of {
|
||||||
_ + "ði" => "ði" ;
|
_ + "ði" => "ði" ;
|
||||||
_ + "di" => "di" ;
|
_ + "di" => "di" ;
|
||||||
_ + "ti" => "ti"
|
_ + "ti" => "ti" ;
|
||||||
|
_ => Predef.error ("no telja type past ending for" ++ s)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
param
|
param
|
||||||
|
|||||||
@@ -278,13 +278,19 @@ resource ParadigmsIce = open
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
mk1A : Str -> A = \s -> lin A (aForms2Adjective
|
mk1A : Str -> A = \s -> lin A (aForms2Adjective
|
||||||
(weakPosit s []) (strongPosit1 s) (compar1 s) (weakSuperl s []) (strongSuperl1 s) (regAAdv1 s)) ;
|
(weakPosit s s) (strongPosit1 s) (compar1 s) (weakSuperl s s) (strongSuperl1 s) (regAAdv1 s)) ; --- AR 2019-08-08: second arguments of weak declensions were [], producing only endings
|
||||||
|
|
||||||
mk2A : (_,_ : Str) -> A = \mas,fem -> lin A (aForms2Adjective
|
mk2A : (_,_ : Str) -> A = \mas,fem -> case mas of {
|
||||||
(weakPosit mas fem) (strongPosit2 mas fem) (compar2 mas fem) (weakSuperl mas fem) (strongSuperl2 mas fem) (regAAdv2 mas fem)) ;
|
_ + ("ll"|"nn") => mk1A mas ; ---- AR 2019-08-08 ; the case below does not work
|
||||||
|
_ => lin A (aForms2Adjective
|
||||||
|
(weakPosit mas fem) (strongPosit2 mas fem) (compar2 mas fem) (weakSuperl mas fem) (strongSuperl2 mas fem) (regAAdv2 mas fem))
|
||||||
|
} ;
|
||||||
|
|
||||||
mk3A : (_,_,_ : Str) -> A = \mas,fem,com -> lin A (aForms2Adjective
|
mk3A : (_,_,_ : Str) -> A = \mas,fem,com -> case mas of {
|
||||||
(weakPosit mas fem) (strongPosit2 mas fem) (compar1 com) (weakSuperl com []) (strongSuperl1 com) (regAAdv2 mas fem)) ;
|
_ + ("ll"|"nn") => mk1A mas ; ---- AR 2019-08-08 ; the case below does not work
|
||||||
|
_ => lin A (aForms2Adjective
|
||||||
|
(weakPosit mas fem) (strongPosit2 mas fem) (compar1 com) (weakSuperl com []) (strongSuperl1 com) (regAAdv2 mas fem))
|
||||||
|
} ;
|
||||||
|
|
||||||
strongPosit1 : Str -> AForms = \s -> case s of {
|
strongPosit1 : Str -> AForms = \s -> case s of {
|
||||||
#consonant* + "ei" + ("ll" | "nn") => dSeinn s ;
|
#consonant* + "ei" + ("ll" | "nn") => dSeinn s ;
|
||||||
|
|||||||
337
src/icelandic/SmallDictIce.gf
Normal file
337
src/icelandic/SmallDictIce.gf
Normal file
@@ -0,0 +1,337 @@
|
|||||||
|
concrete SmallDictIce of SmallDictIceAbs = CatIce **
|
||||||
|
open
|
||||||
|
ParadigmsIce, (I=WiktIrregIce)
|
||||||
|
in {
|
||||||
|
|
||||||
|
-- monolingual dictionary bootstrapped from LexIce
|
||||||
|
-- AR 2019-08-07
|
||||||
|
|
||||||
|
lin anda_V = mkV "anda" "anda" "andaði" "andaður"; -- some bug somewhere...
|
||||||
|
lin aska_N = mkN "aska" feminine ;
|
||||||
|
lin auga_N = mkN "auga" neuter ;
|
||||||
|
lin auðveldur_A = mkA "auðveldur" ;
|
||||||
|
lin bak_N = mkN "bak" neuter ;
|
||||||
|
lin banki_N = mkN "banki" masculine ;
|
||||||
|
lin barn_N = mkN "barn" neuter ;
|
||||||
|
lin bein_N = mkN "bein" neuter ;
|
||||||
|
lin beinn_A = mkA "beinn" ;
|
||||||
|
lin beittur_A = mkA "beittur" ;
|
||||||
|
lin belja_N = mkN "belja" feminine ;
|
||||||
|
lin berja_V = (mkV "berja") ;
|
||||||
|
lin beygja_V = mkV "beygja" "beygi" ;
|
||||||
|
lin binda_V = I.binda_V ;
|
||||||
|
lin biðja_V = I.biðja_V ;
|
||||||
|
lin blautur_A = mkA "blautur" ;
|
||||||
|
lin blár_A = mkA "blár" "blá" ;
|
||||||
|
lin blása_V = I.blása_V ;
|
||||||
|
lin blóm_N = mkN "blóm" neuter ;
|
||||||
|
lin blóð_N = mkN "blóð" neuter ;
|
||||||
|
lin borg_N = mkN "borg" "borgir" feminine ;
|
||||||
|
lin borð_N = mkN "borð" neuter ;
|
||||||
|
lin borða_V = (mkV "borða" "borða" "borðaði" "borðaður") ;
|
||||||
|
lin brauð_N = mkN "brauð" neuter ;
|
||||||
|
lin breiður_A = mkA "breiður" ;
|
||||||
|
lin brenna_V = I.brenna_V ;
|
||||||
|
lin brjóst_N = mkN "brjóst" neuter ;
|
||||||
|
lin brjóta_V = I.brjóta_V ;
|
||||||
|
lin bróðir_N = mkN "bróðir" "bróður" "bræður" masculine ;
|
||||||
|
lin brúnn_A = mkA "brúnn" ;
|
||||||
|
lin bátur_N = mkN "bátur" masculine ;
|
||||||
|
lin bæta_V = mkV "bæta" "bæti" "bætti" "bættur" ;
|
||||||
|
lin bíll_N = mkN "bíll" masculine ;
|
||||||
|
lin bíta_V = I.bíta_V ;
|
||||||
|
lin bók_N = mkN "bók" "bókar" "bækur" feminine ;
|
||||||
|
lin bólgna_V = mkV "bólgna" "bólgna" "bólgnaði" "bólgnaður" ;
|
||||||
|
lin börkur_N = mkN "börkur" "barkar" "berkir" masculine ;
|
||||||
|
lin búð_N = mkN "búð" "búðir" feminine ;
|
||||||
|
lin dagblað_N = mkN "dagblað" neuter ;
|
||||||
|
lin dagur_N = mkN "dagur" masculine ;
|
||||||
|
lin detta_V = I.detta_V ;
|
||||||
|
lin deyja_V = I.deyja_V ;
|
||||||
|
lin drekka_V = I.drekka_V ;
|
||||||
|
lin drepa_V = I.drepa_V ;
|
||||||
|
lin drottning_N = mkN "drottning" feminine ;
|
||||||
|
lin dýr_N = mkN "dýr" neuter ;
|
||||||
|
lin eftir_V = (I.bíða_V) ;
|
||||||
|
lin egg_N = mkN "egg" neuter ;
|
||||||
|
lin eiginkona_N = mkCompoundN "eigin" (kona_N) ;
|
||||||
|
lin eiginmaður_N = mkCompoundN "eigin" (maður_N) ;
|
||||||
|
lin eldavél_N = mkN "eldavél" "eldavélar" feminine ;
|
||||||
|
lin eldur_N = mkN "eldur" "eldar" masculine ;
|
||||||
|
lin elska_V = (mkV "elska" "elska" "elskaði" "elskaður") ;
|
||||||
|
lin epli_N = mkN "epli" neuter ;
|
||||||
|
lin eyra_N = mkN "eyra" neuter ;
|
||||||
|
lin fallegur_A = mkA "fallegur" ;
|
||||||
|
lin fara_V = I.fara_V ;
|
||||||
|
lin faðir_N = mkN "faðir" "föður" "feður" masculine ;
|
||||||
|
lin ferða_V = mkV "ferða" "ferða" "ferðaði" "ferðaður" ; -- this verb only exists in the middle voice
|
||||||
|
lin finna_V = I.finna_V ;
|
||||||
|
lin fiskur_N = mkN "fiskur" masculine ;
|
||||||
|
lin fita_N = mkN "fita" feminine ;
|
||||||
|
lin fjall_N = mkN "fjall" neuter ;
|
||||||
|
lin fjöður_N = mkN "fjöður" "fjaðrir" feminine ;
|
||||||
|
lin fljóta_V = I.fljóta_V ;
|
||||||
|
lin fljúga_V = I.fljúga_V ;
|
||||||
|
lin flugvél_N = mkN "flugvél" "flugvélar" feminine ;
|
||||||
|
lin flæða_V = mkV "flæða" ;
|
||||||
|
lin friður_N = mkN "friður" masculine ;
|
||||||
|
lin frjósa_V = I.frjósa_V ;
|
||||||
|
lin fræ_N = mkN "fræ" neuter ;
|
||||||
|
lin frændi_N = mkN "frændi" masculine ; -- frænka is the feminine equivalent
|
||||||
|
lin fugl_N = mkN "fugl" masculine ;
|
||||||
|
lin fullur_A = mkA "fullur" ;
|
||||||
|
lin fótleggur_N = mkCompoundN "fót" (mkN "leggur" "leggjar" "leggir" masculine) ;
|
||||||
|
lin fótur_N = mkN "fótur" "fætur" masculine ;
|
||||||
|
lin gamall_A = mkA "gamall" ;
|
||||||
|
lin ganga_V = I.ganga_V ;
|
||||||
|
lin garður_N = mkN "garður" masculine ;
|
||||||
|
lin gefa_V = I.gefa_V ;
|
||||||
|
lin gera_V = (mkV "gera") ;
|
||||||
|
lin giftur_A = mkA "giftur" ;
|
||||||
|
lin gleyma_V = (mkV "gleyma") ;
|
||||||
|
lin gluggi_N = mkN "gluggi" masculine ;
|
||||||
|
lin grafa_V = I.grafa_V ;
|
||||||
|
lin gras_N = mkN "gras" neuter ;
|
||||||
|
lin grænn_A = mkA "grænn" ;
|
||||||
|
lin gull_N = mkN "gull" neuter ;
|
||||||
|
lin gulur_A = mkA "gulur" ;
|
||||||
|
lin gólf_N = mkN "gólf" neuter ;
|
||||||
|
lin góður_A = mkA "góður" "góð" "betri" ;
|
||||||
|
lin görn_N = mkN "görn" "garnir" feminine ;
|
||||||
|
lin gúmmí_N = mkN "gúmmí" neuter ;
|
||||||
|
lin halda_V = I.halda_V ;
|
||||||
|
lin hanski_N = mkN "hanski" masculine ;
|
||||||
|
lin hata_V = (mkV "hata" "hata" "hataði" "hataður") ;
|
||||||
|
lin hattur_N = mkN "hattur" masculine ;
|
||||||
|
lin haus_N = mkN "haus" masculine ;
|
||||||
|
lin heimskur_A = mkA "heimskur" ;
|
||||||
|
lin heitur_A = mkA "heitur" ;
|
||||||
|
lin hestur_N = mkN "hestur" masculine ;
|
||||||
|
lin heyra_V = (mkV "heyra") ;
|
||||||
|
lin himinn_N = mkN "himinn" masculine ;
|
||||||
|
lin hjarta_N = mkN "hjarta" neuter ;
|
||||||
|
lin hjól_N = mkN "hjól" neuter ;
|
||||||
|
lin hlaupa_V = I.hlaupa_V ;
|
||||||
|
lin hlusta_V = (mkV "hlusta" "hlusta" "hlustaði" "hlustaður") ;
|
||||||
|
lin hlæja_V = I.hlæja_V ;
|
||||||
|
lin hné_N = mkN "hné" neuter ;
|
||||||
|
lin hoppa_V = mkV "hoppa" "hoppa" ;
|
||||||
|
lin horfa_V = (mkV "horfa") ;
|
||||||
|
lin horn_N = mkN "horn" neuter ;
|
||||||
|
lin hreinn_A = mkA "hreinn" ;
|
||||||
|
lin hrækja_V = mkV "hrækja" ;
|
||||||
|
lin hugsa_V = mkV "hugsa" "hugsa" "hugsaði" "hugsaður" ;
|
||||||
|
lin hundur_N = mkN "hundur" masculine ;
|
||||||
|
lin hurð_N = mkN "hurð" "hurðir" feminine ;
|
||||||
|
lin hvítur_A = mkA "hvítur" ;
|
||||||
|
lin háls_N = mkN "háls" masculine ;
|
||||||
|
lin hár_N = mkN "hár" neuter ;
|
||||||
|
lin háskóli_N = mkN "háskóli" masculine ;
|
||||||
|
lin hæð_N = mkN "hæð" "hæðir" feminine ;
|
||||||
|
lin höfn_N = mkN "höfn" "hafnir" feminine ;
|
||||||
|
lin hönd_N = mkN "hönd" "hönd" "hendi" "handar" "hendur" "hendur" "höndum" "handa" feminine ;
|
||||||
|
lin húfa_N = mkN "húfa" feminine ;
|
||||||
|
lin hús_N = mkN "hús" neuter ;
|
||||||
|
lin húð_N = mkN "húð" "húðir" feminine ;
|
||||||
|
lin iðnaður_N = mkN "iðnaður" masculine ;
|
||||||
|
lin járn_N = mkN "járn" neuter ;
|
||||||
|
lin jörð_N = mkN "jörð" "jarðir" feminine ;
|
||||||
|
lin kaldur_A = mkA "kaldur" ;
|
||||||
|
lin kasta_V = (mkV "kasta" "kasta" "kastaði" "kastaður") ;
|
||||||
|
lin kaupa_V = (mkV "kaupa" "kaupi" "keypti" "keyptur" "keypt") ;
|
||||||
|
lin kenna_V = (mkV "kenna") ;
|
||||||
|
lin kennari_N = mkN "kennari" masculine ;
|
||||||
|
lin kind_N = mkN "kind" "kindar" "kindur" feminine ;
|
||||||
|
lin kirkja_N = mkN "kirkja" feminine ;
|
||||||
|
lin kjöt_N = mkN "kjöt" neuter ;
|
||||||
|
lin klettur_N = mkN "klettur" masculine ;
|
||||||
|
lin klippa_V = (mkV "klippa") ;
|
||||||
|
lin klár_A = mkA "klár" "klár" ;
|
||||||
|
lin klóra_V = (mkV "klóra" "klóra" "klóraði" "klóraður") ;
|
||||||
|
lin koma_V = I.koma_V ;
|
||||||
|
lin kona_N = mkN "kona" "konu" "konur" "kvenna" feminine ;
|
||||||
|
lin konungur_N = mkN "konungur" masculine ;
|
||||||
|
lin kreista_V = (mkV "kreista") ;
|
||||||
|
lin kringlóttur_A = mkA "kringlóttur" ;
|
||||||
|
lin kápa_N = mkN "kápa" feminine ;
|
||||||
|
lin köttur_N = mkN "köttur" "kattar" "kettir" masculine ;
|
||||||
|
lin lag_N = mkN "lag" neuter ;
|
||||||
|
lin lampi_N = mkN "lampi" masculine ;
|
||||||
|
lin land_N = mkN "land" neuter ;
|
||||||
|
lin langt_Adv = mkAdv "langt" ;
|
||||||
|
lin langur_A = mkA "langur" ;
|
||||||
|
lin lauf_N = mkN "lauf" neuter ;
|
||||||
|
lin leika_V = I.leika_V ;
|
||||||
|
lin leita_V = (mkV "leita" "leita" "leitaði" "leitaður") ;
|
||||||
|
lin lesa_V = I.lesa_V ;
|
||||||
|
lin lest_N = mkN "lest" "lestir" feminine ;
|
||||||
|
lin leðinilegur_A = mkA "leðinilegur" ;
|
||||||
|
lin leður_N = mkN "leður" neuter ;
|
||||||
|
lin lifa_V = mkV "lifa" ;
|
||||||
|
lin lifur_N = mkN "lifur" "lifrar" feminine ;
|
||||||
|
lin list_N = mkN "list" "listir" feminine ;
|
||||||
|
lin ljótur_A = mkA "ljótur" ;
|
||||||
|
lin ljúga_V = I.ljúga_V ;
|
||||||
|
lin loft_N = mkN "loft" neuter ;
|
||||||
|
lin loka_V = (mkV "loka" "loka" "lokaði" "lokaður") ;
|
||||||
|
lin láta_V = I.láta_V ;
|
||||||
|
lin læknir_N = mkN "læknir" "lækni" "lækni" "læknis" "læknar" "lækna" "læknum" "lækna" masculine ;
|
||||||
|
lin læra_V = (mkV "læra") ;
|
||||||
|
lin líklegur_A = mkA "líklegur" ;
|
||||||
|
lin lítill_A = mkA "lítill" "lítil" "minni" ;
|
||||||
|
lin lögregluþjónn_N = mkCompoundN "lögreglu" (mkN "þjónn" masculine) ;
|
||||||
|
lin lús_N = mkN "lús" "lýs" feminine ;
|
||||||
|
lin magi_N = mkN "magi" masculine ;
|
||||||
|
lin maður_N = mkN "maður" "manns" "menn" masculine ;
|
||||||
|
lin mikilvægur_A = mkA "mikilvægur" ;
|
||||||
|
lin mjólk_N = mkN "mjólk" "mjólk" "mjólk" "mjólkur" "mjólk" "mjólk" "mjólk" "mjólkur" feminine ;
|
||||||
|
lin munnur_N = mkN "munnur" masculine ;
|
||||||
|
lin myndavél_N = mkN "myndavél" "myndavélar" feminine ;
|
||||||
|
lin mála_V = (mkV "mála" "mála" "málaði" "málaður") ;
|
||||||
|
lin málfræði_N = mkN "málfræði" "málfræði" "málfræði" "málfræði" "málfræði" "málfræði" "málfræði" "málfræði" feminine ;
|
||||||
|
lin móðir_N = mkN "móðir" "mæður" feminine ;
|
||||||
|
lin nafn_N = mkN "nafn" neuter ;
|
||||||
|
lin nef_N = mkN "nef" neuter ;
|
||||||
|
lin nemandi_N = mkN "nemandi" masculine ;
|
||||||
|
lin nudda_V = (mkV "nudda" "nudda" "nuddaði" "nuddaður") ;
|
||||||
|
lin nálægur_A = mkA "nálægur" ;
|
||||||
|
lin nótt_N = mkN "nótt" "nætur" "nætur" "nótta" feminine ;
|
||||||
|
lin nögl_N = mkN "nögl" "naglar" "neglur" feminine ;
|
||||||
|
lin númer_N = mkN "númer" neuter ;
|
||||||
|
lin núna_Adv = mkAdv "núna" ;
|
||||||
|
lin nýr_A = mkA "nýr" "ný" ;
|
||||||
|
lin olía_N = mkN "olía" feminine ;
|
||||||
|
lin opna_V = (mkV "opna" "opna" "opnaði" "opnaður") ;
|
||||||
|
lin ormur_N = mkN "ormur" masculine ;
|
||||||
|
lin ostur_N = mkN "ostur" masculine ;
|
||||||
|
lin other_A = mkA "other" ;
|
||||||
|
lin pappír_N = mkN "pappír" masculine ;
|
||||||
|
lin penni_N = mkN "penni" masculine ;
|
||||||
|
lin persóna_N = mkN "persóna" feminine ;
|
||||||
|
lin plat_N = mkN "plat" neuter ;
|
||||||
|
lin pláneta_N = mkN "pláneta" feminine ;
|
||||||
|
lin prestur_N = mkN "prestur" masculine ;
|
||||||
|
lin prik_N = mkN "prik" neuter ;
|
||||||
|
lin rauður_A = mkA "rauður" ;
|
||||||
|
lin regla_N = mkN "regla" feminine ;
|
||||||
|
lin reipi_N = mkN "reipi" neuter ;
|
||||||
|
lin reykur_N = mkN "reykur" "reykjar" "reykir" masculine;
|
||||||
|
lin rigning_N = mkN "rigning" feminine ;
|
||||||
|
lin rotinn_A = mkA "rotinn" ;
|
||||||
|
lin ryk_N = mkN "ryk" neuter ;
|
||||||
|
lin réttur_A = mkA "réttur" ;
|
||||||
|
lin rófa_N = mkN "rófa" feminine ;
|
||||||
|
lin rót_N = mkN "rót" "rótar" "rætur" feminine ;
|
||||||
|
lin salt_N = mkN "salt" neuter ;
|
||||||
|
lin sandur_N = mkN "sandur" masculine ;
|
||||||
|
lin sauma_V = mkV "sauma" "sauma" "saumaði" "saumaður" ;
|
||||||
|
lin segja_V = mkV "segja" "segi" "sagði" "sagður";
|
||||||
|
lin selja_V = (mkV "selja") ;
|
||||||
|
lin senda_V = (mkV "senda") ;
|
||||||
|
lin silfur_N = mkN "silfur" neuter ;
|
||||||
|
lin sitja_V = I.sitja_V ;
|
||||||
|
lin sjá_V = I.sjá_V ;
|
||||||
|
lin sjónvarp_N = mkN "sjónvarp" neuter ;
|
||||||
|
lin sjór_N = mkN "sjór" "sjó" "sjó" "sjós" "sjóir" "sjói" "sjóum" "sjóa" masculine ;
|
||||||
|
lin sjúga_V = I.sjúga_V ;
|
||||||
|
lin skemmtilegur_A = mkA "skemmtilegur" ;
|
||||||
|
lin skilja_V = (mkV "skilja") ;
|
||||||
|
lin skip_N = mkN "skip" neuter ;
|
||||||
|
lin skipta_V = (mkV "skipta") ;
|
||||||
|
lin skrifa_V = (mkV "skrifa" "skrifa" "skrifaði" "skrifaður") ;
|
||||||
|
lin skyrta_N = mkN "skyrta" feminine ;
|
||||||
|
lin skítugur_A = mkA "skítugur" ;
|
||||||
|
lin skógur_N = mkN "skógur" masculine ;
|
||||||
|
lin skóli_N = mkN "skóli" masculine ;
|
||||||
|
lin skór_N = mkN "skór" "skór" masculine ;
|
||||||
|
lin ský_N = mkN "ský" neuter ;
|
||||||
|
lin sléttur_A = mkA "sléttur" ;
|
||||||
|
lin smjör_N = mkN "smjör" neuter ;
|
||||||
|
lin snjór_N = mkN "snjór" masculine ;
|
||||||
|
lin snákur_N = mkN "snákur" masculine ;
|
||||||
|
lin sofa_V = I.sofa_V ;
|
||||||
|
lin sokkur_N = mkN "sokkur" masculine ;
|
||||||
|
lin spurning_N = mkN "spurning" feminine ;
|
||||||
|
lin spyrja_V = (mkV "spyrja" "spyr" "spurði" "spurður") ;
|
||||||
|
lin standa_V = I.standa_V ;
|
||||||
|
lin stansa_V = mkV "stansa" "stansa" "stansaði" "stansaður" ;
|
||||||
|
lin steinn_N = mkN "steinn" masculine ;
|
||||||
|
lin stelpa_N = mkNPlGen "stelpa" feminine ;
|
||||||
|
lin stinga_V = I.stinga_V ;
|
||||||
|
lin stjarna_N = mkN "stjarna" feminine ;
|
||||||
|
lin stjóri_N = mkN "stjóri" masculine ;
|
||||||
|
lin strjúka_V = I.strjúka_V ;
|
||||||
|
lin strákur_N = mkN "strákur" masculine ;
|
||||||
|
lin stríð_N = mkN "stríð" neuter ;
|
||||||
|
lin stuttur_A = mkA "stuttur" "stutt" "syttri" ;
|
||||||
|
lin stál_N = mkN "stál" neuter ;
|
||||||
|
lin stóll_N = mkN "stóll" masculine ;
|
||||||
|
lin stór_A = mkA "stór" "stór" "stærri" ;
|
||||||
|
lin svara_V = (mkV "svara" "svara" "svaraði" "svaraður") ;
|
||||||
|
lin svartur_A = mkA "svartur" ;
|
||||||
|
lin synda_V = mkV "synda" ;
|
||||||
|
lin syngja_V = I.syngja_V ;
|
||||||
|
lin systir_N = mkN "systir" "systur" feminine ;
|
||||||
|
lin sígvél_N = mkN "sígvél" neuter ;
|
||||||
|
lin sól_N = mkN "sól" "sólir" feminine ;
|
||||||
|
lin tala_V = (mkV "tala" "tala" "talaði" "talaður") ;
|
||||||
|
lin telja_V = (mkV "telja") ;
|
||||||
|
lin teppi_N = mkN "teppi" neuter ;
|
||||||
|
lin tilbúinn_A = mkA "tilbúinn" ;
|
||||||
|
lin toga_V = (mkV "toga" "toga" "togaði" "togaður") ;
|
||||||
|
lin tré_N = mkN "tré" neuter ;
|
||||||
|
lin trúarbragð_N = mkN "trúarbragð" neuter ;
|
||||||
|
lin tunga_N = mkNPlGen "tunga" feminine ;
|
||||||
|
lin tungl_N = mkN "tungl" neuter ;
|
||||||
|
lin tungumál_N = mkN "tungumál" neuter ;
|
||||||
|
lin tómur_A = mkA "tómur" ;
|
||||||
|
lin tónlist_N = mkN "tónlist" "tónlist" "tónlist" "tónlistar" "tónlist" "tónlist" "tónlist" "tónlistar" feminine ;
|
||||||
|
lin tölva_N = mkN "tölva" feminine ;
|
||||||
|
lin tönn_N = mkN "tönn" "tannar" "tennur" feminine ;
|
||||||
|
lin týna_V = (mkV "týna") ;
|
||||||
|
lin ungur_A = mkA "ungur" "ung" "yngri" ;
|
||||||
|
lin vatn_N = mkN "vatn" neuter ;
|
||||||
|
lin vegalend_N = mkN "vegalend" "vegalengdir" feminine ;
|
||||||
|
lin vegur_N = mkN "vegur" "vegar" "vegir" masculine ;
|
||||||
|
lin veitingastaður_N = mkCompoundN "veitinga" (mkN "staður" "staðar" "staðir" masculine) ;
|
||||||
|
lin veiða_V = (mkV "veiða") ;
|
||||||
|
lin velta_V = mkV "velta" ;
|
||||||
|
lin verksmiðja_N = mkN "verksmiðja" feminine ;
|
||||||
|
lin verða_V = I.verða_V ;
|
||||||
|
lin vindur_N = mkN "vindur" masculine ;
|
||||||
|
lin vinna_V = I.vinna_V ;
|
||||||
|
lin vinur_N = mkN "vinur" "vinar" "vinir" masculine ;
|
||||||
|
lin vita_V = I.vita_V ;
|
||||||
|
lin viður_N = mkN "viður" "viðar" "viðir" masculine ;
|
||||||
|
lin vona_V = mkV "vona" "vona" "vonaði" "vonaður" ;
|
||||||
|
lin vondur_A = mkA "vondur" "vond" "verri" ;
|
||||||
|
lin vængur_N = mkN "vængur" masculine ;
|
||||||
|
lin vín_N = mkN "vín" neuter ;
|
||||||
|
lin víður_A = mkA "víður" ;
|
||||||
|
lin á_N = mkN "á" "ár" feminine ;
|
||||||
|
lin ár_N = mkN "ár" neuter ;
|
||||||
|
lin ást_N = mkN "ást" "ástir" feminine ;
|
||||||
|
lin ástæða_N = mkNPlGen "ástæða" feminine ;
|
||||||
|
lin ávöxtur_N = mkN "ávöxtur" "ávaxtar" "ávextir" masculine ;
|
||||||
|
lin æla_V = mkV "æla" ;
|
||||||
|
lin í_Adv = mkAdv "í dag" ;
|
||||||
|
lin íbúð_N = mkN "íbúð" "íbúðir" feminine ;
|
||||||
|
lin ísskápur_N = mkCompoundN "ís" (mkN "skápur" "skáps" "skápar" masculine) ;
|
||||||
|
lin ís_N = mkN "ís" masculine ;
|
||||||
|
lin óvinur_N = mkCompoundN "ó" (vinur_N) ;
|
||||||
|
lin óviss_A = mkA "óviss" "óviss" "óvissari" ;
|
||||||
|
lin öl_N = mkN "öl" neuter ;
|
||||||
|
lin útvarp_N = mkN "útvarp" neuter ;
|
||||||
|
lin ýta_V = (mkV "ýta") ;
|
||||||
|
lin þak_N = mkN "þak" neuter ;
|
||||||
|
lin þefa_V = mkV "þefa" "þefa" "þefaði" "þefaður" ;
|
||||||
|
lin þegar_Adv = mkAdv "þegar" ;
|
||||||
|
lin þoka_N = mkN "þoka" feminine ;
|
||||||
|
lin þorp_N = mkN "þorp" neuter ;
|
||||||
|
lin þrífa_V = I.þrífa_V ;
|
||||||
|
lin þröngur_A = mkA "þröngur" ;
|
||||||
|
lin þungur_A = mkA "þungur" "þung" "þyngri" ;
|
||||||
|
lin þunnur_A = mkA "þunnur" "þunn" "þynnri" ;
|
||||||
|
lin þurr_A = mkA "þurr" "þurr" ;
|
||||||
|
lin þykkur_A = mkA "þykkur" ;
|
||||||
|
}
|
||||||
334
src/icelandic/SmallDictIceAbs.gf
Normal file
334
src/icelandic/SmallDictIceAbs.gf
Normal file
@@ -0,0 +1,334 @@
|
|||||||
|
abstract SmallDictIceAbs = Cat ** {
|
||||||
|
|
||||||
|
-- monolingual dictionary bootstrapped from LexIce
|
||||||
|
-- AR 2019-08-07
|
||||||
|
|
||||||
|
fun anda_V : V ;
|
||||||
|
fun aska_N : N ;
|
||||||
|
fun auga_N : N ;
|
||||||
|
fun auðveldur_A : A ;
|
||||||
|
fun bak_N : N ;
|
||||||
|
fun banki_N : N ;
|
||||||
|
fun barn_N : N ;
|
||||||
|
fun bein_N : N ;
|
||||||
|
fun beinn_A : A ;
|
||||||
|
fun beittur_A : A ;
|
||||||
|
fun belja_N : N ;
|
||||||
|
fun berja_V : V ;
|
||||||
|
fun beygja_V : V ;
|
||||||
|
fun binda_V : V ;
|
||||||
|
fun biðja_V : V ;
|
||||||
|
fun blautur_A : A ;
|
||||||
|
fun blár_A : A ;
|
||||||
|
fun blása_V : V ;
|
||||||
|
fun blóm_N : N ;
|
||||||
|
fun blóð_N : N ;
|
||||||
|
fun borg_N : N ;
|
||||||
|
fun borð_N : N ;
|
||||||
|
fun borða_V : V ;
|
||||||
|
fun brauð_N : N ;
|
||||||
|
fun breiður_A : A ;
|
||||||
|
fun brenna_V : V ;
|
||||||
|
fun brjóst_N : N ;
|
||||||
|
fun brjóta_V : V ;
|
||||||
|
fun bróðir_N : N ;
|
||||||
|
fun brúnn_A : A ;
|
||||||
|
fun bátur_N : N ;
|
||||||
|
fun bæta_V : V ;
|
||||||
|
fun bíll_N : N ;
|
||||||
|
fun bíta_V : V ;
|
||||||
|
fun bók_N : N ;
|
||||||
|
fun bólgna_V : V ;
|
||||||
|
fun börkur_N : N ;
|
||||||
|
fun búð_N : N ;
|
||||||
|
fun dagblað_N : N ;
|
||||||
|
fun dagur_N : N ;
|
||||||
|
fun detta_V : V ;
|
||||||
|
fun deyja_V : V ;
|
||||||
|
fun drekka_V : V ;
|
||||||
|
fun drepa_V : V ;
|
||||||
|
fun drottning_N : N ;
|
||||||
|
fun dýr_N : N ;
|
||||||
|
fun eftir_V : V ;
|
||||||
|
fun egg_N : N ;
|
||||||
|
fun eiginkona_N : N ;
|
||||||
|
fun eiginmaður_N : N ;
|
||||||
|
fun eldavél_N : N ;
|
||||||
|
fun eldur_N : N ;
|
||||||
|
fun elska_V : V ;
|
||||||
|
fun epli_N : N ;
|
||||||
|
fun eyra_N : N ;
|
||||||
|
fun fallegur_A : A ;
|
||||||
|
fun fara_V : V ;
|
||||||
|
fun faðir_N : N ;
|
||||||
|
fun ferða_V : V ;
|
||||||
|
fun finna_V : V ;
|
||||||
|
fun fiskur_N : N ;
|
||||||
|
fun fita_N : N ;
|
||||||
|
fun fjall_N : N ;
|
||||||
|
fun fjöður_N : N ;
|
||||||
|
fun fljóta_V : V ;
|
||||||
|
fun fljúga_V : V ;
|
||||||
|
fun flugvél_N : N ;
|
||||||
|
fun flæða_V : V ;
|
||||||
|
fun friður_N : N ;
|
||||||
|
fun frjósa_V : V ;
|
||||||
|
fun fræ_N : N ;
|
||||||
|
fun frændi_N : N ;
|
||||||
|
fun fugl_N : N ;
|
||||||
|
fun fullur_A : A ;
|
||||||
|
fun fótleggur_N : N ;
|
||||||
|
fun fótur_N : N ;
|
||||||
|
fun gamall_A : A ;
|
||||||
|
fun ganga_V : V ;
|
||||||
|
fun garður_N : N ;
|
||||||
|
fun gefa_V : V ;
|
||||||
|
fun gera_V : V ;
|
||||||
|
fun giftur_A : A ;
|
||||||
|
fun gleyma_V : V ;
|
||||||
|
fun gluggi_N : N ;
|
||||||
|
fun grafa_V : V ;
|
||||||
|
fun gras_N : N ;
|
||||||
|
fun grænn_A : A ;
|
||||||
|
fun gull_N : N ;
|
||||||
|
fun gulur_A : A ;
|
||||||
|
fun gólf_N : N ;
|
||||||
|
fun góður_A : A ;
|
||||||
|
fun görn_N : N ;
|
||||||
|
fun gúmmí_N : N ;
|
||||||
|
fun halda_V : V ;
|
||||||
|
fun hanski_N : N ;
|
||||||
|
fun hata_V : V ;
|
||||||
|
fun hattur_N : N ;
|
||||||
|
fun haus_N : N ;
|
||||||
|
fun heimskur_A : A ;
|
||||||
|
fun heitur_A : A ;
|
||||||
|
fun hestur_N : N ;
|
||||||
|
fun heyra_V : V ;
|
||||||
|
fun himinn_N : N ;
|
||||||
|
fun hjarta_N : N ;
|
||||||
|
fun hjól_N : N ;
|
||||||
|
fun hlaupa_V : V ;
|
||||||
|
fun hlusta_V : V ;
|
||||||
|
fun hlæja_V : V ;
|
||||||
|
fun hné_N : N ;
|
||||||
|
fun hoppa_V : V ;
|
||||||
|
fun horfa_V : V ;
|
||||||
|
fun horn_N : N ;
|
||||||
|
fun hreinn_A : A ;
|
||||||
|
fun hrækja_V : V ;
|
||||||
|
fun hugsa_V : V ;
|
||||||
|
fun hundur_N : N ;
|
||||||
|
fun hurð_N : N ;
|
||||||
|
fun hvítur_A : A ;
|
||||||
|
fun háls_N : N ;
|
||||||
|
fun hár_N : N ;
|
||||||
|
fun háskóli_N : N ;
|
||||||
|
fun hæð_N : N ;
|
||||||
|
fun höfn_N : N ;
|
||||||
|
fun hönd_N : N ;
|
||||||
|
fun húfa_N : N ;
|
||||||
|
fun hús_N : N ;
|
||||||
|
fun húð_N : N ;
|
||||||
|
fun iðnaður_N : N ;
|
||||||
|
fun járn_N : N ;
|
||||||
|
fun jörð_N : N ;
|
||||||
|
fun kaldur_A : A ;
|
||||||
|
fun kasta_V : V ;
|
||||||
|
fun kaupa_V : V ;
|
||||||
|
fun kenna_V : V ;
|
||||||
|
fun kennari_N : N ;
|
||||||
|
fun kind_N : N ;
|
||||||
|
fun kirkja_N : N ;
|
||||||
|
fun kjöt_N : N ;
|
||||||
|
fun klettur_N : N ;
|
||||||
|
fun klippa_V : V ;
|
||||||
|
fun klár_A : A ;
|
||||||
|
fun klóra_V : V ;
|
||||||
|
fun koma_V : V ;
|
||||||
|
fun kona_N : N ;
|
||||||
|
fun konungur_N : N ;
|
||||||
|
fun kreista_V : V ;
|
||||||
|
fun kringlóttur_A : A ;
|
||||||
|
fun kápa_N : N ;
|
||||||
|
fun köttur_N : N ;
|
||||||
|
fun lag_N : N ;
|
||||||
|
fun lampi_N : N ;
|
||||||
|
fun land_N : N ;
|
||||||
|
fun langt_Adv : Adv ;
|
||||||
|
fun langur_A : A ;
|
||||||
|
fun lauf_N : N ;
|
||||||
|
fun leika_V : V ;
|
||||||
|
fun leita_V : V ;
|
||||||
|
fun lesa_V : V ;
|
||||||
|
fun lest_N : N ;
|
||||||
|
fun leðinilegur_A : A ;
|
||||||
|
fun leður_N : N ;
|
||||||
|
fun lifa_V : V ;
|
||||||
|
fun lifur_N : N ;
|
||||||
|
fun list_N : N ;
|
||||||
|
fun ljótur_A : A ;
|
||||||
|
fun ljúga_V : V ;
|
||||||
|
fun loft_N : N ;
|
||||||
|
fun loka_V : V ;
|
||||||
|
fun láta_V : V ;
|
||||||
|
fun læknir_N : N ;
|
||||||
|
fun læra_V : V ;
|
||||||
|
fun líklegur_A : A ;
|
||||||
|
fun lítill_A : A ;
|
||||||
|
fun lögregluþjónn_N : N ;
|
||||||
|
fun lús_N : N ;
|
||||||
|
fun magi_N : N ;
|
||||||
|
fun maður_N : N ;
|
||||||
|
fun mikilvægur_A : A ;
|
||||||
|
fun mjólk_N : N ;
|
||||||
|
fun munnur_N : N ;
|
||||||
|
fun myndavél_N : N ;
|
||||||
|
fun mála_V : V ;
|
||||||
|
fun málfræði_N : N ;
|
||||||
|
fun móðir_N : N ;
|
||||||
|
fun nafn_N : N ;
|
||||||
|
fun nef_N : N ;
|
||||||
|
fun nemandi_N : N ;
|
||||||
|
fun nudda_V : V ;
|
||||||
|
fun nálægur_A : A ;
|
||||||
|
fun nótt_N : N ;
|
||||||
|
fun nögl_N : N ;
|
||||||
|
fun númer_N : N ;
|
||||||
|
fun núna_Adv : Adv ;
|
||||||
|
fun nýr_A : A ;
|
||||||
|
fun olía_N : N ;
|
||||||
|
fun opna_V : V ;
|
||||||
|
fun ormur_N : N ;
|
||||||
|
fun ostur_N : N ;
|
||||||
|
fun other_A : A ;
|
||||||
|
fun pappír_N : N ;
|
||||||
|
fun penni_N : N ;
|
||||||
|
fun persóna_N : N ;
|
||||||
|
fun plat_N : N ;
|
||||||
|
fun pláneta_N : N ;
|
||||||
|
fun prestur_N : N ;
|
||||||
|
fun prik_N : N ;
|
||||||
|
fun rauður_A : A ;
|
||||||
|
fun regla_N : N ;
|
||||||
|
fun reipi_N : N ;
|
||||||
|
fun reykur_N : N ;
|
||||||
|
fun rigning_N : N ;
|
||||||
|
fun rotinn_A : A ;
|
||||||
|
fun ryk_N : N ;
|
||||||
|
fun réttur_A : A ;
|
||||||
|
fun rófa_N : N ;
|
||||||
|
fun rót_N : N ;
|
||||||
|
fun salt_N : N ;
|
||||||
|
fun sandur_N : N ;
|
||||||
|
fun sauma_V : V ;
|
||||||
|
fun segja_V : V ;
|
||||||
|
fun selja_V : V ;
|
||||||
|
fun senda_V : V ;
|
||||||
|
fun silfur_N : N ;
|
||||||
|
fun sitja_V : V ;
|
||||||
|
fun sjá_V : V ;
|
||||||
|
fun sjónvarp_N : N ;
|
||||||
|
fun sjór_N : N ;
|
||||||
|
fun sjúga_V : V ;
|
||||||
|
fun skemmtilegur_A : A ;
|
||||||
|
fun skilja_V : V ;
|
||||||
|
fun skip_N : N ;
|
||||||
|
fun skipta_V : V ;
|
||||||
|
fun skrifa_V : V ;
|
||||||
|
fun skyrta_N : N ;
|
||||||
|
fun skítugur_A : A ;
|
||||||
|
fun skógur_N : N ;
|
||||||
|
fun skóli_N : N ;
|
||||||
|
fun skór_N : N ;
|
||||||
|
fun ský_N : N ;
|
||||||
|
fun sléttur_A : A ;
|
||||||
|
fun smjör_N : N ;
|
||||||
|
fun snjór_N : N ;
|
||||||
|
fun snákur_N : N ;
|
||||||
|
fun sofa_V : V ;
|
||||||
|
fun sokkur_N : N ;
|
||||||
|
fun spurning_N : N ;
|
||||||
|
fun spyrja_V : V ;
|
||||||
|
fun standa_V : V ;
|
||||||
|
fun stansa_V : V ;
|
||||||
|
fun steinn_N : N ;
|
||||||
|
fun stelpa_N : N ;
|
||||||
|
fun stinga_V : V ;
|
||||||
|
fun stjarna_N : N ;
|
||||||
|
fun stjóri_N : N ;
|
||||||
|
fun strjúka_V : V ;
|
||||||
|
fun strákur_N : N ;
|
||||||
|
fun stríð_N : N ;
|
||||||
|
fun stuttur_A : A ;
|
||||||
|
fun stál_N : N ;
|
||||||
|
fun stóll_N : N ;
|
||||||
|
fun stór_A : A ;
|
||||||
|
fun svara_V : V ;
|
||||||
|
fun svartur_A : A ;
|
||||||
|
fun synda_V : V ;
|
||||||
|
fun syngja_V : V ;
|
||||||
|
fun systir_N : N ;
|
||||||
|
fun sígvél_N : N ;
|
||||||
|
fun sól_N : N ;
|
||||||
|
fun tala_V : V ;
|
||||||
|
fun telja_V : V ;
|
||||||
|
fun teppi_N : N ;
|
||||||
|
fun tilbúinn_A : A ;
|
||||||
|
fun toga_V : V ;
|
||||||
|
fun tré_N : N ;
|
||||||
|
fun trúarbragð_N : N ;
|
||||||
|
fun tunga_N : N ;
|
||||||
|
fun tungl_N : N ;
|
||||||
|
fun tungumál_N : N ;
|
||||||
|
fun tómur_A : A ;
|
||||||
|
fun tónlist_N : N ;
|
||||||
|
fun tölva_N : N ;
|
||||||
|
fun tönn_N : N ;
|
||||||
|
fun týna_V : V ;
|
||||||
|
fun ungur_A : A ;
|
||||||
|
fun vatn_N : N ;
|
||||||
|
fun vegalend_N : N ;
|
||||||
|
fun vegur_N : N ;
|
||||||
|
fun veitingastaður_N : N ;
|
||||||
|
fun veiða_V : V ;
|
||||||
|
fun velta_V : V ;
|
||||||
|
fun verksmiðja_N : N ;
|
||||||
|
fun verða_V : V ;
|
||||||
|
fun vindur_N : N ;
|
||||||
|
fun vinna_V : V ;
|
||||||
|
fun vinur_N : N ;
|
||||||
|
fun vita_V : V ;
|
||||||
|
fun viður_N : N ;
|
||||||
|
fun vona_V : V ;
|
||||||
|
fun vondur_A : A ;
|
||||||
|
fun vængur_N : N ;
|
||||||
|
fun vín_N : N ;
|
||||||
|
fun víður_A : A ;
|
||||||
|
fun á_N : N ;
|
||||||
|
fun ár_N : N ;
|
||||||
|
fun ást_N : N ;
|
||||||
|
fun ástæða_N : N ;
|
||||||
|
fun ávöxtur_N : N ;
|
||||||
|
fun æla_V : V ;
|
||||||
|
fun í_Adv : Adv ;
|
||||||
|
fun íbúð_N : N ;
|
||||||
|
fun ísskápur_N : N ;
|
||||||
|
fun ís_N : N ;
|
||||||
|
fun óvinur_N : N ;
|
||||||
|
fun óviss_A : A ;
|
||||||
|
fun öl_N : N ;
|
||||||
|
fun útvarp_N : N ;
|
||||||
|
fun ýta_V : V ;
|
||||||
|
fun þak_N : N ;
|
||||||
|
fun þefa_V : V ;
|
||||||
|
fun þegar_Adv : Adv ;
|
||||||
|
fun þoka_N : N ;
|
||||||
|
fun þorp_N : N ;
|
||||||
|
fun þrífa_V : V ;
|
||||||
|
fun þröngur_A : A ;
|
||||||
|
fun þungur_A : A ;
|
||||||
|
fun þunnur_A : A ;
|
||||||
|
fun þurr_A : A ;
|
||||||
|
fun þykkur_A : A ;
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ import qualified Data.Map
|
|||||||
import qualified Data.Text.IO
|
import qualified Data.Text.IO
|
||||||
import Data.Char
|
import Data.Char
|
||||||
import Data.List
|
import Data.List
|
||||||
|
import System.Directory
|
||||||
|
|
||||||
-- AR 2019-08-06
|
-- AR 2019-08-06
|
||||||
-- checking IrregIce wrt Wikipedia:
|
-- checking IrregIce wrt Wikipedia:
|
||||||
@@ -138,43 +139,69 @@ actInf v@(i:_) = last (words i)
|
|||||||
|
|
||||||
jumpToIcelandic ls = dropWhile (\l -> not (isPrefixOf "<h2>" l && isPrefixOf "Icelandic" (untag l))) ls
|
jumpToIcelandic ls = dropWhile (\l -> not (isPrefixOf "<h2>" l && isPrefixOf "Icelandic" (untag l))) ls
|
||||||
|
|
||||||
-------------------------------
|
----------------------------------------------------------------------
|
||||||
-- just retrieving ------------
|
-- just retrieving, instead of checking existing GF files ------------
|
||||||
|
|
||||||
-- to be run in verbs/
|
-- to be run in wiktionary/, with subdirs nouns/ adjectives/ verbs/
|
||||||
getAllWiktVerbs = do
|
|
||||||
vs <- readFile "wikt-verbs.txt" >>= return . lines
|
|
||||||
writeFile "v.tmp" ""
|
|
||||||
mapM_ (\v -> getWiktVerb v >>= appendFile "v.tmp" . unlines . emitGF) vs
|
|
||||||
|
|
||||||
-- to be run in adjectives/
|
-- to be run in adjectives/
|
||||||
|
getAllWiktNouns = do
|
||||||
|
vs <- readFile "nouns/wikt-nouns.txt" >>= return . lines
|
||||||
|
writeFile "n.tmp" ""
|
||||||
|
mapM_ (\v -> getWiktNoun "nouns/" v >>= appendFile "n.tmp" . unlines . emitGF) vs
|
||||||
|
|
||||||
getAllWiktAdjectives = do
|
getAllWiktAdjectives = do
|
||||||
vs <- readFile "wikt-verbs.txt" >>= return . lines
|
vs <- readFile "adjectives/wikt-adjectives.txt" >>= return . lines
|
||||||
mapM_ (\v -> getWiktAdjective v >>= putStrLn . unlines . emitGF) vs
|
writeFile "a.tmp" ""
|
||||||
|
mapM_ (\v -> getWiktAdjective "adjectives/" v >>= appendFile "a.tmp" . unlines . emitGF) vs
|
||||||
|
|
||||||
|
getAllWiktVerbs = do
|
||||||
|
vs <- readFile "verbs/wikt-verbs.txt" >>= return . lines
|
||||||
|
writeFile "v.tmp" ""
|
||||||
|
mapM_ (\v -> getWiktVerb "verbs/" v >>= appendFile "v.tmp" . unlines . emitGF) vs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- return ([relevant Wikt lines], (fun,cat,lin), message)
|
-- return ([relevant Wikt lines], (fun,cat,lin), message)
|
||||||
getWiktWord :: Int -> (String -> [String] -> ([String],((String,String,String),Message))) -> FilePath -> IO ([String],((String,String,String),Message))
|
getWiktWord :: Int -> (String -> [String] -> ([String],((String,String,String),Message))) -> FilePath -> FilePath -> IO ([String],((String,String,String),Message))
|
||||||
getWiktWord number check file = do
|
getWiktWord number check dir file = do
|
||||||
s <- readFile file >>= return . map untag . take number . getTD . jumpToIcelandic . lines
|
let dirfile = dir++file
|
||||||
return $ check file s
|
ex <- doesFileExist dirfile
|
||||||
|
if not ex
|
||||||
|
then return ([],(noGF,MBad (file ++ " does not exist")))
|
||||||
|
else do
|
||||||
|
s <- readFile dirfile >>= return . map untag . take number . getTD . jumpToIcelandic . lines
|
||||||
|
return $ check file s
|
||||||
|
|
||||||
getWiktNoun = getWiktWord 17 checkNoun
|
getWiktNoun = getWiktWord 17 checkNoun
|
||||||
getWiktAdjective = getWiktWord 120 noCheck
|
getWiktAdjective = getWiktWord 120 checkAdjective
|
||||||
getWiktVerb = getWiktWord 75 checkVerb
|
getWiktVerb = getWiktWord 75 checkVerb
|
||||||
|
|
||||||
noCheck :: String -> [String] -> ([String],((String,String,String),Message))
|
noCheck :: String -> [String] -> ([String],((String,String,String),Message))
|
||||||
noCheck s ss = (ss, (noGF, MMissing s))
|
noCheck s ss = (ss, (noGF, MMissing s))
|
||||||
noGF = ("--","--","--")
|
noGF = ("--","--","--")
|
||||||
|
|
||||||
checkNoun noun forms = noCheck noun forms ----
|
checkNoun noun forms = case length forms of
|
||||||
|
---- n | n < 24 -> (forms, (noGF, MBad (adj ++ " A: only " ++ show (length forms) ++ " lines")))
|
||||||
|
n | n < 17 -> (forms, (noGF, MBad (noun ++ " N: only " ++ show (length forms) ++ " lines")))
|
||||||
|
_ -> (forms, checkZZ noun (noun ++ "_N", "N", "mkgN " ++ gender (forms!!0), [forms!!i | i <- [1,5,9,13,3,7,11,15]]))
|
||||||
|
where
|
||||||
|
gender s = case take 1 s of
|
||||||
|
"m" -> "masculine"
|
||||||
|
"f" -> "feminine"
|
||||||
|
_ -> "neuter" --- "n"
|
||||||
|
|
||||||
checkVerb verb forms =
|
|
||||||
if length forms < 75
|
checkAdjective adj forms = case length forms of
|
||||||
then (forms, (noGF, MBad (verb ++ ": only " ++ show (length forms) ++ " lines")))
|
n | n < 24 -> (forms, (noGF, MBad (adj ++ " A: only " ++ show (length forms) ++ " lines")))
|
||||||
else case unexpectedWikLines forms of
|
n | n < 120 -> (forms, checkZZ adj (adj ++ "_A", "A", "mkA", [forms!!0, forms!!1]))
|
||||||
[] -> (forms, ((verb ++ "_V", "V", app "mkV" [verb, forms!!5, forms!!18, forms!!74, forms!!1]), MGood verb)) ----
|
_ -> (forms, checkZZ adj (adj ++ "_A", "A", "mkA", [forms!!0, forms!!1,forms!!48]))
|
||||||
us -> (forms, (noGF, MBad (verb ++ ": unexpected lines " ++ show (length us))))
|
|
||||||
|
checkVerb verb forms = case length forms of
|
||||||
|
n | n < 75 -> (forms, (noGF, MBad (verb ++ " V: only " ++ show (length forms) ++ " lines")))
|
||||||
|
_ -> case unexpectedWikLines forms of
|
||||||
|
[] -> (forms, checkZZ verb (verb ++ "_V", "V", "mkV", [verb, forms!!5, forms!!18, forms!!74, forms!!1]))
|
||||||
|
us -> (forms, (noGF, MBad (verb ++ " V: unexpected lines " ++ show (length us))))
|
||||||
|
|
||||||
data Message =
|
data Message =
|
||||||
MGood String
|
MGood String
|
||||||
@@ -185,6 +212,11 @@ data Message =
|
|||||||
app f xs = unwords $ f : map (quote . wform . words) xs
|
app f xs = unwords $ f : map (quote . wform . words) xs
|
||||||
quote s = "\"" ++ s ++ "\""
|
quote s = "\"" ++ s ++ "\""
|
||||||
|
|
||||||
|
checkZZ w (fun,cat,lin,args) =
|
||||||
|
if elem "ZZ" (map (wform . words) args)
|
||||||
|
then (noGF, MBad (w ++ " " ++ cat ++ ": missing forms in data"))
|
||||||
|
else ((fun,cat, app lin args),MGood w)
|
||||||
|
|
||||||
emitGF (ss,((fun,cat,lin),msg)) = case msg of
|
emitGF (ss,((fun,cat,lin),msg)) = case msg of
|
||||||
MGood _ -> [unwords ["fun",fun,":",cat,";"],unwords ["lin",fun,"=",lin,";"]]
|
MGood _ -> [unwords ["fun",fun,":",cat,";"],unwords ["lin",fun,"=",lin,";"]]
|
||||||
_ -> ["-- " ++ show msg]
|
_ -> ["-- " ++ show msg]
|
||||||
|
|||||||
@@ -119,6 +119,8 @@ incomplete concrete ExtendRomanceFunctor of Extend =
|
|||||||
|
|
||||||
NominalizeVPSlashNP = variants {} ; -- VPSlash -> NP -> NP ;
|
NominalizeVPSlashNP = variants {} ; -- VPSlash -> NP -> NP ;
|
||||||
|
|
||||||
|
ProgrVPSlash = variants {} ; -- VPSlash -> VPSlash ;
|
||||||
|
|
||||||
ExistCN cn = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
ExistCN cn = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||||
ExistMassCN cn = ExistNP (MassNP cn) ;
|
ExistMassCN cn = ExistNP (MassNP cn) ;
|
||||||
ExistPluralCN cn = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
ExistPluralCN cn = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
@@ -24,8 +31,7 @@ lin
|
|||||||
-- Subordinate clauses can function as adverbs.
|
-- Subordinate clauses can function as adverbs.
|
||||||
|
|
||||||
-- : Subj -> S -> Adv ;
|
-- : Subj -> S -> Adv ;
|
||||||
SubjS subj s = let subs = s.s ! True in
|
SubjS subj s = mkAdv (s.s ! True) ;
|
||||||
mkAdv (subs.beforeSTM ++ subj.s ++ subs.stm ++ subs.afterSTM) ;
|
|
||||||
|
|
||||||
-- Comparison adverbs also work as numeral adverbs.
|
-- Comparison adverbs also work as numeral adverbs.
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
|
|
||||||
S = ResSom.Sentence ;
|
S = ResSom.Sentence ;
|
||||||
QS = SS ;
|
QS = SS ;
|
||||||
RS = {s : Gender => Case => Str} ;
|
RS = {s : State => GenNum => Case => Str} ;
|
||||||
-- relative sentence. Tense and polarity fixed,
|
-- relative sentence. Tense and polarity fixed,
|
||||||
-- but agreement may depend on the CN/NP it modifies.
|
-- but agreement may depend on the CN/NP it modifies.
|
||||||
|
|
||||||
Cl = ResSom.Clause ;
|
Cl = ResSom.ClSlash ;
|
||||||
ClSlash = ResSom.ClSlash ;
|
ClSlash = ResSom.ClSlash ;
|
||||||
SSlash = ResSom.Sentence ; -- sentence missing NP; e.g. "she has looked at"
|
SSlash = ResSom.Sentence ; -- sentence missing NP; e.g. "she has looked at"
|
||||||
Imp = SS ; -- imperative e.g. "look at this"
|
Imp = SS ; -- imperative e.g. "look at this"
|
||||||
@@ -62,7 +62,7 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
NP = ResSom.NounPhrase ;
|
NP = ResSom.NounPhrase ;
|
||||||
Pron = ResSom.Pronoun ; --Pronouns need enough info to turn it into NP or Quant.
|
Pron = ResSom.Pronoun ; --Pronouns need enough info to turn it into NP or Quant.
|
||||||
Det = ResSom.Determiner ;
|
Det = ResSom.Determiner ;
|
||||||
Predet = {s : Str} ;
|
Predet = {s : Str ; da : DefArticle ; isPoss : Bool} ;
|
||||||
Quant = ResSom.Quant ;
|
Quant = ResSom.Quant ;
|
||||||
Num = ResSom.Num ;
|
Num = ResSom.Num ;
|
||||||
Ord = {s : Str ; n : Number} ;
|
Ord = {s : Str ; n : Number} ;
|
||||||
@@ -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,15 +98,16 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
-- additional lexicon modules.
|
-- additional lexicon modules.
|
||||||
|
|
||||||
V,
|
V,
|
||||||
-- TODO: eventually proper lincats
|
VS, -- sentence-complement verb e.g. "claim"
|
||||||
VV, -- verb-phrase-complement verb e.g. "want"
|
-- TODO: eventually different lincats
|
||||||
VS, -- sentence-complement verb e.g. "claim" -- TODO: VPs that have VS use waxa as stm? see Nilsson p. 68
|
|
||||||
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"
|
||||||
V2S, -- verb with NP and S complement e.g. "tell"
|
V2S, -- verb with NP and S complement e.g. "tell"
|
||||||
V2Q, -- verb with NP and Q complement e.g. "ask"
|
V2Q, -- verb with NP and Q complement e.g. "ask"
|
||||||
V2A = ResSom.Verb ; -- verb with NP and AP complement e.g. "paint"
|
V2A = ResSom.Verb ; -- verb with NP and AP complement e.g. "paint"
|
||||||
|
|
||||||
|
VV = ResSom.VV ; -- verb-phrase-complement verb e.g. "want"
|
||||||
|
|
||||||
V2 = ResSom.Verb2 ;
|
V2 = ResSom.Verb2 ;
|
||||||
V3 = ResSom.Verb3 ;
|
V3 = ResSom.Verb3 ;
|
||||||
@@ -119,7 +124,7 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
|
|
||||||
linref
|
linref
|
||||||
-- Cl = linCl ;
|
-- Cl = linCl ;
|
||||||
VP = linVP VInf ;
|
VP = infVP ;
|
||||||
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 ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,14 +38,15 @@ lin
|
|||||||
ConjAdv, ConjAdV, ConjIAdv = conjunctDistrSS ;
|
ConjAdv, ConjAdV, ConjIAdv = conjunctDistrSS ;
|
||||||
|
|
||||||
|
|
||||||
--RS depends on gender and case, otherwise exactly like previous.
|
-- RS depends on state, gender and case, otherwise exactly like previous.
|
||||||
|
-- RS can modify CNs, which are open for state, number and case, and have inherent gender.
|
||||||
lincat
|
lincat
|
||||||
[RS] = {s1,s2 : Gender => Case => Str} ;
|
[RS] = {s1,s2 : State => Gender => Case => Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
BaseRS x y = twoTable2 Gender Case x y ;
|
BaseRS = twoTable3 State GenNum Case ;
|
||||||
ConsRS xs x = consrTable2 Gender Case comma xs x ;
|
ConsRS = consrTable3 State GenNum Case comma ;
|
||||||
ConjRS co xs = conjunctDistrTable2' Gender Case co xs ;
|
ConjRS = conjunctRSTable ;
|
||||||
|
|
||||||
{-
|
{-
|
||||||
lincat
|
lincat
|
||||||
@@ -115,9 +116,16 @@ oper
|
|||||||
|
|
||||||
-- Like conjunctTable from prelude/Coordination.gf,
|
-- Like conjunctTable from prelude/Coordination.gf,
|
||||||
-- but forces the first argument into absolutive.
|
-- but forces the first argument into absolutive.
|
||||||
conjunctNPTable : ConjDistr -> ({s1,s2 : Case => Str} ** BaseNP) -> {s : Case => Str ; st : State} = \co,xs -> xs **
|
conjunctNPTable : ConjDistr -> ({s1,s2 : Case => Str} ** BaseNP) -> NP = \co,xs -> lin NP (xs ** {
|
||||||
{s = -- TODO if xs is a pronoun, make them use (pronTable ! xs.a).sp
|
s = \\c => co.s1 ++ xs.s1 ! Abs ++ co.s2 ! xs.st ++ xs.s2 ! c
|
||||||
table { cas => co.s1 ++ xs.s1 ! Abs ++ co.s2 ! xs.st ++ xs.s2 ! cas}} ;
|
}) ;
|
||||||
|
|
||||||
|
conjunctRSTable : ConjDistr -> {s1,s2 : State => GenNum => Case => Str} -> RS = \co,xs -> lin RS (xs ** {
|
||||||
|
s = \\st,g,c => co.s1
|
||||||
|
++ xs.s1 ! st ! g ! c
|
||||||
|
++ co.s2 ! st
|
||||||
|
++ xs.s2 ! st ! g ! c
|
||||||
|
}) ;
|
||||||
|
|
||||||
np2objpron : NounPhrase -> NounPhrase = \np -> np ** {
|
np2objpron : NounPhrase -> NounPhrase = \np -> np ** {
|
||||||
s = objpron np
|
s = objpron np
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ concrete ExtendSom of Extend = CatSom
|
|||||||
** open Prelude, ResSom in {
|
** open Prelude, ResSom in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
-- : NP -> SSlash -> Utt ; -- her I love -- Sayeed p. 189-
|
-- : NP -> SSlash -> Utt ; -- her I love -- Saeed p. 189-
|
||||||
FocusObj np sslash = -- FIXME: preposition disappears in negative sentences
|
FocusObj np sslash = -- FIXME: preposition disappears in negative sentences
|
||||||
let ss = sslash.s ! False ;
|
let ss = sslash.s ! False ;
|
||||||
ssSub = sslash.s ! True ; -- the negative particle is the same as subordinate, but verb forms come from main clause
|
ssSub = sslash.s ! True ; -- the negative particle is the same as subordinate, but verb forms come from main clause
|
||||||
|
|||||||
@@ -31,10 +31,16 @@ 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: Sayeed p. 92 optative
|
{- TODO: Saeed p. 92 and 207, optative
|
||||||
-- : VP -> Utt ; -- let's go
|
-- : VP -> Utt ; -- let's go
|
||||||
ImpPl1 vp = { } ;
|
ImpPl1 vp = { } ;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
concrete LexiconSom of Lexicon = CatSom **
|
concrete LexiconSom of Lexicon = CatSom **
|
||||||
open ParadigmsSom,ResSom in {
|
open ParadigmsSom, ResSom in {
|
||||||
|
|
||||||
----
|
----
|
||||||
-- A
|
-- A
|
||||||
@@ -33,7 +33,7 @@ lin big_A = mkA "weyn" ;
|
|||||||
-- lin bike_N = mkN "" ;
|
-- lin bike_N = mkN "" ;
|
||||||
lin bird_N = mkN "shimbir" fem ;
|
lin bird_N = mkN "shimbir" fem ;
|
||||||
-- lin bite_V2 = mkV2 "" ;
|
-- lin bite_V2 = mkV2 "" ;
|
||||||
-- lin black_A = mkA "" ;
|
lin black_A = mkA "madow" ;
|
||||||
-- lin blood_N = mkN "" ;
|
-- lin blood_N = mkN "" ;
|
||||||
-- lin blow_V = mkV "" ;
|
-- lin blow_V = mkV "" ;
|
||||||
-- lin blue_A = mkA "" ;
|
-- lin blue_A = mkA "" ;
|
||||||
@@ -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 "" ;
|
||||||
@@ -258,7 +258,7 @@ lin name_N = mkN "magac" ;
|
|||||||
-- lin paris_PN = mkPN "Paris" ;
|
-- lin paris_PN = mkPN "Paris" ;
|
||||||
-- lin peace_N = mkN "" ;
|
-- lin peace_N = mkN "" ;
|
||||||
-- lin pen_N = mkN "" ;
|
-- lin pen_N = mkN "" ;
|
||||||
-- lin person_N = mkN "" ;
|
lin person_N = mkNoun "dad" "dadka" "dad" "dadka" Masc ;
|
||||||
-- lin planet_N = mkN "" ;
|
-- lin planet_N = mkN "" ;
|
||||||
-- lin plastic_N = mkN "" ;
|
-- lin plastic_N = mkN "" ;
|
||||||
-- lin play_V = mkV "" ;
|
-- lin play_V = mkV "" ;
|
||||||
@@ -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 "" ;
|
||||||
@@ -312,7 +312,7 @@ lin see_V2 = mkV2 "ark" ;
|
|||||||
-- lin send_V3 = mkV3 "" ;
|
-- lin send_V3 = mkV3 "" ;
|
||||||
-- lin sew_V = mkV "" ;
|
-- lin sew_V = mkV "" ;
|
||||||
-- lin sharp_A = mkA "" ;
|
-- lin sharp_A = mkA "" ;
|
||||||
-- lin sheep_N = mkN "" ;
|
lin sheep_N = mkN "lax" fem ;
|
||||||
-- lin ship_N = mkN "" ;
|
-- lin ship_N = mkN "" ;
|
||||||
-- lin shirt_N = mkN "" ;
|
-- lin shirt_N = mkN "" ;
|
||||||
-- lin shoe_N = mkN "" ;
|
-- lin shoe_N = mkN "" ;
|
||||||
@@ -397,7 +397,7 @@ lin wait_V2 = mkV2 "sug" ;
|
|||||||
-- lin watch_V2 = mkV2 "" ;
|
-- lin watch_V2 = mkV2 "" ;
|
||||||
lin water_N = mkNoun "biyo" "biyaha" "biyo" "biyaha" Masc ; -- ?? gender
|
lin water_N = mkNoun "biyo" "biyaha" "biyo" "biyaha" Masc ; -- ?? gender
|
||||||
-- lin wet_A = mkA "" ;
|
-- lin wet_A = mkA "" ;
|
||||||
-- lin white_A = mkA "" ;
|
lin white_A = mkA "cad" ;
|
||||||
-- lin wide_A = mkA "" ;
|
-- lin wide_A = mkA "" ;
|
||||||
-- lin wife_N = mkN "" ;
|
-- lin wife_N = mkN "" ;
|
||||||
-- lin win_V2 = mkV2 "" ;
|
-- lin win_V2 = mkV2 "" ;
|
||||||
|
|||||||
@@ -23,12 +23,11 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
-- If cn has modifier, Nom ending attaches to the modifier
|
-- If cn has modifier, Nom ending attaches to the modifier
|
||||||
<_,Nom,True,_,_> => {nf=Def det.n ; c=Abs} ;
|
<_,Nom,True,_,_> => {nf=Def det.n ; c=Abs} ;
|
||||||
|
|
||||||
-- Definite
|
-- a Det with st=Indefinite uses Indef forms
|
||||||
<_,_,False,Definite,n> => {nf=Def n ; c=c} ;
|
<_,_,_,Indefinite,n> => {nf=Indef n ; c=c} ;
|
||||||
|
|
||||||
<_,_,False,Indefinite,n> => {nf=Indef n ; c=c} ;
|
-- All other determiners use the definite stem
|
||||||
|
_ => {nf=Def det.n ; c=c}
|
||||||
_ => {nf=Def det.n ; c=c} -- TODO check
|
|
||||||
} ;
|
} ;
|
||||||
art = gda2da cn.gda ! det.n ;
|
art = gda2da cn.gda ! det.n ;
|
||||||
num = case det.isNum of {True => Sg ; _ => det.n} ;
|
num = case det.isNum of {True => Sg ; _ => det.n} ;
|
||||||
@@ -42,7 +41,7 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
in dt.pref -- if det is numeral
|
in dt.pref -- if det is numeral
|
||||||
++ cn.s ! nfc.nf
|
++ cn.s ! nfc.nf
|
||||||
++ dt.s -- non-numeral det
|
++ dt.s -- non-numeral det
|
||||||
++ cn.mod ! num ! c
|
++ cn.mod ! det.st ! num ! c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : PN -> NP ;
|
-- : PN -> NP ;
|
||||||
@@ -57,10 +56,20 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
UsePron pron = pron ** {st = Definite} ;
|
UsePron pron = pron ** {st = Definite} ;
|
||||||
|
|
||||||
-- : Predet -> NP -> NP ; -- only the man
|
-- : Predet -> NP -> NP ; -- only the man
|
||||||
PredetNP predet np = np ** {
|
PredetNP predet np =
|
||||||
s = \\c => predet.s ++ np.s ! c ---- ?
|
let qnt = PossPron (pronTable ! np.a) ;
|
||||||
} ;
|
det = qnt.shortPoss ! predet.da ;
|
||||||
|
predetS : Str = case predet.isPoss of {
|
||||||
|
True => glue predet.s det ;
|
||||||
|
False => predet.s
|
||||||
|
} ;
|
||||||
|
in np ** {
|
||||||
|
s = \\c =>
|
||||||
|
case <np.isPron,predet.isPoss> of {
|
||||||
|
<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
|
||||||
@@ -73,9 +82,17 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
-- : NP -> Adv -> NP ; -- Paris today ; boys, such as ..
|
-- : NP -> Adv -> NP ; -- Paris today ; boys, such as ..
|
||||||
--AdvNP,ExtAdvNP = \np,adv -> np ** {} ; --adverbs are complicated
|
--AdvNP,ExtAdvNP = \np,adv -> np ** {} ; --adverbs are complicated
|
||||||
|
|
||||||
-- : NP -> RS -> NP ; -- Paris, which is here
|
-- : NP -> RS -> NP ; -- Paris, which is here
|
||||||
|
{- NB. technically, if the RS has undergone ConjRS, it could contain both
|
||||||
|
restrictive and appositive relative clauses. Quote Saeed p.215-216:
|
||||||
|
"When multiple relative clauses occur, this formal distinction is
|
||||||
|
maintained, since in the only context both can occur, on nouns with
|
||||||
|
determiners, restrictives are joined by ee while appositives employ oo."
|
||||||
|
In practice, we don't care--it's impossible to know on the RGL level
|
||||||
|
which RS are restrictive and which appositive, as it is semantic.
|
||||||
|
-}
|
||||||
RelNP np rs = np ** {
|
RelNP np rs = np ** {
|
||||||
s = \\c => objpron np ! c ++ rs.s ! npgender np ! c ;
|
s = \\c => objpron np ! c ++ "oo" ++ rs.s ! Indefinite ! npgennum np ! c ;
|
||||||
isPron = False ;
|
isPron = False ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -90,8 +107,8 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
|
|
||||||
-- MassNP : CN -> NP ;
|
-- MassNP : CN -> NP ;
|
||||||
MassNP cn = useN cn ** {
|
MassNP cn = useN cn ** {
|
||||||
s = table { Nom => cn.s ! NomSg ++ cn.mod ! Sg ! Nom ;
|
s = table { Nom => cn.s ! NomSg ++ cn.mod ! Indefinite ! Sg ! Nom ;
|
||||||
c => cn.s ! Indef Sg ++ cn.mod ! Sg ! c }
|
c => cn.s ! Indef Sg ++ cn.mod ! Indefinite ! Sg ! c }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -113,7 +130,8 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
-- Independent form uses plural morpheme, not gender-flipped allomorph
|
-- Independent form uses plural morpheme, not gender-flipped allomorph
|
||||||
<Pl,_> => num.s ! indep ++ quant.sp ! PlInv ! c ++ num.thousand } ;
|
<Pl,_> => num.s ! indep ++ quant.sp ! PlInv ! c ++ num.thousand } ;
|
||||||
isNum = num.isNum ;
|
isNum = num.isNum ;
|
||||||
n = num.n
|
n = num.n ;
|
||||||
|
shortPoss = \\da => quant.shortPoss ! da ++ num.s ! indep
|
||||||
} ;
|
} ;
|
||||||
-- d = case <num.isNum,quant.st> of {
|
-- d = case <num.isNum,quant.st> of {
|
||||||
-- <True,_> => Numerative ;
|
-- <True,_> => Numerative ;
|
||||||
@@ -124,7 +142,8 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
DetQuantOrd quant num ord =
|
DetQuantOrd quant num ord =
|
||||||
let theseFive = DetQuant quant num in theseFive ** {
|
let theseFive = DetQuant quant num in theseFive ** {
|
||||||
s = \\g,c => theseFive.s ! g ! c ++ ord.s ;
|
s = \\g,c => theseFive.s ! g ! c ++ ord.s ;
|
||||||
sp = \\g,c => theseFive.sp ! g ! c ++ ord.s
|
sp = \\g,c => theseFive.sp ! g ! c ++ ord.s ;
|
||||||
|
shortPoss = \\da => theseFive.shortPoss ! da ++ ord.s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Whether the resulting determiner is singular or plural depends on the
|
-- Whether the resulting determiner is singular or plural depends on the
|
||||||
@@ -170,7 +189,7 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
DefArt = defQuant "a" "kan" "tan" "kuwan" False ;
|
DefArt = defQuant "a" "kan" "tan" "kuwan" False ;
|
||||||
|
|
||||||
-- : Quant
|
-- : Quant
|
||||||
IndefArt = indefQuant ** {sp = \\gn,c => "1"} ; -- TODO sp forms
|
IndefArt = indefQuant ; -- TODO sp forms
|
||||||
|
|
||||||
-- : Pron -> Quant
|
-- : Pron -> Quant
|
||||||
PossPron pron =
|
PossPron pron =
|
||||||
@@ -224,19 +243,20 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
-- : AP -> CN -> CN
|
-- : AP -> CN -> CN
|
||||||
AdjCN ap cn = cn ** {
|
AdjCN ap cn = cn ** {
|
||||||
s = table { NomSg => cn.s ! Indef Sg ; -- When an adjective is added, noun loses case marker.
|
s = table { NomSg => cn.s ! Indef Sg ; -- When an adjective is added, noun loses case marker.
|
||||||
x => cn.s ! x } ;
|
x => cn.s ! x } ;
|
||||||
mod = \\n,c => cn.mod ! n ! Abs -- If there was something before, it is now in Abs
|
mod = \\st,n,c =>
|
||||||
++ case cn.hasMod of {
|
cn.mod ! st ! n ! Abs -- If there was something before, it is now in Abs
|
||||||
True => "oo" ;
|
++ andConj st cn.hasMod -- If the sentence is already modified, any new modifier needs to be introduced with conjunction
|
||||||
False => [] }
|
++ ap.s ! AF n c ;
|
||||||
++ ap.s ! AF n c ;
|
|
||||||
hasMod = True
|
hasMod = True
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- : CN -> RS -> CN ;
|
-- : CN -> RS -> CN ;
|
||||||
RelCN cn rs = cn ** {
|
RelCN cn rs = cn ** {
|
||||||
mod = \\n,c => cn.mod ! n ! c ++ rs.s ! gender cn ! c ;
|
mod = \\st,n,c => --what to do with subject case if there's both adj and RS?
|
||||||
|
cn.mod ! st ! n ! Abs
|
||||||
|
++ andConj st cn.hasMod
|
||||||
|
++ rs.s ! st ! gennum cn Sg ! c ; -- gennum cn Sg, because plural form is only for 1st person plural
|
||||||
hasMod = True ;
|
hasMod = True ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -263,7 +283,9 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
--2 Possessive and partitive constructs
|
--2 Possessive and partitive constructs
|
||||||
|
|
||||||
-- : PossNP : CN -> NP -> CN ;
|
-- : PossNP : CN -> NP -> CN ;
|
||||||
PossNP cn np = cn ** {mod = \\n,c => cn.mod ! n ! c ++ np.s ! Abs} ; -- guriga Axmed, not Axmed gurigiisa
|
PossNP cn np = cn ** { -- guriga Axmed, not Axmed gurigiisa
|
||||||
|
mod = \\st,n,c => cn.mod ! st ! n ! c ++ objpron np ! Abs
|
||||||
|
} ;
|
||||||
{-
|
{-
|
||||||
-- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
-- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
||||||
PartNP cn np = cn ** { } ;
|
PartNP cn np = cn ** { } ;
|
||||||
@@ -284,4 +306,12 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
-- : Det -> DAP ; -- this (or that)
|
-- : Det -> DAP ; -- this (or that)
|
||||||
DetDAP det = det ;
|
DetDAP det = det ;
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
oper
|
||||||
|
andConj : State -> Bool -> Str = \st,hasMod ->
|
||||||
|
case <st,hasMod> of {
|
||||||
|
<Indefinite,True> => "oo" ;
|
||||||
|
<Definite,True> => "ee" ;
|
||||||
|
_ => []
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,14 @@ oper
|
|||||||
|
|
||||||
lincat
|
lincat
|
||||||
Digit = LinDigit ;
|
Digit = LinDigit ;
|
||||||
|
|
||||||
|
{- Saeed p. 70-71: "When used with nouns, the cardinal numerals act as
|
||||||
|
the head of the construction and the counted noun occurs in the genitive
|
||||||
|
case. […] This construction also occurs with composite numerals like
|
||||||
|
laba boqol 'two hundred',
|
||||||
|
where laba 'two' is a feminine noun in absolutive case and
|
||||||
|
boqol 'hundred' is a masculine noun in genitive case.
|
||||||
|
Since laba is head, the whole nominal is feminine." -}
|
||||||
Sub10, Sub100, Sub1000, Sub1000000 = {
|
Sub10, Sub100, Sub1000, Sub1000000 = {
|
||||||
s : DForm => Str ;
|
s : DForm => Str ;
|
||||||
thousand : Str ; -- TODO figure out if this really works so
|
thousand : Str ; -- TODO figure out if this really works so
|
||||||
@@ -69,14 +77,14 @@ lin pot111 = {
|
|||||||
s = \\_ => "koob iyo" ++ n1.ten.s ;
|
s = \\_ => "koob iyo" ++ n1.ten.s ;
|
||||||
ord = "koob iyo" ++ n1.ten.ord ;
|
ord = "koob iyo" ++ n1.ten.ord ;
|
||||||
thousand = [] ;
|
thousand = [] ;
|
||||||
da = M KA ; -- TODO check
|
da = M KA ;
|
||||||
n = Pl
|
n = Pl
|
||||||
} ;
|
} ;
|
||||||
lin pot1to19 d = {
|
lin pot1to19 d = {
|
||||||
s = \\_ => d.unit.s ! Kow ++ "iyo" ++ n1.ten.s ;
|
s = \\_ => d.unit.s ! Hal ++ "iyo" ++ n1.ten.s ;
|
||||||
thousand = [] ;
|
thousand = [] ;
|
||||||
ord = d.unit.s ! Kow ++ "iyo" ++ n1.ten.ord ;
|
ord = d.unit.s ! Hal ++ "iyo" ++ n1.ten.ord ;
|
||||||
da = M KA ; -- TODO check
|
da = M KA ;
|
||||||
n = Pl
|
n = Pl
|
||||||
} ;
|
} ;
|
||||||
lin pot0as1 n = n ;
|
lin pot0as1 n = n ;
|
||||||
@@ -86,25 +94,24 @@ lin pot1 d = d.ten ** {
|
|||||||
n = Pl
|
n = Pl
|
||||||
} ;
|
} ;
|
||||||
lin pot1plus d e = d.ten ** {
|
lin pot1plus d e = d.ten ** {
|
||||||
s = \\b => d.unit.s ! Kow ++ "iyo" ++ e.s ! b ;
|
s = \\b => e.s ! b ++ "iyo" ++ d.ten.s ;
|
||||||
ord = d.unit.s ! Kow ++ "iyo" ++ e.ord ; -- TODO check
|
ord = e.s ! Hal ++ "iyo" ++ d.ten.ord ;
|
||||||
thousand = [] ;
|
thousand = [] ;
|
||||||
n = Pl ;
|
n = Pl ;
|
||||||
} ;
|
} ;
|
||||||
lin pot1as2 n = n ;
|
lin pot1as2 n = n ;
|
||||||
lin pot2 d = d ** {
|
lin pot2 d = d ** {
|
||||||
thousand = "boqol" ; -- TODO check
|
thousand = "boqol" ;
|
||||||
ord = d.s ! Kow ++ "boqlaad"
|
ord = d.s ! Hal ++ "boqlaad"
|
||||||
} ; -- TODO what's the def. art. allomorph?
|
} ;
|
||||||
lin pot2plus d e = d ** {
|
lin pot2plus d e = d ** {
|
||||||
s = \\b => d.s ! b ++ "boqol iyo" ++ e.s ! b ;
|
thousand = "boqol iyo" ++ e.s ! Hal ;
|
||||||
ord = d.ord ++ "boqol iyo" ++ e.ord ;
|
ord = d.s ! Hal ++ "boqol iyo" ++ e.ord ;
|
||||||
n = Pl} ;
|
n = Pl} ;
|
||||||
lin pot2as3 n = n ;
|
lin pot2as3 n = n ;
|
||||||
lin pot3 n = n ** {
|
lin pot3 n = n ** {
|
||||||
thousand = "kun" ;
|
thousand = n.thousand ++ "kun" ;
|
||||||
ord = n.s ! Kow ++ "kunaad" ;
|
ord = n.s ! Hal ++ "kunaad" ;
|
||||||
--da = M KA ; -- TODO check
|
|
||||||
n = Pl } ;
|
n = Pl } ;
|
||||||
|
|
||||||
lin pot3plus n m = n ** {
|
lin pot3plus n m = n ** {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
resource ParadigmsSom = open CatSom, ResSom, ParamSom, Prelude in {
|
resource ParadigmsSom = open CatSom, ResSom, ParamSom, NounSom, Prelude in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
@@ -32,6 +32,12 @@ oper
|
|||||||
u : Preposition ;
|
u : Preposition ;
|
||||||
noPrep : Preposition ;
|
noPrep : Preposition ;
|
||||||
|
|
||||||
|
-- TODO: add subjunctive too!
|
||||||
|
VVForm : Type ; -- Argument to give to mkVV
|
||||||
|
infinitive : VVForm ; -- Takes its complement in infinitive
|
||||||
|
subjunctive : VVForm ; -- Takes its complement as a clause in subjunctive
|
||||||
|
waa_in : VVForm ; -- No explicit verb, just uses "waa in" construction
|
||||||
|
|
||||||
|
|
||||||
--2 Nouns
|
--2 Nouns
|
||||||
|
|
||||||
@@ -85,6 +91,12 @@ oper
|
|||||||
mkV3 : V -> (_,_ : Preposition) -> V2 ; -- Already constructed verb with preposition
|
mkV3 : V -> (_,_ : Preposition) -> V2 ; -- Already constructed verb with preposition
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkVV : overload {
|
||||||
|
mkVV : (kar : Str) -> VV ; -- VV that takes its complement in infinitive.
|
||||||
|
mkVV : (rab : Str) -> VVForm -> VV ; -- Specify complement type: infinitive or subjunctive.
|
||||||
|
mkVV : V -> VVForm -> VV ; -- VV out of an existing V
|
||||||
|
} ;
|
||||||
|
|
||||||
-- TODO: actual constructors
|
-- TODO: actual constructors
|
||||||
-- mkVA : Str -> VA = \s -> lin VA (mkVerb s) ;
|
-- mkVA : Str -> VA = \s -> lin VA (mkVerb s) ;
|
||||||
--
|
--
|
||||||
@@ -104,17 +116,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 +137,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} ;
|
||||||
@@ -161,6 +173,11 @@ oper
|
|||||||
la = ResSom.La ;
|
la = ResSom.La ;
|
||||||
u = ResSom.U ;
|
u = ResSom.U ;
|
||||||
noPrep = ResSom.NoPrep ;
|
noPrep = ResSom.NoPrep ;
|
||||||
|
|
||||||
|
VVForm = ResSom.VVForm ;
|
||||||
|
infinitive = Infinitive ;
|
||||||
|
subjunctive = Subjunctive ;
|
||||||
|
waa_in = Waa_In ;
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
mkN = overload {
|
mkN = overload {
|
||||||
@@ -216,6 +233,36 @@ 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}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkVV = overload {
|
||||||
|
mkVV : (kar : Str) -> VV -- VV that takes its complement in infinitive.
|
||||||
|
= \kar -> lin VV ({vvtype=Infinitive} ** mkV kar) ;
|
||||||
|
mkVV : (rab : Str) -> VVForm -> VV -- Specify string and complement type:
|
||||||
|
= \rab,vvf -> lin VV ({vvtype=vvf} ** mkV rab) ;
|
||||||
|
mkVV : V -> VVForm -> VV
|
||||||
|
= \v,vvf -> lin VV (v ** {vvtype=vvf}) ;
|
||||||
|
mkVV : VVForm -> VV -- VV such as "waa in"
|
||||||
|
= \b -> let dummyV : V = mkV "in"
|
||||||
|
in lin VV (dummyV ** {vvtype=b ; s = \\_ => "in"})
|
||||||
|
} ;
|
||||||
|
|
||||||
|
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
|
||||||
|
} ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ oper
|
|||||||
vstar : pattern Str = #("a" | "e" | "i" | "o" | "u" | "y" | "w") ; -- semivowels included
|
vstar : pattern Str = #("a" | "e" | "i" | "o" | "u" | "y" | "w") ; -- semivowels included
|
||||||
vv : pattern Str = #("aa" | "ee" | "ii" | "oo" | "uu") ;
|
vv : pattern Str = #("aa" | "ee" | "ii" | "oo" | "uu") ;
|
||||||
c : pattern Str = #("m"|"n"|"p"|"b"|"t"|"d"|"k"|"g"|"f"|"v"
|
c : pattern Str = #("m"|"n"|"p"|"b"|"t"|"d"|"k"|"g"|"f"|"v"
|
||||||
|
|"s"|"h"|"l"|"j"|"r"|"z"|"c"|"q");
|
||||||
|
cstar : pattern Str = #("m"|"n"|"p"|"b"|"t"|"d"|"k"|"g"|"f"|"v" -- semivowels included
|
||||||
|"s"|"h"|"l"|"j"|"r"|"z"|"c"|"q"|"y"|"w");
|
|"s"|"h"|"l"|"j"|"r"|"z"|"c"|"q"|"y"|"w");
|
||||||
lmnr : pattern Str = #("l" | "m" | "n" | "r") ;
|
lmnr : pattern Str = #("l" | "m" | "n" | "r") ;
|
||||||
kpt : pattern Str = #("k" | "p" | "t") ;
|
kpt : pattern Str = #("k" | "p" | "t") ;
|
||||||
@@ -52,7 +54,7 @@ oper
|
|||||||
} where {
|
} where {
|
||||||
allomF : Str -> DefTA = \wiilka ->
|
allomF : Str -> DefTA = \wiilka ->
|
||||||
case wiilka of {
|
case wiilka of {
|
||||||
_ + "ta" => DA ; _ + "sha" => SHA ;
|
_ + "ta" => TA ; _ + "sha" => SHA ;
|
||||||
_ + "da" => DA ; _ + "dha" => DHA } ;
|
_ + "da" => DA ; _ + "dha" => DHA } ;
|
||||||
allomM : Str -> DefKA = \wiilka ->
|
allomM : Str -> DefKA = \wiilka ->
|
||||||
case wiilka of {
|
case wiilka of {
|
||||||
@@ -154,7 +156,7 @@ oper
|
|||||||
_ => Sg3 g } ;
|
_ => Sg3 g } ;
|
||||||
|
|
||||||
getNum : Agreement -> Number = \a ->
|
getNum : Agreement -> Number = \a ->
|
||||||
case a of { Sg1|Sg2|Sg3 _ => Sg ; _ => Pl } ;
|
case a of { Sg1|Sg2|Sg3 _|Impers => Sg ; _ => Pl } ;
|
||||||
|
|
||||||
plAgr : Agreement -> Agreement = \agr ->
|
plAgr : Agreement -> Agreement = \agr ->
|
||||||
case agr of { Sg1 => Pl1 Excl ;
|
case agr of { Sg1 => Pl1 Excl ;
|
||||||
@@ -175,7 +177,7 @@ oper
|
|||||||
Sg2_Prep => Sg2 ;
|
Sg2_Prep => Sg2 ;
|
||||||
Pl1_Prep i => Pl1 i ;
|
Pl1_Prep i => Pl1 i ;
|
||||||
Pl2_Prep => Pl2 ;
|
Pl2_Prep => Pl2 ;
|
||||||
_ => Pl3
|
_ => Sg3 Masc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
isP3 = overload {
|
isP3 = overload {
|
||||||
@@ -188,8 +190,17 @@ oper
|
|||||||
|
|
||||||
gender : {gda : GenderDefArt} -> Gender = \n ->
|
gender : {gda : GenderDefArt} -> Gender = \n ->
|
||||||
case n.gda of {FM _ _ => Fem ; _ => Masc} ;
|
case n.gda of {FM _ _ => Fem ; _ => Masc} ;
|
||||||
npgender : {a : Agreement} -> Gender = \n ->
|
|
||||||
case n.a of {Sg3 Fem => Fem ; _ => Masc} ;
|
gennum : {gda : GenderDefArt} -> Number -> GenNum = \gda,n ->
|
||||||
|
case n of {Pl => PlInv ; Sg =>
|
||||||
|
case gda.gda of {FM _ _ => SgFem ; _ => SgMasc}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
npgennum : {a : Agreement} -> GenNum = \n ->
|
||||||
|
case n.a of {
|
||||||
|
Sg2|Sg3 Fem => SgFem ;
|
||||||
|
Sg1|Sg3 Masc => SgMasc ;
|
||||||
|
_ => PlInv } ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Numerals
|
-- Numerals
|
||||||
@@ -242,7 +253,7 @@ oper
|
|||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Verbs
|
-- Verbs
|
||||||
|
|
||||||
-- Sayeed p. 84-85
|
-- Saeed p. 84-85
|
||||||
-- Tense: Past/Present/Future
|
-- Tense: Past/Present/Future
|
||||||
-- Aspect: Simple/Progressive/Habitual
|
-- Aspect: Simple/Progressive/Habitual
|
||||||
-- Mood: Declarative/Imperative/Conditional/Optative/Potential
|
-- Mood: Declarative/Imperative/Conditional/Optative/Potential
|
||||||
@@ -271,9 +282,14 @@ param
|
|||||||
| VPres Aspect VAgr Polarity
|
| VPres Aspect VAgr Polarity
|
||||||
| VNegPast Aspect
|
| VNegPast Aspect
|
||||||
| VPast Aspect VAgr
|
| VPast Aspect VAgr
|
||||||
-- | VRelShort -- "som är/har/…" TODO is this used in other verbs?
|
| VImp Number Polarity
|
||||||
| VRel Gender -- Reduced present general in relative clauses
|
| VRel GenNum {- Saeed p. 95-96 + ch 8
|
||||||
| VImp Number Polarity ;
|
Reduced present general in relative clauses; as absolutive
|
||||||
|
1/2SG/3SG M/2PL/3PL suga (VRel MascSg)
|
||||||
|
3 SG F sugta (VRel FemSg)
|
||||||
|
1PL sugna (VRel PlInv) -}
|
||||||
|
| VRelNeg -- Saeed p. 211 have: lahayn, be: ahayni
|
||||||
|
| VNegCond GenNum ;
|
||||||
|
|
||||||
VAgr =
|
VAgr =
|
||||||
Sg1_Sg3Masc
|
Sg1_Sg3Masc
|
||||||
@@ -284,6 +300,10 @@ param
|
|||||||
|
|
||||||
PredType = NoPred | Copula | NoCopula ;
|
PredType = NoPred | Copula | NoCopula ;
|
||||||
|
|
||||||
|
STM = Waa PredType | Waxa ;
|
||||||
|
|
||||||
|
VVForm = Infinitive | Subjunctive | Waa_In ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
if_then_Pol : Polarity -> Str -> Str -> Str = \p,t,f ->
|
if_then_Pol : Polarity -> Str -> Str -> Str = \p,t,f ->
|
||||||
case p of {Pos => t ; Neg => f } ;
|
case p of {Pos => t ; Neg => f } ;
|
||||||
@@ -300,6 +320,17 @@ oper
|
|||||||
Pl1 _ => Pl1_ ; Pl2 => Pl2_ ; Pl3 => Pl3_
|
Pl1 _ => Pl1_ ; Pl2 => Pl2_ ; Pl3 => Pl3_
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
isNeg : VForm -> Bool = \vf -> case vf of {
|
||||||
|
VNegPast _ => True ;
|
||||||
|
VNegCond _ => True ;
|
||||||
|
VRelNeg => True ;
|
||||||
|
VImp _ Neg => True ;
|
||||||
|
VPres _ _ Neg => True ;
|
||||||
|
_ => False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
showSTM : STM -> Str = \stm -> case stm of {
|
||||||
|
Waxa => "waxa" ; Waa _ => "waa" } ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Clauses
|
-- Clauses
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ concrete PhraseSom of Phrase = CatSom ** open Prelude, ResSom in {
|
|||||||
lin
|
lin
|
||||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
|
||||||
UttS s = let basecl = s.s ! False in {s = linBaseCl basecl} ;
|
UttS s = {s = s.s ! False} ;
|
||||||
UttQS qs = qs ;
|
UttQS qs = qs ;
|
||||||
|
|
||||||
UttImpSg pol imp =
|
UttImpSg pol imp =
|
||||||
@@ -17,7 +17,7 @@ concrete PhraseSom of Phrase = CatSom ** open Prelude, ResSom in {
|
|||||||
UttNP np = { s = np.s ! Abs} ;
|
UttNP np = { s = np.s ! Abs} ;
|
||||||
UttVP vp = { s = infVP vp } ;
|
UttVP vp = { s = infVP vp } ;
|
||||||
UttAdv adv = {s = linAdv adv} ;
|
UttAdv adv = {s = linAdv adv} ;
|
||||||
UttCN n = {s = linCN n } ;
|
UttCN n = {s = linCN n} ;
|
||||||
UttCard n = {s = n.s ! Mid} ;
|
UttCard n = {s = n.s ! Mid} ;
|
||||||
UttAP ap = { s = ap.s ! AF Sg Abs } ;
|
UttAP ap = { s = ap.s ! AF Sg Abs } ;
|
||||||
UttInterj i = i ;
|
UttInterj i = i ;
|
||||||
|
|||||||
@@ -6,10 +6,17 @@ concrete QuestionSom of Question = CatSom ** open
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
-- : Cl -> QCl ;
|
-- : Cl -> QCl ;
|
||||||
QuestCl cl = mergeQCl (cl.s ! Question) ;
|
QuestCl = cl2qcl ;
|
||||||
|
|
||||||
-- : IP -> VP -> QCl ;
|
-- : IP -> VP -> QCl ;
|
||||||
-- QuestVP ip vp = ;
|
QuestVP ip vp = -- TODO: if we want to contract baa + subj. pronoun, change ResSom.predVP
|
||||||
|
let clRaw : ClSlash = predVP ip vp ;
|
||||||
|
cl : ClSlash = clRaw ** {
|
||||||
|
stm = \\clt,p => case <clt,p> of {
|
||||||
|
<_,Pos> => "baa" ;
|
||||||
|
_ => clRaw.stm ! clt ! p }
|
||||||
|
}
|
||||||
|
in cl2qcl cl ;
|
||||||
|
|
||||||
-- : IP -> ClSlash -> QCl ; -- whom does John love
|
-- : IP -> ClSlash -> QCl ; -- whom does John love
|
||||||
--QuestSlash ip cls = ;
|
--QuestSlash ip cls = ;
|
||||||
@@ -36,7 +43,7 @@ concrete QuestionSom of Question = CatSom ** open
|
|||||||
-- Interrogative quantifiers have number forms and can take number modifiers.
|
-- Interrogative quantifiers have number forms and can take number modifiers.
|
||||||
|
|
||||||
-- : IQuant -> Num -> IDet ; -- which (five)
|
-- : IQuant -> Num -> IDet ; -- which (five)
|
||||||
--IdetQuant = NS.DetQuant ;
|
IdetQuant = NS.DetQuant ;
|
||||||
|
|
||||||
-- Interrogative adverbs can be formed prepositionally.
|
-- Interrogative adverbs can be formed prepositionally.
|
||||||
-- : Prep -> IP -> IAdv ; -- with whom
|
-- : Prep -> IP -> IAdv ; -- with whom
|
||||||
|
|||||||
@@ -6,31 +6,27 @@ lin
|
|||||||
-- : Cl -> RCl ; -- such that John loves her
|
-- : Cl -> RCl ; -- such that John loves her
|
||||||
-- RelCl cl = {s = cl.s ! Subord} ;
|
-- RelCl cl = {s = cl.s ! Subord} ;
|
||||||
|
|
||||||
{-
|
|
||||||
-- Sayeed p. 95-96 + ch 8
|
|
||||||
Reduced present general in relative clauses; as absolutive
|
|
||||||
1/2SG/3SG M/2PL/3PL sugá (VRel Masc)
|
|
||||||
3 SG F sugtá (VRel Fem)
|
|
||||||
1PL sugná -- not yet in the grammar
|
|
||||||
|
|
||||||
(18) (a) nimánka buugágga keená men-the books-the bring
|
|
||||||
'the men who bring the books'
|
|
||||||
(b) buugágga nimanku keenàan
|
|
||||||
books-the men-the bring 'the books which the men bring'
|
|
||||||
-}
|
|
||||||
-- : RP -> VP -> RCl ;
|
-- : RP -> VP -> RCl ;
|
||||||
RelVP rp vp = {s = \\g,c,t,a,p =>
|
{- NB. this works because vfSubord only puts different forms from vfStatement
|
||||||
let cls = predVPSlash impersNP vp ;
|
in Pres,Simul,Pos. RelVP needs a third set of forms in Abs,Pres,Simul,Pos,
|
||||||
rcl = mergeRCl (cls.s ! False) ; -- Other than present tense, just use normal verb forms
|
called "reduced present general" (Saeed p. 95-96 + ch 8).
|
||||||
in rp.s ++ case <g,c,t,a,p> of {
|
These forms are found in VRel in VP, and aren't chosen by predVP, so we put
|
||||||
<Fem,Abs,Pres,Simul,Pos> => linVP (VRel Fem) vp ;
|
them in manually in RelVP.
|
||||||
<Masc,Abs,Pres,Simul,Pos> => linVP (VRel Masc) vp ;
|
-}
|
||||||
_ => rcl.s ! t ! a ! p }
|
RelVP rp vp = {s = \\gn,c,t,a,p =>
|
||||||
|
let cls = predVP impersNP vp ;
|
||||||
|
rclSubord = cl2rcl cls ;
|
||||||
|
rclStatement = cl2rclNom cls ;
|
||||||
|
in rp.s ++ case <gn,c,t,a,p> of {
|
||||||
|
<g,Abs,Pres,Simul,Pos> => linVP (VRel g) Subord vp ; -- reduced present only in absolutive
|
||||||
|
<_,Abs,Pres,Simul,Neg> => linVP VRelNeg Subord vp ; -- special form for have and be
|
||||||
|
<_,Nom,Pres,Simul,Pos> => rclStatement.s ! t ! a ! p ; -- as nominative, use the usual forms, not subordinate
|
||||||
|
_ => rclSubord.s ! t ! a ! p } -- the rest is Subord because of negation.
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : RP -> ClSlash -> RCl ; -- whom John loves
|
-- : RP -> ClSlash -> RCl ; -- whom John loves
|
||||||
RelSlash rp cls =
|
RelSlash rp cls =
|
||||||
let rcl = mergeSTM True (cls.s ! True) -- in subordinate clause, STM is not included but subject pronoun is
|
let rcl = cl2relslash cls -- in subordinate clause, STM is not included but subject pronoun is
|
||||||
in rcl ** {s = \\g,c,t,a,p => rp.s ++ rcl.s ! t ! a ! p} ;
|
in rcl ** {s = \\g,c,t,a,p => rp.s ++ rcl.s ! t ! a ! p} ;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,14 @@ oper
|
|||||||
Noun3 : Type = Noun ;
|
Noun3 : Type = Noun ;
|
||||||
|
|
||||||
CNoun : Type = Noun ** {
|
CNoun : Type = Noun ** {
|
||||||
mod : Number => Case => Str ;
|
mod : State -- for conjunctions: oo for indef, ee for def
|
||||||
|
=> Number => Case => Str ;
|
||||||
hasMod : Bool ;
|
hasMod : Bool ;
|
||||||
isPoss : Bool -- to prevent impossible forms in ComplN2 with Ns that have short possessive, e.g. "father"
|
isPoss : Bool -- to prevent impossible forms in ComplN2 with Ns that have short possessive, e.g. "father"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
cn2str : Number -> Case -> CNoun -> Str = \n,c,cn ->
|
cn2str : Number -> Case -> CNoun -> Str = \n,c,cn ->
|
||||||
cn.s ! Indef n ++ cn.mod ! n ! c ;
|
cn.s ! Indef n ++ cn.mod ! Indefinite ! n ! c ;
|
||||||
|
|
||||||
PNoun : Type = {s : Str ; a : Agreement} ;
|
PNoun : Type = {s : Str ; a : Agreement} ;
|
||||||
|
|
||||||
@@ -154,23 +155,20 @@ oper
|
|||||||
False => np.s} ;
|
False => np.s} ;
|
||||||
|
|
||||||
useN : Noun -> CNoun ** BaseNP = \n -> n **
|
useN : Noun -> CNoun ** BaseNP = \n -> n **
|
||||||
{ mod = \\_,_ => [] ; hasMod = False ;
|
{ mod = \\_,_,_ => [] ; hasMod = False ;
|
||||||
a = Sg3 (gender n) ; isPron,isPoss = False ;
|
a = Sg3 (gender n) ; isPron,isPoss = False ;
|
||||||
empty = [] ; st = Indefinite
|
empty = [] ; st = Indefinite
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
emptyNP : NounPhrase = {
|
emptyNP : NounPhrase = {
|
||||||
s = \\_ => [] ;
|
s = \\_ => [] ;
|
||||||
a = Pl3 ;
|
a = Sg3 Masc ;
|
||||||
isPron = False ;
|
isPron = False ;
|
||||||
empty = [] ;
|
empty = [] ;
|
||||||
st = Indefinite
|
st = Indefinite
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
impersNP : NounPhrase = emptyNP ** {
|
impersNP : NounPhrase = pronTable ! Impers ;
|
||||||
a = Impers ;
|
|
||||||
isPron = True
|
|
||||||
} ;
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Pronouns
|
-- Pronouns
|
||||||
@@ -184,6 +182,18 @@ oper
|
|||||||
sp : Case => Str ;
|
sp : Case => Str ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
{- Saeed p.115: "This combination of possessive and article [kay-ga, tay-da]
|
||||||
|
is the basic form but possessives occur with the full range of determiners,
|
||||||
|
with associated meanings, for example:
|
||||||
|
remote article kii/tii: gurigaagii 'your house (remote)'
|
||||||
|
demonstrative kaas/taas: gurigaagaas 'that house of yours'
|
||||||
|
interrogative kee/tee: gurigaagee? 'which house of yours?'"
|
||||||
|
|
||||||
|
Since RGL abstract syntax doesn't allow combining two Quants, the way to go is
|
||||||
|
to have another Pron -> Quant function in Extra, which forms Quants such as
|
||||||
|
-gaagii, -gaagaas, -gaagee.
|
||||||
|
-}
|
||||||
|
|
||||||
pronTable : Agreement => Pronoun = table {
|
pronTable : Agreement => Pronoun = table {
|
||||||
Sg1 => {
|
Sg1 => {
|
||||||
s = table {Nom => "aan" ; Abs => "i"} ;
|
s = table {Nom => "aan" ; Abs => "i"} ;
|
||||||
@@ -234,10 +244,10 @@ oper
|
|||||||
poss = {s, short = quantTable "ood" ; sp = gnTable "ood" "ood" "uwood"}
|
poss = {s, short = quantTable "ood" ; sp = gnTable "ood" "ood" "uwood"}
|
||||||
} ;
|
} ;
|
||||||
Impers => {
|
Impers => {
|
||||||
s = table {Nom => "la" ; Abs => "la"} ;
|
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"}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -290,7 +300,7 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
Numeral : Type = BaseNum ** {
|
Numeral : Type = BaseNum ** {
|
||||||
ord : Str -- whether to choose Numerative as the value of NForm
|
ord : Str
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
baseQuant : BaseQuant = {
|
baseQuant : BaseQuant = {
|
||||||
@@ -316,6 +326,12 @@ oper
|
|||||||
st = Definite ;
|
st = Definite ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
defIQuant : Str -> Quant = \ee ->
|
||||||
|
let quantRaw = defQuant ee ("k"+ee) ("t"+ee) ("kuw"+ee) False
|
||||||
|
in quantRaw ** {
|
||||||
|
s = \\da,c => quantRaw.s ! da ! Abs ;
|
||||||
|
sp = \\gn,c => quantRaw.sp ! gn ! Abs } ;
|
||||||
|
|
||||||
gnTable : (m,f,p : Str) -> (GenNum => Str) = \m,f,p ->
|
gnTable : (m,f,p : Str) -> (GenNum => Str) = \m,f,p ->
|
||||||
table {SgMasc => m ; SgFem => f ; _ => p} ;
|
table {SgMasc => m ; SgFem => f ; _ => p} ;
|
||||||
|
|
||||||
@@ -453,14 +469,15 @@ 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 (Sayeed 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} ;
|
||||||
|
|
||||||
|
VV : Type = Verb ** {vvtype : VVForm} ;
|
||||||
|
|
||||||
-- Saeed page 79:
|
-- Saeed page 79:
|
||||||
-- "… the reference form is the imperative singular form
|
-- "… the reference form is the imperative singular form
|
||||||
@@ -523,7 +540,7 @@ oper
|
|||||||
VPres Progressive Pl3_ pol => progr + "aan" ;
|
VPres Progressive Pl3_ pol => progr + "aan" ;
|
||||||
|
|
||||||
VPast Simple Sg1_Sg3Masc
|
VPast Simple Sg1_Sg3Masc
|
||||||
=> qaat + ay ;
|
=> qaat + ay ;
|
||||||
VPast Simple Sg2_Sg3Fem => arag + t + ay ; -- t, d or s
|
VPast Simple Sg2_Sg3Fem => arag + t + ay ; -- t, d or s
|
||||||
VPast Simple Pl1_ => arag + n + ay ;
|
VPast Simple Pl1_ => arag + n + ay ;
|
||||||
VPast Simple Pl2_ => arag + t + "een" ; -- t, d or s
|
VPast Simple Pl2_ => arag + t + "een" ; -- t, d or s
|
||||||
@@ -539,6 +556,10 @@ oper
|
|||||||
VNegPast Simple => arkin ;
|
VNegPast Simple => arkin ;
|
||||||
VNegPast Progressive => progr + "n" ;
|
VNegPast Progressive => progr + "n" ;
|
||||||
|
|
||||||
|
-- TODO check conjugations 2 and 3
|
||||||
|
VNegCond PlInv => arag + n + "een" ;
|
||||||
|
VNegCond SgMasc => qaat + "een" ; -- for most verbs same as VPast Simple Pl3_
|
||||||
|
VNegCond SgFem => arag + t + "een" ; -- for most verbs same as VPast Simple Pl2_
|
||||||
|
|
||||||
VImp Sg Pos => arag ;
|
VImp Sg Pos => arag ;
|
||||||
VImp Pl Pos => qaat + "a" ;
|
VImp Pl Pos => qaat + "a" ;
|
||||||
@@ -546,10 +567,14 @@ oper
|
|||||||
VImp Pl Neg => qaat + "ina" ;
|
VImp Pl Neg => qaat + "ina" ;
|
||||||
|
|
||||||
VInf => arki ;
|
VInf => arki ;
|
||||||
-- VRelShort => arki ; -- TODO does this exist?
|
VRel SgMasc => qaat + "a" ;
|
||||||
VRel Masc => qaat + "a" ;
|
VRel SgFem => arag + t + "a" ;
|
||||||
VRel Fem => arag + t + "a" } ;
|
VRel PlInv => arag + "na" ;
|
||||||
|
VRelNeg => qaat + "o" -- TODO check
|
||||||
|
|
||||||
|
} ;
|
||||||
sii, dhex = [] ;
|
sii, dhex = [] ;
|
||||||
|
isCopula = False ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
@@ -611,14 +636,18 @@ oper
|
|||||||
VPast _ Pl2_ => "ahaydeen" ;
|
VPast _ Pl2_ => "ahaydeen" ;
|
||||||
VPast _ Pl3_ => "ahaayeen" ;
|
VPast _ Pl3_ => "ahaayeen" ;
|
||||||
VNegPast _ => "ahi" ;
|
VNegPast _ => "ahi" ;
|
||||||
--VRelShort => "ah" ;
|
VNegCond SgMasc => "ahaadeen" ; -- 1SG/3 SG M/3PL
|
||||||
VRel _ => "ah" ; -- TODO find right forms
|
VNegCond SgFem => "ahaateen" ; -- 2SG/3 SG F/2PL
|
||||||
|
VNegCond PlInv => "ahaanneen" ; -- 1PL
|
||||||
|
VRel _ => "ah" ; -- All persons: see Nilsson p. 78. TODO check Saeed p. 103
|
||||||
|
VRelNeg => "ahayni" ; -- Saeed
|
||||||
VInf => "ahaan" ;
|
VInf => "ahaan" ;
|
||||||
VImp Sg pol => if_then_Pol pol "ahaw" "ahaanin" ;
|
VImp Sg pol => if_then_Pol pol "ahaw" "ahaanin" ;
|
||||||
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 =
|
||||||
@@ -629,30 +658,30 @@ oper
|
|||||||
VPres _ Pl1_ Pos => "leenahay" ;
|
VPres _ Pl1_ Pos => "leenahay" ;
|
||||||
VPres _ Pl2_ Pos => "leedihiin" ;
|
VPres _ Pl2_ Pos => "leedihiin" ;
|
||||||
VPres _ Pl3_ Pos => "leeyihiin" ;
|
VPres _ Pl3_ Pos => "leeyihiin" ;
|
||||||
VPast asp agr => "l" + copula.s ! VPast asp agr ;
|
|
||||||
-- VRelShort => "leh" ;
|
VPres _ Sg1_Sg3Masc Neg => "lihi" ;
|
||||||
VRel _ => "leh" ; -- TODO find right forms
|
VPres _ Sg2_Sg3Fem Neg => "lihid" ;
|
||||||
|
VPres _ Pl1_ Neg => "lihin" ;
|
||||||
|
VPres _ Pl2_ Neg => "lihidin" ;
|
||||||
|
VPres _ Pl3_ Neg => "laha" ;
|
||||||
|
|
||||||
|
VNegPast _ => "lahayn" ;
|
||||||
|
|
||||||
|
VPast asp agr => "l" + copula.s ! VPast asp agr ;
|
||||||
|
VNegCond agr => "l" + copula.s ! VNegCond agr ;
|
||||||
|
VRel _ => "leh" ; -- All persons: see Nilsson p. 78
|
||||||
|
VRelNeg => "lahayn" ;
|
||||||
x => hold_V.s ! x }
|
x => hold_V.s ! x }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Till VERBFRASEN ansluter sig
|
|
||||||
-- · satstypsmarkörer (waa, ma...),
|
|
||||||
-- · subjekts-pronomenet la man,
|
|
||||||
-- · objektspronomenen,
|
|
||||||
-- · prepositionerna och
|
|
||||||
-- · riktnings-adverben soó (mot en plats/person), sií (bort frånen plats/person), wadá tillsammans (mot en gemensam punkt), kalá iväg, isär (bort från en gemensam punkt).
|
|
||||||
-- Riktningsadverben har ibland en mycket konkret betydelse, men många gånger är betydelsen mera abstrakt.
|
|
||||||
|
|
||||||
-- Till satsmarkörerna, dvs. både fokusmarkörerna och satstypsmarkörerna ansluter sig
|
|
||||||
-- subjektspronomenen aan, aad, uu, ay, aynu, men inte la (man).
|
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
-- VP
|
-- VP
|
||||||
|
|
||||||
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 ** {
|
||||||
@@ -662,23 +691,29 @@ oper
|
|||||||
|
|
||||||
Complement : Type = {
|
Complement : Type = {
|
||||||
comp : Agreement => {p1,p2 : Str} ; -- Agreement for AP complements
|
comp : Agreement => {p1,p2 : Str} ; -- Agreement for AP complements
|
||||||
pred : PredType ; -- to choose right sentence type marker and copula
|
stm : STM ; -- to choose right sentence type marker
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
VerbPhrase : Type = BaseVerb ** Complement ** BaseAdv ** {
|
VerbPhrase : Type = BaseVerb ** Complement ** BaseAdv ** {
|
||||||
c2 : PrepCombination ; -- Prepositions can combine together and with object pronoun.
|
c2 : PrepCombination ; -- Prepositions can combine together and with object pronoun.
|
||||||
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 : {subjunc : Str ; -- "waa in" or subjunctive construction: "in" is placed here
|
||||||
miscAdv : Str ; -- dump for any other kind of adverb, that isn't
|
inf : Str ; -- auxiliary VV with infinitive argument
|
||||||
} ; -- in a closed class of particles or made with PrepNP.
|
subcl : Agreement => Str} -- VV complement if it's a subordinate clause
|
||||||
|
} ;
|
||||||
|
|
||||||
VPSlash : Type = VerbPhrase ;
|
VPSlash : Type = VerbPhrase ;
|
||||||
|
|
||||||
useV : Verb -> VerbPhrase = \v -> v ** {
|
useV : Verb -> VerbPhrase = \v -> v ** {
|
||||||
comp = \\_ => <[],[]> ;
|
comp = \\_ => <[],[]> ;
|
||||||
pred = NoPred ;
|
stm = case v.isCopula of { -- can change into Waxa in ComplVV
|
||||||
vComp,berri,miscAdv,refl = [] ;
|
True => Waa Copula ;
|
||||||
|
False => Waa NoPred
|
||||||
|
} ;
|
||||||
|
vComp = {subjunc, inf = [] ;
|
||||||
|
subcl = \\_ => []} ;
|
||||||
|
berri,miscAdv = [] ;
|
||||||
c2 = Single NoPrep ;
|
c2 = Single NoPrep ;
|
||||||
obj2 = {s = [] ; a = P3_Prep} ;
|
obj2 = {s = [] ; a = P3_Prep} ;
|
||||||
secObj = []
|
secObj = []
|
||||||
@@ -692,7 +727,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 {
|
||||||
@@ -719,9 +754,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.
|
||||||
@@ -745,122 +780,235 @@ 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.
|
||||||
BaseCl : Type = {beforeSTM, stm, afterSTM : Str} ; -- adverbs, subjects, all that comes before sentence type marker. Eventual Subj attaches to the part after STM.
|
|
||||||
Clause : Type = {s : ClType => Tense => Anteriority => Polarity => BaseCl} ;
|
|
||||||
ClSlash : Type = {s : Bool {-is subordinate-} => Tense => Anteriority => Polarity => BaseCl} ;
|
|
||||||
Sentence : Type = {s : Bool {-is subordinate-} => BaseCl} ;
|
|
||||||
RClause : Type = {s : Gender => Case => Tense => Anteriority => Polarity => Str} ;
|
|
||||||
QClause : Type = {s : Tense => Anteriority => Polarity => Str} ;
|
|
||||||
|
|
||||||
mergeQCl : (Tense => Anteriority => Polarity => BaseCl) -> QClause = mergeSTM True ;
|
|
||||||
mergeRCl : (Tense => Anteriority => Polarity => BaseCl) -> QClause = mergeSTM False ;
|
|
||||||
|
|
||||||
mergeSTM : Bool -> (Tense => Anteriority => Polarity => BaseCl) -> QClause = \includeSTM,b ->
|
{- After PredVP, we might still want to add more adverbs (QuestIAdv),
|
||||||
{s = \\t,a,p => (b ! t ! a ! p).beforeSTM
|
but we're done with verb inflection.
|
||||||
++ if_then_Str includeSTM (b ! t ! a ! p).stm []
|
-}
|
||||||
++ (b ! t ! a ! p).afterSTM
|
ClSlash : Type = BaseAdv ** {
|
||||||
|
-- Fixed in Cl
|
||||||
|
subj : {noun, pron : Str ; isP3 : Bool} ; -- noun and subject pronoun if applicable
|
||||||
|
obj2 : NPLite ;
|
||||||
|
secObj : Str ;
|
||||||
|
c2 : PrepCombination ; -- NB. QuestIAdv can add more prepositions
|
||||||
|
comp : {p1,p2 : Str} ;
|
||||||
|
vComp : {inf,subcl,subjunc : Str} ;
|
||||||
|
|
||||||
|
-- Still open
|
||||||
|
pred : ClType => Tense => Anteriority => Polarity => Str ;
|
||||||
|
stm : ClType => Polarity => Str
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
predVPSlash : NounPhrase -> VPSlash -> ClSlash = \np,vps ->
|
Clause : Type = {s : Tense => Anteriority => Polarity => Str} ;
|
||||||
let cl = predVP np vps in {s = table {
|
QClause = Clause ;
|
||||||
True => cl.s ! Subord ;
|
RClause : Type = {s : GenNum => Case => Tense => Anteriority => Polarity => Str} ;
|
||||||
False => cl.s ! Statement }
|
Sentence : Type = {s : Bool {-is subordinate-} => Str} ;
|
||||||
} ;
|
|
||||||
|
|
||||||
predVP : NounPhrase -> VerbPhrase -> Clause = \np,vps -> {
|
predVPslash = predVP ; -- Cl and ClSlash are the same category
|
||||||
s = \\cltyp,t,a,p =>
|
|
||||||
let predRaw : {fin : Str ; inf : Str} = vf cltyp t a p subj.a vp ;
|
predVP : NounPhrase -> VerbPhrase -> ClSlash = \np,vps -> vp ** {
|
||||||
pred : {fin : Str ; inf : Str} = case <cltyp,p,vp.pred> of {
|
subj = {noun = subjnoun ; pron = subjpron ; isP3 = isP3 subj.a} ;
|
||||||
<Statement,Pos,NoCopula> => {fin,inf = []} ;
|
pred = \\cltyp,t,a,p =>
|
||||||
<_ , _, Copula> => {fin = presCopula ! {agr=subj.a ; pol=p} ; inf=[]} ;
|
let predRaw = vf cltyp t a p subj.a vp ;
|
||||||
_ => predRaw
|
in case <cltyp, p, t, vp.stm, subj.a> of {
|
||||||
|
<Statement, Pos, Pres, Waa NoCopula, Sg3 _|Pl3> -- VP comes from CompNP/CompCN + P3 subject
|
||||||
|
=> [] ;
|
||||||
|
|
||||||
|
<_, _, Pres, Waa (Copula|NoCopula), _> -- Comp* present tense + any subject
|
||||||
|
=> presCopula ! {agr=subj.a ; pol=p} ;
|
||||||
|
|
||||||
|
_ => predRaw -- Any other verb
|
||||||
} ;
|
} ;
|
||||||
subjnoun : Str = if_then_Str np.isPron np.empty (subj.s ! Nom) ;
|
|
||||||
subjpron : Str = if_then_Str np.isPron (subj.s ! Nom) np.empty ;
|
stm = \\cltyp,pol =>
|
||||||
obj : {p1,p2 : Str} =
|
case <cltyp,pol> of {
|
||||||
let o : {p1,p2 : Str} = vp.comp ! subj.a ;
|
<Statement,Pos> => showSTM vp.stm ;
|
||||||
bind : Str = case <isPassive vp,vp.obj2.a, vp.c2, vp.pred> of {
|
<Statement,Neg> => "ma" ;
|
||||||
<False,P3_Prep,Single NoPrep,NoPred> => [] ;
|
<Question,Pos> => "ma" ;
|
||||||
_ => BIND } ;
|
<Question,Neg> => "sow" ;
|
||||||
in case <cltyp,p> of {
|
<Subord,Pos> => [] ;
|
||||||
<Statement,Neg> => {p2 = [] ; p1 = o.p1 ++ o.p2 ++ bind} ;
|
<Subord,Neg> => "aan"
|
||||||
_ => o
|
} ;
|
||||||
-- object pronoun, prepositions and negation all contract
|
comp = vp.comp ! subj.a ;
|
||||||
} ;
|
vComp = vp.vComp ** {
|
||||||
stm : {p1,p2 : Str} = case cltyp of {
|
subcl = vp.vComp.subcl ! subj.a
|
||||||
Subord => {p1 = if_then_Pol p [] "aan" ; -- if we form a ClSlash, no sentence type marker; negation with aan (Sayeed p. 210)
|
}
|
||||||
p2 = if_then_Pol p subjpron []} ;
|
} where {
|
||||||
Question => {p1 = "ma" ; p2 = []} ; -- TODO find out how negative questions work
|
vp : VerbPhrase = case isPassive vps of {
|
||||||
Statement => case <p,vp.pred,subj.a> of {
|
True => insertComp vps np ;
|
||||||
<Pos,Copula|NoCopula,Sg3 _|Impers> => {p1 = "waa" ; p2 = []} ;
|
_ => vps } ;
|
||||||
_ => stmarkerNoContr ! subj.a ! p }} ;
|
subj : NounPhrase = case isPassive vps of {
|
||||||
in (wordOrder subjnoun subjpron stm obj pred vp) ;
|
True => impersNP ;
|
||||||
} where {
|
_ => np } ;
|
||||||
vp = case isPassive vps of {
|
subjnoun : Str = case np.isPron of {
|
||||||
True => complSlash (insertComp vps np) ;
|
True => np.empty ;
|
||||||
_ => complSlash vps } ;
|
False => subj.s ! Nom
|
||||||
subj = case isPassive vps of {True => impersNP ; _ => np}
|
} ;
|
||||||
|
subjpron : Str = case <vp.stm,subj.a> of {
|
||||||
|
<Waa (Copula|NoCopula),Pl3|Sg3 _|Impers>
|
||||||
|
=> np.empty ;
|
||||||
|
_ => (pronTable ! subj.a).s ! Nom
|
||||||
|
}
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
wordOrder : (sn,sp : Str) -> (stm,obj : {p1,p2 : Str}) -> {fin,inf : Str} -> VerbPhrase -> BaseCl =
|
-- just like complSlash but for Cl
|
||||||
\subjnoun,subjpron,stm,obj,pred,vp -> {
|
complCl : ClSlash -> ClSlash = \cl -> let np = cl.obj2 in cl ** {
|
||||||
beforeSTM = vp.berri -- AdV
|
comp = {p1 = np.s ++ cl.comp.p1 ;
|
||||||
++ subjnoun -- subject if it's a noun
|
p2 = cl.comp.p2 ++ prepCombTable ! np.a ! cl.c2}
|
||||||
++ obj.p1 ; -- object if it's a noun
|
} ;
|
||||||
stm = stm.p1 ; -- sentence type marker
|
|
||||||
afterSTM = stm.p2 -- possible subj. pronoun
|
|
||||||
++ obj.p2 -- object if it's a pronoun
|
|
||||||
++ vp.sii -- restricted set of particles
|
|
||||||
++ vp.dhex -- restricted set of nouns/adverbials
|
|
||||||
++ vp.secObj -- "second object"
|
|
||||||
++ vp.vComp -- VV complement
|
|
||||||
++ pred.inf -- potential infinitive/participle
|
|
||||||
++ pred.fin -- the verb inflected
|
|
||||||
++ vp.miscAdv } ; ---- NB. Only used if there are several adverbs.
|
|
||||||
---- Primary places for adverbs are obj, sii or dhex.
|
|
||||||
|
|
||||||
VFun : Type = Tense -> Anteriority -> Polarity -> Agreement -> Verb
|
|
||||||
-> {fin : Str ; inf : Str} ;
|
-- RelVP: subject pronoun is never included
|
||||||
|
cl2rcl : ClSlash -> Clause =
|
||||||
|
let hasSubjPron : Bool = False ;
|
||||||
|
hasSTM : Bool = False ;
|
||||||
|
isRel : Bool = True ;
|
||||||
|
in wordOrder Subord isRel hasSubjPron hasSTM ;
|
||||||
|
|
||||||
|
-- No subject pronoun, no STM, but use verb forms from Statement
|
||||||
|
cl2rclNom : ClSlash -> Clause = \cls ->
|
||||||
|
let hasSubjPron : Bool = False ;
|
||||||
|
hasSTM : Bool = False ;
|
||||||
|
isRel : Bool = True ;
|
||||||
|
in wordOrder Statement isRel hasSubjPron hasSTM cls ;
|
||||||
|
|
||||||
|
-- RelSlash: subject pronoun is included if it's not 3rd person
|
||||||
|
-- TODO check this rule with more example sentences
|
||||||
|
cl2relslash : ClSlash -> Clause =
|
||||||
|
let hasSubjPron : Bool = True ;
|
||||||
|
hasSTM : Bool = False ;
|
||||||
|
isRel : Bool = True ;
|
||||||
|
in wordOrder Subord isRel hasSubjPron hasSTM ;
|
||||||
|
|
||||||
|
-- Question clauses: subject pronoun not included, STM is
|
||||||
|
cl2qcl : ClSlash -> Clause =
|
||||||
|
let hasSubjPron : Bool = False ;
|
||||||
|
hasSTM : Bool = True ;
|
||||||
|
isRel : Bool = False ;
|
||||||
|
in wordOrder Question isRel hasSubjPron hasSTM ;
|
||||||
|
|
||||||
|
-- Sentence: include subject pronoun and STM.
|
||||||
|
-- When subordinate, include "in".
|
||||||
|
cl2sentence : Bool -> ClSlash -> Clause = \isSubord,cls -> {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
let cltyp : ClType = case isSubord of {
|
||||||
|
True => Subord ;
|
||||||
|
False => Statement } ;
|
||||||
|
cl : ClSlash = case isSubord of { -- add "in" to the clause if used as subordinate
|
||||||
|
True => cls ** {vComp = cls.vComp ** {subjunc = "in"}} ;
|
||||||
|
False => cls } ;
|
||||||
|
sent = wordOrder cltyp False True True cl
|
||||||
|
in sent.s ! t ! a ! p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
wordOrder : ClType -> (rel,sp,stm : Bool) -> ClSlash -> Clause = \cltyp,isRel,hasSubjPron,hasSTM,incomplCl -> {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
let -- Put all arguments in their right place
|
||||||
|
cl : ClSlash = complCl incomplCl ;
|
||||||
|
|
||||||
|
-- Contractions
|
||||||
|
bind : Str = case <isPassive cl, cl.obj2.a, cl.c2> of {
|
||||||
|
<False,P3_Prep,Single NoPrep> => [] ; -- nothing to attach to the STM
|
||||||
|
_ => BIND } ; -- something to attach, use BIND
|
||||||
|
obj : {p1,p2 : Str} = case <cltyp,p> of {
|
||||||
|
<Statement,Neg> -- object pronoun and prepositions contract with negation
|
||||||
|
=> {p2 = [] ; p1 = cl.comp.p1 ++ cl.comp.p2 ++ bind} ;
|
||||||
|
_ => cl.comp } ;
|
||||||
|
|
||||||
|
-- Placement of object noun varies depending on type of clause
|
||||||
|
statementNounObj = case cltyp of {
|
||||||
|
Statement => obj.p1 ;
|
||||||
|
_ => [] } ;
|
||||||
|
subordNounObj = case cltyp of {
|
||||||
|
Subord => obj.p1 ;
|
||||||
|
_ => [] } ;
|
||||||
|
questionNounObj = case cltyp of {
|
||||||
|
Question => obj.p1 ;
|
||||||
|
_ => [] } ;
|
||||||
|
|
||||||
|
-- Control whether to include subject pronoun and STM
|
||||||
|
subjpron : Str = case <hasSubjPron,p,cl.subj.isP3,isRel> of {
|
||||||
|
<True,Pos,True,True> => [] ;
|
||||||
|
<True,Pos,_,_> => cl.subj.pron ;
|
||||||
|
_ => [] } ;
|
||||||
|
stm : Str = case <hasSTM,p> of {
|
||||||
|
<True,_> => cl.stm ! cltyp ! p ;
|
||||||
|
<_,Neg> => cl.stm ! cltyp ! p ; -- negation overrides hasSTM=False
|
||||||
|
_ => [] }
|
||||||
|
in cl.berri -- AdV
|
||||||
|
++ cl.subj.noun -- subject if it's a noun
|
||||||
|
++ statementNounObj -- noun object if it's a statement
|
||||||
|
|
||||||
|
++ stm
|
||||||
|
|
||||||
|
++ cl.vComp.subjunc -- "waa in" construction /
|
||||||
|
++ subjpron -- subject pronoun
|
||||||
|
|
||||||
|
++ subordNounObj -- noun object if it's subordinate clause: "timir aan /laf/ lahayn" (Saeed p. 210-211)
|
||||||
|
++ obj.p2 -- object if it's a pronoun
|
||||||
|
++ cl.sii -- restricted set of particles
|
||||||
|
++ cl.dhex -- restricted set of nouns/adverbials
|
||||||
|
++ cl.secObj -- "second object"
|
||||||
|
++ cl.vComp.inf -- VV complement, if it's infinitive
|
||||||
|
++ cl.pred ! cltyp ! t ! a ! p -- the inflecting verb
|
||||||
|
++ questionNounObj -- noun object if it's a question
|
||||||
|
++ cl.vComp.subcl -- VV complement, if it's subordinate clause
|
||||||
|
++ cl.miscAdv ---- NB. Only used if there are several adverbs, or for "waa in" construction.
|
||||||
|
} ; ---- Primary places for adverbs are obj, sii or dhex.
|
||||||
|
|
||||||
|
|
||||||
|
VFun : Type = Tense -> Anteriority -> Polarity -> Agreement -> BaseVerb
|
||||||
|
-> Str ;
|
||||||
|
|
||||||
vf : ClType -> VFun = \clt -> case clt of {
|
vf : ClType -> VFun = \clt -> case clt of {
|
||||||
Subord => vfSubord ; _ => vfStatement } ;
|
Subord => vfSubord ; _ => vfStatement } ;
|
||||||
|
|
||||||
vfStatement : VFun = \t,ant,p,agr,vp ->
|
vfStatement : VFun = \t,ant,p,agr,vp ->
|
||||||
case <t,ant> of {
|
case <t,ant,p> of {
|
||||||
<Pres,Simul> => {fin = presV vp ; inf = [] } ;
|
<Cond,_,Pos> => vp.s ! VInf ++ pastV have_V ;
|
||||||
<Past,Simul> => {fin = pastV vp ; inf = [] } ;
|
<Cond,_,Neg> => condNegV vp ;
|
||||||
<Pres,Anter> => {fin = presCopula ! agrPol ; inf = vp.s ! VInf } ; ---- just guessing
|
<Pres,Simul> => presV vp ;
|
||||||
<Past,Anter> => {fin = pastV (cSug "jir") ; inf = vp.s ! VInf} ;
|
<Past,Simul> => pastV vp ;
|
||||||
<Fut,Simul> => {fin = presV (cSug "doon") ; inf = vp.s ! VInf} ;
|
<Pres,Anter> => vp.s ! VInf ++ presCopula ! agrPol ; ---- just guessing
|
||||||
<Fut,Anter> => {fin = pastV (cSug "doon") ; inf = vp.s ! VInf} ;
|
<Past,Anter> => vp.s ! VInf ++ pastV (cSug "jir") ;
|
||||||
<Cond,Simul> => {fin = pastV have_V ; inf = vp.s ! VInf} ; -- TODO check
|
<Fut,Simul> => vp.s ! VInf ++ presV (cSug "doon") ;
|
||||||
<Cond,Anter> => {fin = pastV have_V ; inf = vp.s ! VInf} -- TODO check
|
<Fut,Anter> => vp.s ! VInf ++ pastV (cSug "doon")
|
||||||
}
|
}
|
||||||
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 : BaseVerb -> Str = \v -> case agr of {
|
||||||
|
Sg2|Sg3 Fem
|
||||||
|
|Pl2 => v.s ! VNegCond SgFem ;
|
||||||
|
Pl1 _ => v.s ! VNegCond PlInv ;
|
||||||
|
_ => v.s ! VNegCond SgMasc --Sg1|Sg3 Masc|Pl3|Impers
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
vfSubord : VFun = \t,ant,p,agr,vp ->
|
vfSubord : VFun = \t,ant,p,agr,vp ->
|
||||||
case <t,ant,p> of {
|
case <t,ant,p> of {
|
||||||
@@ -868,17 +1016,22 @@ oper
|
|||||||
_ => vfStatement t ant p agr vp
|
_ => vfStatement t ant p agr vp
|
||||||
} ; -- TODO other relative forms
|
} ; -- TODO other relative forms
|
||||||
|
|
||||||
infVP : VerbPhrase -> Str = linVP VInf ;
|
infVP : VerbPhrase -> Str = linVP VInf Statement ;
|
||||||
|
|
||||||
stmarkerContr : Agreement => Polarity => Str = \\a,b =>
|
waaContr : Agreement => Polarity => Str = \\a,b =>
|
||||||
let stm = if_then_Pol b "w" "m"
|
let stm = if_then_Pol b "w" "m"
|
||||||
in stm + subjpron ! a ;
|
in stm + subjpron ! a ;
|
||||||
|
|
||||||
stmarkerNoContr : Agreement => Polarity => {p1,p2 : Str} = \\a,p =>
|
waaNoContr : Agreement => Polarity => {p1,p2 : Str} = \\a,p =>
|
||||||
case p of {
|
case p of {
|
||||||
Pos => {p1 = "waa" ; p2 = subjpron ! a} ;
|
Pos => {p1 = "waa" ; p2 = subjpron ! a} ;
|
||||||
Neg => {p1 = "ma" ; p2 = []} } ;
|
Neg => {p1 = "ma" ; p2 = []} } ;
|
||||||
|
|
||||||
|
waxaNoContr : Agreement => Polarity => {p1,p2 : Str} = \\a,p =>
|
||||||
|
case p of {
|
||||||
|
Pos => {p1 = "waxa" ; p2 = subjpron ! a} ;
|
||||||
|
Neg => {p1 = "ma" ; p2 = []} } ; -- TODO: find out how to properly negate waxa clauses!
|
||||||
|
|
||||||
subjpron : Agreement => Str = table {
|
subjpron : Agreement => Str = table {
|
||||||
Sg1|Pl1 Excl => "aan" ;
|
Sg1|Pl1 Excl => "aan" ;
|
||||||
Pl1 Incl => "aynu" ;
|
Pl1 Incl => "aynu" ;
|
||||||
@@ -891,19 +1044,52 @@ oper
|
|||||||
-- linrefs
|
-- linrefs
|
||||||
|
|
||||||
oper
|
oper
|
||||||
linVP : VForm -> VerbPhrase -> Str = \vf,vp ->
|
linVP : VForm -> ClType -> VerbPhrase -> Str = \vf,cltyp,vp ->
|
||||||
let vp' = complSlash vp ;
|
let pred = vp.s ! vf ;
|
||||||
inf = {inf = vp.s ! vf ; fin=[]} ;
|
vp' = complSlash vp ;
|
||||||
wo = wordOrder [] [] {p1,p2=[]} (vp'.comp ! pagr2agr vp.obj2.a) inf vp' ;
|
stm = case <cltyp,isNeg vf> of {
|
||||||
in wo.beforeSTM ++ wo.afterSTM ;
|
<Subord,True> => {p1 = "aan" ; p2 = []} ;
|
||||||
|
_ => {p1,p2 = []}
|
||||||
|
} ;
|
||||||
|
wo = wordOrderOld (Sg3 Masc) [] stm (vp'.comp ! pagr2agr vp.obj2.a) pred vp' cltyp ;
|
||||||
|
in wo.beforeSTM ++ wo.stm ++ wo.afterSTM ;
|
||||||
|
|
||||||
linCN : CNoun -> Str = \cn -> cn.s ! NomSg ++ cn.mod ! Sg ! Abs ;
|
linCN : CNoun -> Str = \cn -> cn.s ! Indef Sg ++ cn.mod ! Indefinite ! Sg ! Abs ;
|
||||||
linAdv : Adverb -> Str = \adv ->
|
linAdv : Adverb -> Str = \adv ->
|
||||||
adv.berri
|
adv.berri
|
||||||
++ 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 ;
|
||||||
|
|
||||||
|
|
||||||
|
-- TODO: deprecate eventually
|
||||||
|
BaseCl : Type = {beforeSTM, stm, afterSTM : Str} ; -- adverbs, subjects, all that comes before sentence type marker. Eventual Subj attaches to the part after STM.
|
||||||
|
|
||||||
|
wordOrderOld : Agreement -> (sn : Str) -> (stm,obj : {p1,p2 : Str}) -> Str -> VerbPhrase -> ClType -> BaseCl =
|
||||||
|
\agr,subjnoun,stm,obj,pred,vp,cltyp -> {
|
||||||
|
beforeSTM = vp.berri -- AdV
|
||||||
|
++ subjnoun -- subject if it's a noun
|
||||||
|
++ case cltyp of {
|
||||||
|
Subord => [] ;
|
||||||
|
_ => obj.p1 } ; -- noun object if it's a statement
|
||||||
|
|
||||||
|
stm = stm.p1 ; -- sentence type marker; empty if subordinate and positive
|
||||||
|
|
||||||
|
afterSTM = vp.vComp.subjunc -- "waa in" construction
|
||||||
|
++ stm.p2 -- possible subj. pronoun
|
||||||
|
++ case cltyp of {
|
||||||
|
Subord => obj.p1 ; -- noun object if it's subordinate clause
|
||||||
|
_ => [] }
|
||||||
|
++ obj.p2 -- object if it's a pronoun
|
||||||
|
++ vp.sii -- restricted set of particles
|
||||||
|
++ vp.dhex -- restricted set of nouns/adverbials
|
||||||
|
++ vp.secObj -- "second object"
|
||||||
|
++ vp.vComp.inf -- VV complement, if it's infinitive
|
||||||
|
++ pred -- the verb inflected
|
||||||
|
++ vp.vComp.subcl ! agr -- VV complement, if it's subordinate clause
|
||||||
|
++ vp.miscAdv } ; ---- NB. Only used if there are several adverbs, or for "waa in" construction.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ lin
|
|||||||
-- : NP -> VP -> Cl
|
-- : NP -> VP -> Cl
|
||||||
PredVP = predVP ;
|
PredVP = predVP ;
|
||||||
|
|
||||||
-- : SC -> VP -> Cl ; -- that she goes is good (Sayeed p. 94)
|
-- : SC -> VP -> Cl ; -- that she goes is good (Saeed p. 94)
|
||||||
--PredSCVP sc vp = ;
|
--PredSCVP sc vp = ;
|
||||||
|
|
||||||
--2 Clauses missing object noun phrases
|
--2 Clauses missing object noun phrases
|
||||||
-- : NP -> VPSlash -> ClSlash ;
|
-- : NP -> VPSlash -> ClSlash ;
|
||||||
SlashVP = predVPSlash ;
|
SlashVP = predVP ;
|
||||||
{-
|
{-
|
||||||
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
||||||
AdvSlash cls adv = cls ** insertAdv adv cls ;
|
AdvSlash cls adv = cls ** insertAdv adv cls ;
|
||||||
@@ -27,9 +27,9 @@ lin
|
|||||||
|
|
||||||
-}
|
-}
|
||||||
-- : Temp -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
-- : Temp -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
||||||
UseSlash t p cls = {s = \\b =>
|
UseSlash t p cls = {
|
||||||
let sent = cls.s ! b ! t.t ! t.a ! p.p in
|
s = \\isSubord => let cl = cl2sentence isSubord cls in
|
||||||
sent ** {beforeSTM = t.s ++ p.s ++ sent.beforeSTM}
|
t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--2 Imperatives
|
--2 Imperatives
|
||||||
@@ -52,17 +52,16 @@ lin
|
|||||||
|
|
||||||
-}
|
-}
|
||||||
-- : Temp -> Pol -> Cl -> S ;
|
-- : Temp -> Pol -> Cl -> S ;
|
||||||
UseCl t p cl = {s = \\b =>
|
UseCl t p cls = {
|
||||||
let cltyp = if_then_else ClType b Subord Statement ;
|
s = \\isSubord => let cl = cl2sentence isSubord cls in
|
||||||
sent = cl.s ! cltyp ! t.t ! t.a ! p.p in
|
t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p
|
||||||
sent ** {beforeSTM = t.s ++ p.s ++ sent.beforeSTM} ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Temp -> Pol -> QCl -> QS ;
|
-- : Temp -> Pol -> QCl -> QS ;
|
||||||
UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
||||||
|
|
||||||
-- : Temp -> Pol -> RCl -> RS ;
|
-- : Temp -> Pol -> RCl -> RS ;
|
||||||
UseRCl t p cl = {s = \\g,c => t.s ++ p.s ++ cl.s ! g ! c ! t.t ! t.a ! p.p} ;
|
UseRCl t p cl = {s = \\st,g,c => t.s ++ p.s ++ cl.s ! g ! c ! t.t ! t.a ! p.p} ;
|
||||||
|
|
||||||
-- AdvS : Adv -> S -> S ; -- then I will go home
|
-- AdvS : Adv -> S -> S ; -- then I will go home
|
||||||
-- ExtAdvS : Adv -> S -> S ; -- next week, I will go home
|
-- ExtAdvS : Adv -> S -> S ; -- next week, I will go home
|
||||||
@@ -77,7 +76,8 @@ lin
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
advS : Adverb -> S -> S = \a,s -> s ** {s = \\b => let ss = s.s ! b in
|
advS : Adverb -> S -> S = \a,sent -> sent ** {
|
||||||
ss ** {beforeSTM = linAdv a ++ ss.beforeSTM}} ;
|
s = \\b => sent.s ! b ++ linAdv a
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,27 +51,45 @@ lin or_Conj = {s2 = \\_ => "ama" ; s1 = [] ; n = Sg} ; -- mise with interrogativ
|
|||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
-- *Det and Quant
|
-- *Det and Quant
|
||||||
|
|
||||||
|
--lin how8many_IDet = R.indefDet "" pl ;
|
||||||
|
|
||||||
|
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 how8many_IDet = R.indefDet "" pl ;
|
|
||||||
|
|
||||||
lin all_Predet = { s = "" } ;
|
|
||||||
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 ;
|
||||||
lin many_Det = R.indefDet "" pl ;
|
lin many_Det = R.indefDet "" pl ;
|
||||||
lin much_Det = R.indefDet "" sg ;
|
lin much_Det = R.indefDet "" sg ;
|
||||||
lin somePl_Det = R.indefDet "" pl ;
|
|
||||||
lin someSg_Det = R.indefDet "" sg ;
|
|
||||||
|
|
||||||
lin no_Quant = mkPrep no_Quant
|
|
||||||
-}
|
-}
|
||||||
lin that_Quant = defQuant "aas" "kaas" "taas" "kuwaas" True ;
|
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" ;
|
||||||
|
shortPoss = \\x => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin someSg_Det = somePl_Det ** {
|
||||||
|
n = Sg ;
|
||||||
|
s = table {
|
||||||
|
M x => \\_ => BIND ++ defStems ! M x ++ BIND ++ "a qaarkiis" ;
|
||||||
|
F x => \\_ => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ;
|
||||||
|
shortPoss = table {
|
||||||
|
M x => BIND ++ defStems ! M x ++ BIND ++ "a qaarkiis" ;
|
||||||
|
F x => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
--lin no_Quant = mkPrep no_Quant
|
||||||
|
|
||||||
|
lin that_Quant = defQuant "aas" "kaas" "taas" "kuwaas" True ; -- true = nominative marker is i
|
||||||
lin this_Quant = defQuant "an" "kan" "tan" "kuwan" True ;
|
lin this_Quant = defQuant "an" "kan" "tan" "kuwan" True ;
|
||||||
--lin which_IQuant = defQuant
|
lin which_IQuant = defIQuant "ee" ;
|
||||||
{-
|
{-
|
||||||
|
|
||||||
-----
|
-----
|
||||||
@@ -92,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 ;
|
||||||
|
|
||||||
@@ -156,16 +176,16 @@ lin yes_Utt = ss "haa" ;
|
|||||||
-------
|
-------
|
||||||
-- Verb
|
-- Verb
|
||||||
|
|
||||||
lin have_V2 = mkV2 have_V noPrep ;
|
lin have_V2 = mkV2 have_V noPrep ; -- TODO: check if {sii = "l" ++ BIND ; isCopula=True} makes sense for present tense negative
|
||||||
lin can8know_VV = can_VV ; -- can (capacity)
|
lin can8know_VV = can_VV ; -- can (capacity)
|
||||||
lin can_VV = mkV "kar" ; -- can (possibility)
|
lin can_VV = mkVV "kar" ; -- can (possibility)
|
||||||
{-lin must_VV = mkV "" ;
|
lin must_VV = mkVV waa_in ;
|
||||||
lin want_VV = mkV "" ;
|
lin want_VV = mkVV (mkV "rabid" "rab" "rab") subjunctive ;
|
||||||
|
|
||||||
|
|
||||||
------
|
------
|
||||||
-- Voc
|
-- Voc
|
||||||
|
{-
|
||||||
lin please_Voc = ss "" ;
|
lin please_Voc = ss "" ;
|
||||||
-}
|
-}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -15,15 +15,40 @@ lin
|
|||||||
ReflVP = ResSom.insertRefl ;
|
ReflVP = ResSom.insertRefl ;
|
||||||
|
|
||||||
-- : VV -> VP -> VP ;
|
-- : VV -> VP -> VP ;
|
||||||
ComplVV vv vp = vp ** { -- check Sayeed p. 169
|
ComplVV vv vp = let vc = vp.vComp in case vv.vvtype of {
|
||||||
s = vv.s ;
|
Waa_In => vp ** {
|
||||||
vComp = vp.vComp ++ vp.s ! VInf ;
|
vComp = vc ** {subjunc = vv.s ! VInf} ; -- it's always the word "in", and it will be placed before subject pronoun. it's placed in vv.s!VInf so that the VV would contribute with some string. /IL
|
||||||
pred = NoPred ;
|
obj2 = vp.obj2 ** {s = []} ; -- word order hack to avoid more parameters:
|
||||||
} ;
|
miscAdv = vp.miscAdv ++ vp.obj2.s -- dump the object to miscAdv
|
||||||
{-
|
} ;
|
||||||
-- : VS -> S -> VP ;
|
|
||||||
ComplVS vs s = ;
|
|
||||||
|
|
||||||
|
Subjunctive => useV vv ** {
|
||||||
|
stm = Waxa ;
|
||||||
|
vComp = vc ** { -- The whole previous VP becomes the subordinate clause
|
||||||
|
subcl = \\agr =>
|
||||||
|
let subj = pronTable ! agr ;
|
||||||
|
cls = predVPslash subj vp ;
|
||||||
|
scl = cl2sentence True cls ;
|
||||||
|
in scl.s ! Pres ! Simul ! Pos
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Infinitive => vp ** {
|
||||||
|
s = vv.s ; -- check Saeed p. 169
|
||||||
|
vComp = vc ** {
|
||||||
|
inf = vc.inf ++ vp.s ! VInf
|
||||||
|
} ;
|
||||||
|
stm = Waa NoPred ;
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- : 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 = ;
|
||||||
|
|
||||||
@@ -115,25 +140,25 @@ lin
|
|||||||
-- : AP -> Comp ;
|
-- : AP -> Comp ;
|
||||||
CompAP ap = {
|
CompAP ap = {
|
||||||
comp = \\a => <[], ap.s ! AF (getNum a) Abs> ;
|
comp = \\a => <[], ap.s ! AF (getNum a) Abs> ;
|
||||||
pred = Copula ;
|
stm = Waa Copula ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> Comp ;
|
-- : CN -> Comp ;
|
||||||
CompCN cn = {
|
CompCN cn = {
|
||||||
comp = \\a => <[], cn2str Sg Abs cn> ;
|
comp = \\a => <[], cn2str Sg Abs cn> ;
|
||||||
pred = NoCopula ;
|
stm = Waa NoCopula ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- NP -> Comp ;
|
-- NP -> Comp ;
|
||||||
CompNP np = {
|
CompNP np = {
|
||||||
comp = \\a => <[], np.s ! Abs> ;
|
comp = \\a => <[], np.s ! Abs> ;
|
||||||
pred = NoCopula ;
|
stm = Waa NoCopula ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Adv -> Comp ;
|
-- : Adv -> Comp ;
|
||||||
CompAdv adv = {
|
CompAdv adv = {
|
||||||
comp = \\a => <[], linAdv adv> ;
|
comp = \\a => <[], linAdv adv> ;
|
||||||
pred = Copula ;
|
stm = Waa Copula ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : VP -- Copula alone;
|
-- : VP -- Copula alone;
|
||||||
|
|||||||
7
src/somali/unittest/ap.gftest
Normal file
7
src/somali/unittest/ap.gftest
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
-- LangEng: the big black bird
|
||||||
|
LangSom: shimbir BIND ta madow ee weyn
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt NumSg) (AdjCN (PositA big_A) (AdjCN (PositA black_A) (UseN bird_N))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: a big black bird
|
||||||
|
LangSom: shimbir madow oo weyn
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant IndefArt NumSg) (AdjCN (PositA big_A) (AdjCN (PositA black_A) (UseN bird_N))))) NoVoc
|
||||||
87
src/somali/unittest/cl.gftest
Normal file
87
src/somali/unittest/cl.gftest
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
-- Restrictive relative clauses (RelCN)
|
||||||
|
-- Saeed p. 213
|
||||||
|
|
||||||
|
-- LangEng: the books that the men buy
|
||||||
|
LangSom: buugaag BIND ta niman BIND ku iibsadaan
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt NumPl) (RelCN (UseN book_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumPl) (UseN man_N)) (SlashV2a buy_V2))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: the books that the man doesn't buy
|
||||||
|
LangSom: buugaag BIND ta nin BIND ku aan iibsado
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt NumPl) (RelCN (UseN book_N) (UseRCl (TTAnt TPres ASimul) PNeg (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a buy_V2))))))) NoVoc
|
||||||
|
|
||||||
|
|
||||||
|
-- LangEng: the men that buy the books
|
||||||
|
LangSom: niman BIND ka buugaag BIND ta iibsada
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt NumPl) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a buy_V2) (DetCN (DetQuant DefArt NumPl) (UseN book_N)))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: the men that don't buy the books
|
||||||
|
LangSom: niman BIND ka aan buugaag BIND ta iibsado
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt NumPl) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PNeg (RelVP IdRP (ComplSlash (SlashV2a buy_V2) (DetCN (DetQuant DefArt NumPl) (UseN book_N)))))))) NoVoc
|
||||||
|
|
||||||
|
|
||||||
|
-- LangEng: the men that buy the books are these
|
||||||
|
LangSom: niman BIND ka buugaag BIND ta iibsadaa waa kuwan
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumPl) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a buy_V2) (DetCN (DetQuant DefArt NumPl) (UseN book_N))))))) (UseComp (CompNP (DetNP (DetQuant this_Quant NumPl))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: the men that don't buy the books are these
|
||||||
|
LangSom: niman BIND ka aan buugaag BIND ta iibsado waa kuwan
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumPl) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PNeg (RelVP IdRP (ComplSlash (SlashV2a buy_V2) (DetCN (DetQuant DefArt NumPl) (UseN book_N))))))) (UseComp (CompNP (DetNP (DetQuant this_Quant NumPl))))))) NoVoc
|
||||||
|
|
||||||
|
|
||||||
|
-- LangEng: the books that the men buy are these
|
||||||
|
LangSom: buugaag BIND ta niman BIND ku iibsadaan waa kuwan
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumPl) (RelCN (UseN book_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumPl) (UseN man_N)) (SlashV2a buy_V2)))))) (UseComp (CompNP (DetNP (DetQuant this_Quant NumPl))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: the books that the men don't buy are these
|
||||||
|
LangSom: buugaag BIND ta niman BIND ku aan iibsadaan waa kuwan
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumPl) (RelCN (UseN book_N) (UseRCl (TTAnt TPres ASimul) PNeg (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumPl) (UseN man_N)) (SlashV2a buy_V2)))))) (UseComp (CompNP (DetNP (DetQuant this_Quant NumPl))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: the books that the man doesn't buy are these
|
||||||
|
LangSom: buugaag BIND ta nin BIND ku aan iibsado waa kuwan
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumPl) (RelCN (UseN book_N) (UseRCl (TTAnt TPres ASimul) PNeg (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a buy_V2)))))) (UseComp (CompNP (DetNP (DetQuant this_Quant NumPl))))))) NoVoc
|
||||||
|
|
||||||
|
|
||||||
|
-- With a verb that takes a preposition
|
||||||
|
-- LangEng: the woman that you taught
|
||||||
|
LangSom: naag BIND ta aad ku bartay
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt NumSg) (RelCN (UseN woman_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (UsePron youSg_Pron) (SlashV2a teach_V2))))))) NoVoc
|
||||||
|
|
||||||
|
-- Combine with passive
|
||||||
|
-- LangEng: the woman that was taught
|
||||||
|
LangSom: naag BIND ta lagu baray
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt NumSg) (RelCN (UseN woman_N) (UseRCl (TTAnt TPast ASimul) PPos (RelVP IdRP (PassV2 teach_V2)))))) NoVoc
|
||||||
|
|
||||||
|
|
||||||
|
-- Negative forms
|
||||||
|
-- LangEng: sheep that aren't black don't see you
|
||||||
|
LangSom: lax aan madow aha ku BIND ma arkaan
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant IndefArt NumPl) (RelCN (UseN sheep_N) (UseRCl (TTAnt TPres ASimul) PNeg (RelVP IdRP (UseComp (CompAP (PositA black_A))))))) (ComplSlash (SlashV2a see_V2) (UsePron youPol_Pron))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: you don't see sheep that aren't black
|
||||||
|
LangSom: laxo aan madow ahayni ma aragto
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron youPol_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (RelCN (UseN sheep_N) (UseRCl (TTAnt TPres ASimul) PNeg (RelVP IdRP (UseComp (CompAP (PositA black_A))))))))))) NoVoc
|
||||||
|
|
||||||
|
|
||||||
|
-- Appositive relative clauses (RelNP)
|
||||||
|
|
||||||
|
-- LangEng: he , that the men see
|
||||||
|
LangSom: isaga oo niman BIND ku arkaan
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (RelNP (UsePron he_Pron) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumPl) (UseN man_N)) (SlashV2a see_V2)))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: he , that sees the men
|
||||||
|
LangSom: isaga oo niman BIND ka arka
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (RelNP (UsePron he_Pron) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN man_N))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: he , that the men see , is this
|
||||||
|
LangSom: isagu oo niman BIND ku arkaan waa kan
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (RelNP (UsePron he_Pron) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumPl) (UseN man_N)) (SlashV2a see_V2))))) (UseComp (CompNP (DetNP (DetQuant this_Quant NumSg))))))) NoVoc
|
||||||
|
|
||||||
|
--LangEng: he , that sees the men , is this
|
||||||
|
LangSom: isagu oo niman BIND ka arkaa waa kan
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (RelNP (UsePron he_Pron) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN man_N)))))) (UseComp (CompNP (DetNP (DetQuant this_Quant NumSg))))))) NoVoc
|
||||||
|
|
||||||
|
-- Question clauses
|
||||||
|
|
||||||
|
-- LangEng: which cat teaches him
|
||||||
|
LangSom: bisad BIND dee baa ku bartaa
|
||||||
|
Lang: PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestVP (IdetCN (IdetQuant which_IQuant NumSg) (UseN cat_N)) (ComplSlash (SlashV2a teach_V2) (UsePron he_Pron))))) NoVoc
|
||||||
28
src/somali/unittest/num.gftest
Normal file
28
src/somali/unittest/num.gftest
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-- LangEng: the two cats
|
||||||
|
LangSom: laba BIND da bisadood
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))))))) (UseN cat_N))) NoVoc
|
||||||
|
|
||||||
|
|
||||||
|
-- LangEng: those three men
|
||||||
|
LangSom: saddex BIND daas nin
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant that_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))) (UseN man_N))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: my three fathers
|
||||||
|
LangSom: saddex BIND dayd BIND a aabbe
|
||||||
|
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant (PossPron i_Pron) (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))) (UseN2 father_N2))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: she is the first cat
|
||||||
|
LangSom: waa bisad BIND da kowaad
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseComp (CompNP (DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN cat_N))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: she is my first cat
|
||||||
|
LangSom: waa bisad BIND dayd BIND a kowaad
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseComp (CompNP (DetCN (DetQuantOrd (PossPron i_Pron) NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN cat_N))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: he is my first father
|
||||||
|
LangSom: waa aabb BIND ahay kowaad
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (UseComp (CompNP (DetCN (DetQuantOrd (PossPron i_Pron) NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN2 father_N2))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: he is my first man
|
||||||
|
LangSom: waa nin BIND kayg BIND a kowaad
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (UseComp (CompNP (DetCN (DetQuantOrd (PossPron i_Pron) NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN man_N))))))) NoVoc
|
||||||
@@ -13,7 +13,7 @@ LangSom: waa ay ku arkeen
|
|||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron they_Pron) (ComplSlash (SlashV2a see_V2) (UsePron youSg_Pron))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron they_Pron) (ComplSlash (SlashV2a see_V2) (UsePron youSg_Pron))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: they didn't see you
|
-- LangEng: they didn't see you
|
||||||
LangSom: ku &+ ma arkin
|
LangSom: ku BIND ma arkin
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PNeg (PredVP (UsePron they_Pron) (ComplSlash (SlashV2a see_V2) (UsePron youSg_Pron))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PNeg (PredVP (UsePron they_Pron) (ComplSlash (SlashV2a see_V2) (UsePron youSg_Pron))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: you taught yourself
|
-- LangEng: you taught yourself
|
||||||
@@ -21,7 +21,7 @@ LangSom: waa aad isku bartay
|
|||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron youSg_Pron) (ReflVP (SlashV2a teach_V2))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron youSg_Pron) (ReflVP (SlashV2a teach_V2))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: you don't teach yourself
|
-- LangEng: you don't teach yourself
|
||||||
LangSom: isku &+ ma barto
|
LangSom: isku BIND ma barto
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron youSg_Pron) (ReflVP (SlashV2a teach_V2))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron youSg_Pron) (ReflVP (SlashV2a teach_V2))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: one saw you
|
-- LangEng: one saw you
|
||||||
@@ -48,7 +48,7 @@ LangSom: hooyo waa ay ina kaa siisey
|
|||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (MassNP (UseN2 mother_N2)) (ComplSlash (Slash3V3 give_V3 (UsePron we_Pron)) (UsePron youSg_Pron))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (MassNP (UseN2 mother_N2)) (ComplSlash (Slash3V3 give_V3 (UsePron we_Pron)) (UsePron youSg_Pron))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: mother didn't give you us
|
-- LangEng: mother didn't give you us
|
||||||
LangSom: hooyo ina &+ ma ay kaa siin
|
LangSom: hooyo ina BIND ma kaa siin
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PNeg (PredVP (MassNP (UseN2 mother_N2)) (ComplSlash (Slash3V3 give_V3 (UsePron we_Pron)) (UsePron youSg_Pron))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PNeg (PredVP (MassNP (UseN2 mother_N2)) (ComplSlash (Slash3V3 give_V3 (UsePron we_Pron)) (UsePron youSg_Pron))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: he gave himself bread
|
-- LangEng: he gave himself bread
|
||||||
@@ -56,13 +56,40 @@ LangSom: rooti waa uu is siiyey
|
|||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron he_Pron) (ReflVP (Slash2V3 give_V3 (MassNP (UseN bread_N))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron he_Pron) (ReflVP (Slash2V3 give_V3 (MassNP (UseN bread_N))))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: one adds salt to the meat
|
-- LangEng: one adds salt to the meat
|
||||||
LangSom: hilib &+ ka cusbo waa lagu daraa
|
LangSom: hilib BIND ka cusbo waa lagu daraa
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (Slash3V3 add_V3 (DetCN (DetQuant DefArt NumSg) (UseN meat_N))) (MassNP (UseN salt_N)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (Slash3V3 add_V3 (DetCN (DetQuant DefArt NumSg) (UseN meat_N))) (MassNP (UseN salt_N)))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: one can add salt to meat
|
-- LangEng: one can add salt to meat
|
||||||
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
|
||||||
|
|
||||||
|
-- LangEng: you must see mother of the cat
|
||||||
|
LangSom: waa in aad aragtaa bisad BIND da hooya BIND deed
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youPol_Pron) (ComplVV must_VV (ComplSlash (SlashV2a see_V2) (MassNP (ComplN2 mother_N2 (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: the mother of the cat must be seen
|
||||||
|
LangSom: waa in la arkaa bisad BIND da hooya BIND deed
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplVV must_VV (ComplSlash (SlashV2a see_V2) (MassNP (ComplN2 mother_N2 (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: I want to read the book
|
||||||
|
LangSom: waxa aan rabaa in aan buug BIND ga akhriyo
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (UseN book_N))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: I don't want to read the book
|
||||||
|
LangSom: ma rabo in aan buug BIND ga akhriyo
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (UseN book_N))))))) NoVoc
|
||||||
|
|
||||||
|
-- LangEng: you want to see us under the chair
|
||||||
|
LangSom: waxa aad rabtaa in aad inagu aragto kursi BIND ga hoos BIND tiis BIND a
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVV want_VV (AdvVP (ComplSlash (SlashV2a see_V2) (UsePron we_Pron)) (PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN chair_N)))))))) NoVoc
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Adverbials
|
-- Adverbials
|
||||||
|
|
||||||
@@ -71,5 +98,22 @@ LangSom: waa aan ka dul boodi karaa
|
|||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplVV can_VV (UseV jump_V)) (PrepNP above_Prep (UsePron it_Pron)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplVV can_VV (UseV jump_V)) (PrepNP above_Prep (UsePron it_Pron)))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: you can't jump above me
|
-- LangEng: you can't jump above me
|
||||||
LangSom: iga &+ 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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user