mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 08:58:55 -06:00
use consistent lin X everywhere
This commit is contained in:
@@ -31,15 +31,15 @@ lin
|
||||
|
||||
monthAdv january =
|
||||
let january_CN : CN = mkCN month_Timeunit (mkNP (mkPN january)) ;
|
||||
january_NP : NP = R.emptyNP **
|
||||
january_NP : NP = lin NP R.emptyNP **
|
||||
{s = \\c => R.cn2str january_CN R.Sg R.Const c ;
|
||||
a = {pgn = R.Per3 january_CN.g R.Sg ; isPron = False}} ;
|
||||
in SyntaxAra.mkAdv R.biPrep january_NP ;
|
||||
in SyntaxAra.mkAdv ParadigmsAra.biPrep january_NP ;
|
||||
|
||||
yearAdv y = SyntaxAra.mkAdv in_Prep y ;
|
||||
|
||||
-- dummy
|
||||
dayMonthAdv d m = SyntaxAra.mkAdv on_Prep (mkNP d) ; -- on 17 May
|
||||
dayMonthAdv d m = SyntaxAra.mkAdv on_Prep (mkNP m) ; -- on 17 May
|
||||
monthYearAdv m y = SyntaxAra.mkAdv on_Prep (mkNP m) ; -- in May 2012
|
||||
dayMonthYearAdv d m y = SyntaxAra.mkAdv on_Prep y ; -- on 17 May 2013
|
||||
|
||||
@@ -51,7 +51,7 @@ lin
|
||||
let ap = mkAP a in ap ** {
|
||||
s = \\s,g,n,d,c =>
|
||||
ap.s ! s ! g ! n ! d ! c
|
||||
++ (mkAdv R.biPrep (mkNP amount_N)).s
|
||||
++ (mkAdv ParadigmsAra.biPrep (mkNP amount_N)).s
|
||||
++ (mkNP card cn).s ! R.Bare ---- ? /IL
|
||||
} ;
|
||||
|
||||
@@ -60,26 +60,26 @@ oper
|
||||
amount_N : N = mkN "مِقْدَار" "مَقَادِير" masc nohum ;
|
||||
|
||||
-- hack used in the name constructions
|
||||
toNP : Bool -> NP -> NP = \b -> if_then_else NP b R.emptyNP ;
|
||||
toNP : Bool -> NP -> NP = \b -> if_then_else NP b (lin NP R.emptyNP) ;
|
||||
|
||||
lin
|
||||
-- : NP -> NP -> Cl
|
||||
have_name_Cl np nm =
|
||||
let subjPron : Pron = R.np2pron np ;
|
||||
let subjPron : Pron = lin Pron (R.np2pron np) ;
|
||||
me : NP = toNP np.a.isPron np ;
|
||||
myName : NP = E.ApposNP me (mkNP (mkDet subjPron) L.name_N) ;
|
||||
in mkCl myName nm ;
|
||||
|
||||
-- : NP -> QCl
|
||||
what_name_QCl np =
|
||||
let subjPron : Pron = R.np2pron np ;
|
||||
let subjPron : Pron = lin Pron (R.np2pron np) ;
|
||||
me : R.NP = toNP np.a.isPron np ;
|
||||
myName : NP = E.ApposNP me (mkNP (mkDet subjPron) L.name_N) ;
|
||||
what_IP : R.IP = R.mkIP "مَا هُوَ" R.Sg ;
|
||||
what_IP : IP = lin IP (R.mkIP "مَا هُوَ" R.Sg) ;
|
||||
in mkQCl what_IP myName ;
|
||||
|
||||
how_old_QCl np =
|
||||
let subjPron : Pron = R.np2pron np ;
|
||||
let subjPron : Pron = lin Pron (R.np2pron np) ;
|
||||
me : R.NP = toNP np.a.isPron np ;
|
||||
age_N = mkN "عُمر" ;
|
||||
myAge : NP = E.ApposNP me (mkNP (mkDet subjPron) L.name_N) ;
|
||||
|
||||
@@ -23,7 +23,7 @@ flags
|
||||
beautiful_A = sndA "جمل" "فَعِيل" ;
|
||||
become_VA = mkVA (v4 "صبح") ;
|
||||
beer_N = sdfN "بير" "فِعلة" Fem NoHum ;
|
||||
beg_V2V = mkV2V (mkVV (v5 "وسل")) noPrep ;
|
||||
beg_V2V = mkV2V (mkVV (v5 "وسل")) ParadigmsAra.noPrep ;
|
||||
big_A = sndA "كبر" "فَعِيل" ;
|
||||
bike_N = sdfN "درج" "فَعّالة" Fem NoHum ;
|
||||
bird_N = brkN "طير" "فَعل" "فُعُول" Masc NoHum;
|
||||
@@ -72,7 +72,7 @@ flags
|
||||
door_N = brkN "بوب" "فاع" "أَفعَال" Masc NoHum ;
|
||||
drink_V2 = dirV2 (regV "شَرِب") ;
|
||||
-- drink_V2 = dirV2 (v1 "شرب" i a) ;
|
||||
easy_A2V = mkA2 (sndA "سهل" "فَعل") liPrep ;
|
||||
easy_A2V = mkA2 (sndA "سهل" "فَعل") ParadigmsAra.liPrep ;
|
||||
eat_V2 = dirV2 (mkV "ءكل" FormI) ;
|
||||
empty_A = sndA "فرغ" "فاعِل" ;
|
||||
enemy_N = brkN "عدو" "فَعُلّ" "أَفعَاء" Masc Hum ;
|
||||
@@ -202,7 +202,7 @@ flags
|
||||
switch8off_V2 = dirV2 (v4 "طفء") ;
|
||||
switch8on_V2 = dirV2 (v4 "شعل") ;
|
||||
table_N = sdfN "طول" "فاعِلة" Fem NoHum ;
|
||||
talk_V3 = mkV3 (v5 "حدث") liPrep (mkPrep "عَن") ;
|
||||
talk_V3 = mkV3 (v5 "حدث") ParadigmsAra.liPrep (mkPrep "عَن") ;
|
||||
teacher_N = sdmN "علم" "مُفَعِّل" Masc Hum ; --mucal~imö
|
||||
teach_V2 = dirV2 (v2 "علم") ;
|
||||
television_N = mkN (sndf "تِلِفِزيُون") Masc NoHum ;
|
||||
|
||||
@@ -108,7 +108,7 @@ resource ParadigmsAra = open
|
||||
---- ++ n.s2 ! Sg ! Def ! c -- NB this hack works for idaafa constructions (if you used mkN : N -> N -> N), but wrong for mkN : N -> A -> N. /IL
|
||||
---- }))) ;
|
||||
mkLN : NP -> LN
|
||||
= \np -> np ;
|
||||
= \np -> lin LN np ;
|
||||
} ;
|
||||
|
||||
--3 Relational nouns
|
||||
@@ -814,7 +814,7 @@ resource ParadigmsAra = open
|
||||
|
||||
dirV3 = overload {
|
||||
dirV3 : V -> Prep -> V3 = \v,p -> mkV3 v (casePrep acc) p ;
|
||||
dirV3 : V -> Str -> V3 = \v,s -> mkV3 v (casePrep acc) (mkPreposition s)
|
||||
dirV3 : V -> Str -> V3 = \v,s -> mkV3 v (casePrep acc) (mkPrep s)
|
||||
} ;
|
||||
|
||||
dirdirV3 v = dirV3 v (casePrep acc) ;
|
||||
@@ -875,7 +875,7 @@ resource ParadigmsAra = open
|
||||
mkAS,
|
||||
mkAV = \a -> a ;
|
||||
mkA2S,
|
||||
mkA2V = \a,p -> prepA2 a (mkPreposition p) ;
|
||||
mkA2V = \a,p -> lin A (prepA2 a (mkPreposition p)) ;
|
||||
|
||||
|
||||
|
||||
@@ -951,25 +951,25 @@ oper
|
||||
wmkA : {masc_sg, masc_pl, root, sg_patt : Str} -> A
|
||||
= \r -> mkA r.root r.sg_patt ;
|
||||
wmkA : {masc_sg, fem_sg, masc_pl, fem_pl, root, pl_patt : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg, fem_sg, masc_pl, fem_pl, root : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg, fem_sg, root : Str} -> A
|
||||
= \r -> mkA r.root ; ----
|
||||
wmkA : {masc_sg, fem_sg, masc_pl, fem_pl, pl_patt : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; fem_sg : Str; fem_pl : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; fem_sg : Str; root : Str ; sg_patt : Str} -> A
|
||||
= \r -> mkA r.root r.sg_patt ;
|
||||
wmkA : {masc_sg : Str; fem_sg : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; masc_pl : Str; fem_sg : Str; fem_pl : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; masc_pl : Str; fem_sg : Str; root : Str} -> A
|
||||
= \r -> mkA r.root ;
|
||||
wmkA : {masc_sg : Str; masc_pl : Str; fem_sg : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; masc_pl : Str; root : Str} -> A
|
||||
= \r -> mkA r.root ;
|
||||
wmkA : {masc_sg : Str; masc_pl, pl_patt : Str; root : Str} -> A
|
||||
|
||||
@@ -124,7 +124,7 @@ concrete StructuralAra of Structural = CatAra **
|
||||
youPl_Pron = youPlMasc_Pron ;
|
||||
youPol_Pron = youPlFem_Pron ; -- arbitrary?
|
||||
|
||||
have_V2 = mkV2 ladaa_V (casePrep nom) ; -- "X has Y" literally "Y<nom> is on X<nom>"
|
||||
have_V2 = mkV2 (lin V ladaa_V) (casePrep nom) ; -- "X has Y" literally "Y<nom> is on X<nom>"
|
||||
--have_V2 = dirV2 (regV "يَملِك") ; -- "X<nom> owns/possesses Y<acc>"
|
||||
|
||||
lin language_title_Utt = {s = \\_ => "العربية"} ;
|
||||
|
||||
@@ -400,39 +400,39 @@ oper
|
||||
mkV : Str -> Str -> V = reg2V -- s Imperative_Jussive;Pl
|
||||
} ;
|
||||
|
||||
mkVV : V -> VV = \v -> v ;
|
||||
mkVS : V -> VS = \v -> v ;
|
||||
mkVQ : V -> VQ = \v -> v ;
|
||||
mkVA : V -> VA = \v -> v ;
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
mkVS : V -> VS = \v -> lin VS v ;
|
||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||
mkVA : V -> VA = \v -> lin VA v ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> V2 = \v -> v ** {c2 = noPrep} ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> v ** {c2 = p} ;
|
||||
mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = noPrep}) ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
mkV2A : V -> V2A = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> lin V2A (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> lin V2S (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> lin V2Q (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2V = overload {
|
||||
mkV2V : V -> V2V = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> lin V2V (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkN = overload {
|
||||
@@ -441,13 +441,13 @@ oper
|
||||
} ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : N -> N2 = \n -> n ** {c2 = noPrep} ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> n ** {c2 = p} ;
|
||||
mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> N3 = \n -> n ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> n ** {c2 = p1; c3 = p2} ;
|
||||
mkN3 : N -> N3 = \n -> lin N3 (n ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
@@ -456,8 +456,8 @@ oper
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : A -> A2 = \a -> a ** {c2 = noPrep} ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> a ** {c2 = p} ;
|
||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
|
||||
|
||||
@@ -91,7 +91,7 @@ oper
|
||||
|
||||
-- Use linCNIndef so that words with FinalA get the -a at the end
|
||||
baseCN : CN -> CN -> [CN] = \x,y ->
|
||||
y ** --choose all the other fields from second argument
|
||||
lin ListCN y ** --choose all the other fields from second argument
|
||||
{ s1 = \\agr => linCNIndef x ;
|
||||
s2 = y.s } ;
|
||||
|
||||
@@ -144,4 +144,4 @@ oper
|
||||
conjNbr : Number -> Number -> Number = \n,m ->
|
||||
case n of { Pl => Pl ; _ => m } ;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ oper
|
||||
|
||||
mkA = overload {
|
||||
mkA : Str -> A = \s -> lin A (regAdj s) ;
|
||||
mkA : Str -> A -> A = \s,a -> irregAdvAdj s a
|
||||
mkA : Str -> A -> A = \s,a -> lin A (irregAdvAdj s a)
|
||||
} ;
|
||||
|
||||
mkA2 : Str -> Prep -> A2 = \s,pp -> lin A2 (regAdj s ** { compl = pp }) ;
|
||||
@@ -104,7 +104,7 @@ oper
|
||||
mkV2A : Str -> V2A = \s -> lin V2A (mkVerbDu s) ; -- Nor-nork
|
||||
mkVQ : Str -> VQ = \s -> lin VQ (mkVerbDu s) ; -- Nor-nork
|
||||
mkVS : Str -> VS = \s -> lin VS (mkVerbDu s) ; -- Nor-nork
|
||||
mkVV : V -> VV = \v -> v ;
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
|
||||
mkV2V : Str -> V2V = \s -> lin V2V (mkVerbDio s) ; -- ??? TODO check valency
|
||||
mkV2S : Str -> V2S = \s -> lin V2S (mkVerbDio s) ; -- Nor-nori-nork: (mutilari) (neska datorrela) erantzun diot
|
||||
|
||||
@@ -752,13 +752,13 @@ oper
|
||||
} ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : N -> N2 = \n -> n ** {c2 = noPrep} ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> n ** {c2 = p} ;
|
||||
mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> N3 = \n -> n ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> n ** {c2 = p1; c3 = p2} ;
|
||||
mkN3 : N -> N3 = \n -> lin N3 (n ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV = overload {
|
||||
@@ -766,39 +766,39 @@ oper
|
||||
mkV : Str -> Str -> V = reg2V -- infinitive Imperative;Sg
|
||||
} ;
|
||||
|
||||
mkVV : V -> VV = \v -> v ;
|
||||
mkVS : V -> VS = \v -> v ;
|
||||
mkVQ : V -> VQ = \v -> v ;
|
||||
mkVA : V -> VA = \v -> v ;
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
mkVS : V -> VS = \v -> lin VS v ;
|
||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||
mkVA : V -> VA = \v -> lin VA v ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> V2 = \v -> v ** {c2 = noPrep} ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> v ** {c2 = p} ;
|
||||
mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = noPrep}) ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
mkV2A : V -> V2A = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> lin V2A (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> lin V2S (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> lin V2Q (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2V = overload {
|
||||
mkV2V : V -> V2V = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> lin V2V (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
@@ -807,8 +807,8 @@ oper
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : A -> A2 = \a -> a ** {c2 = noPrep} ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> a ** {c2 = p} ;
|
||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--# -path=.:../abstract:../common:../api
|
||||
--# -path=.:../abstract:../common:../api:../prelude
|
||||
|
||||
concrete LangBul of Lang =
|
||||
GrammarBul,
|
||||
|
||||
@@ -168,7 +168,7 @@ oper
|
||||
--
|
||||
|
||||
prepN2 : N -> Prep -> N2 ;
|
||||
prepN2 n p = n ** {c2 = p} ;
|
||||
prepN2 n p = lin N2 (n ** {c2 = p}) ;
|
||||
|
||||
dirN2 : N -> N2 ;
|
||||
dirN2 n = prepN2 n noPrep ;
|
||||
@@ -178,7 +178,7 @@ oper
|
||||
--
|
||||
|
||||
prepN3 : N -> Prep -> Prep -> N3 ;
|
||||
prepN3 n p q = n ** {c2 = p; c3 = q} ;
|
||||
prepN3 n p q = lin N3 (n ** {c2 = p; c3 = q}) ;
|
||||
|
||||
dirN3 : N -> Prep -> N3 ;
|
||||
dirN3 n p = prepN3 n noPrep p ;
|
||||
|
||||
@@ -183,7 +183,7 @@ oper
|
||||
mkInterj : Str -> Interj
|
||||
= \s -> lin Interj {s = word s} ;
|
||||
|
||||
emptyPrep : Preposition = mkPrep [] ;
|
||||
emptyPrep : Prep = mkPrep [] ;
|
||||
|
||||
mkpNP : Str -> CatChi.NP
|
||||
= \s -> lin NP {s = word s ; det = []} ;
|
||||
|
||||
@@ -182,7 +182,7 @@ concrete ExtendEng of Extend =
|
||||
|
||||
BaseVPS2 x y =
|
||||
let baseX : OneFinVPS = baseVPS2 x ;
|
||||
baseY : OneFinVPS = baseVPS y ;
|
||||
baseY : OneFinVPS = baseVPS (lin VPS y) ;
|
||||
in twoTable2 Order Agr baseX baseY ** {fin = baseX.fin ; c2 = y.c2} ;
|
||||
ConsVPS2 x xs =
|
||||
let baseX : OneFinVPS = baseVPS2 x ;
|
||||
@@ -323,8 +323,8 @@ lin BaseImp = twoTable2 CPolarity ImpForm ;
|
||||
} ;
|
||||
|
||||
lin
|
||||
PassVPSlash vps = passVPSlash (lin VPS vps) [] ;
|
||||
PassAgentVPSlash vps np = passVPSlash (lin VPS vps) ("by" ++ np.s ! NPAcc) ;
|
||||
PassVPSlash vps = passVPSlash (lin VPSlash vps) [] ;
|
||||
PassAgentVPSlash vps np = passVPSlash (lin VPSlash 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});
|
||||
|
||||
|
||||
@@ -353,7 +353,7 @@ concrete ExtendEst of Extend =
|
||||
|
||||
-- : VPSlash -> AP ; -- täna leitud
|
||||
PastPartAP vp = {
|
||||
s = \\_,_ => vp2adv <vp : VP> <True : Bool> <PastPart Pass : VForm> ;
|
||||
s = \\_,_ => vp2adv (lin VP vp) <True : Bool> <PastPart Pass : VForm> ;
|
||||
infl = Invariable
|
||||
} ;
|
||||
|
||||
@@ -366,7 +366,7 @@ concrete ExtendEst of Extend =
|
||||
-- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm)
|
||||
PastPartAgentAP vp np = {
|
||||
s = \\_,_ => appCompl True Pos by8agent_Prep np
|
||||
++ vp2adv <vp : VP> <True : Bool> <PastPart Pass : VForm> ;
|
||||
++ vp2adv (lin VP vp) <True : Bool> <PastPart Pass : VForm> ;
|
||||
infl = Invariable
|
||||
} ;
|
||||
|
||||
@@ -374,7 +374,7 @@ concrete ExtendEst of Extend =
|
||||
|
||||
-- : AP -> VP -> Cl ; -- it is good to walk / on hea kõndida
|
||||
PredAPVP ap vp =
|
||||
let heaOllaVP : VP = insertObj (\\_,_,_ => ap.s ! True ! NCase Sg Nom) vp ; -- puts AP into the s2 field
|
||||
let heaOllaVP : VP = lin VP (insertObj (\\_,_,_ => ap.s ! True ! NCase Sg Nom) vp) ; -- puts AP into the s2 field
|
||||
heaOllaComp : Comp = CompVP ASimul PPos heaOllaVP ; -- chooses InfDa, fixes word order
|
||||
heaOlla : VP = UseComp heaOllaComp -- looks silly, but I want to reuse the abstract syntax funs :-P
|
||||
in existClause noSubj (agrP3 Sg) heaOlla ;
|
||||
|
||||
@@ -970,9 +970,9 @@ oper
|
||||
mkV2Q v p = lin V2Q (mk2V2 v p) ;
|
||||
|
||||
mkAS a = a ;
|
||||
mkA2S a p = mkA2 a p ;
|
||||
mkA2S a p = lin A (mkA2 a p) ;
|
||||
mkAV a = a ;
|
||||
mkA2V a p = mkA2 a p ;
|
||||
mkA2V a p = lin A (mkA2 a p) ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
|
||||
@@ -480,13 +480,13 @@ oper
|
||||
} ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : N -> N2 = \n -> n ** {c2 = noPrep} ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> n ** {c2 = p} ;
|
||||
mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> N3 = \n -> n ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> n ** {c2 = p1; c3 = p2} ;
|
||||
mkN3 : N -> N3 = \n -> lin N3 (n ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
@@ -495,8 +495,8 @@ oper
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : A -> A2 = \a -> a ** {c2 = noPrep} ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> a ** {c2 = p} ;
|
||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkV = overload {
|
||||
@@ -504,39 +504,39 @@ oper
|
||||
mkV : Str -> Str -> V = reg2V -- Nonfinite Indicative;Pres;('PSg', P2)
|
||||
} ;
|
||||
|
||||
mkVV : V -> VV = \v -> v ;
|
||||
mkVS : V -> VS = \v -> v ;
|
||||
mkVQ : V -> VQ = \v -> v ;
|
||||
mkVA : V -> VA = \v -> v ;
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
mkVS : V -> VS = \v -> lin VS v ;
|
||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||
mkVA : V -> VA = \v -> lin VA v ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> V2 = \v -> v ** {c2 = noPrep} ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> v ** {c2 = p} ;
|
||||
mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = noPrep}) ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
mkV2A : V -> V2A = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> lin V2A (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> lin V2S (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> lin V2Q (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2V = overload {
|
||||
mkV2V : V -> V2V = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> lin V2V (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
|
||||
|
||||
@@ -161,14 +161,14 @@ oper
|
||||
verbExample : CatFin.Cl -> Str = \cl -> (S.mkUtt cl).s ;
|
||||
{-
|
||||
-} --# notpresent
|
||||
inflVerb : CatFin.V -> Str = \verb0 ->
|
||||
inflVerb : SVerb1 -> Str = \verb0 ->
|
||||
let
|
||||
verb = sverb2verbSep verb0 ;
|
||||
vfin : ResFin.VForm -> Str = \f ->
|
||||
verb.s ! f ;
|
||||
|
||||
nounNounHeading : Parameter -> Parameter -> Str = \n1,n2 ->
|
||||
(S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP (snoun2nounSep n2)))).s ;
|
||||
(S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP (lin N (snoun2nounSep n2))))).s ;
|
||||
in
|
||||
heading3 (nounNounHeading present_Parameter indicative_Parameter) ++
|
||||
frameTable (
|
||||
|
||||
@@ -258,7 +258,7 @@ lin PresPartAP vp = {
|
||||
hasPrefix = False
|
||||
} ;
|
||||
lin PastPartAP vps = {
|
||||
s = \\_,nf => preCompVP <vps : VP> (PastPartAct (AN nf)) ;
|
||||
s = \\_,nf => preCompVP (lin VP vps) (PastPartAct (AN nf)) ;
|
||||
p = vps.c2.s.p1 ;
|
||||
hasPrefix = False
|
||||
} ;
|
||||
|
||||
@@ -406,10 +406,10 @@ mkVS = overload {
|
||||
|
||||
mkQuant = overload {
|
||||
mkQuant : N -> Quant =
|
||||
\noun -> heavyQuant {s1 = \\n,c => (snoun2nounBind noun).s ! NCase n c ; s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False} ;
|
||||
\noun -> lin Quant (heavyQuant {s1 = \\n,c => (snoun2nounBind noun).s ! NCase n c ; s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False}) ;
|
||||
mkQuant : N -> N -> Quant =
|
||||
\sg,pl -> heavyQuant {s1 = table {Sg => \\c => (snoun2nounBind pl).s ! NCase Sg c ; Pl => \\c => (snoun2nounBind pl).s ! NCase Pl c} ;
|
||||
s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False} ;
|
||||
\sg,pl -> lin Quant (heavyQuant {s1 = table {Sg => \\c => (snoun2nounBind pl).s ! NCase Sg c ; Pl => \\c => (snoun2nounBind pl).s ! NCase Pl c} ;
|
||||
s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False}) ;
|
||||
} ;
|
||||
|
||||
mkInterj : Str -> Interj
|
||||
|
||||
@@ -2084,14 +2084,14 @@ mkN = overload {
|
||||
mkN : (nom,gen : Str) -> N = \nom,gen -> lin N (reg2N nom gen) ; -- nom;indef;sg gen;indef;sg
|
||||
|
||||
mkN : (nom,gen,pl : Str) -> Gender -> N = \loch,locha,lochan,g ->
|
||||
mk5N loch loch locha lochan (palatalise loch) g ;
|
||||
lin N (mk5N loch loch locha lochan (palatalise loch) g) ;
|
||||
mkN : (base : Str) -> Gender -> N = \tunnag,g ->
|
||||
let fm : Str -> Str -> Str = \fem,masc -> case g of {
|
||||
Fem => fem ; Masc => masc } ;
|
||||
tunnaig : Str = palatalise tunnag ;
|
||||
tunnaige : Str = fm (tunnaig + "e") tunnaig ;
|
||||
tunnagan : Str = fm (tunnag + "an") tunnaig ;
|
||||
in mk5N tunnag tunnag tunnaige tunnagan tunnaig g
|
||||
in lin N (mk5N tunnag tunnag tunnaige tunnagan tunnaig g)
|
||||
} ;
|
||||
|
||||
mkN2 : LinN -> N2 = \n -> lin N2 n ** {c2=noPrep} ;
|
||||
|
||||
@@ -291,7 +291,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
|
||||
lin
|
||||
FocObj np cl =
|
||||
let n = appPrepNP cl.c2 np in mkFoc n cl ;
|
||||
let n = appPrepNP cl.c2 np in mkFoc n (lin Cl cl) ;
|
||||
|
||||
FocAdv adv cl = mkFoc adv.s cl ;
|
||||
|
||||
@@ -304,7 +304,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
-- "froh ist sie dass er da ist"
|
||||
-- "stolz ist sie auf ihn"
|
||||
subj = mkSubject np vp.c1 ;
|
||||
cl = mkClause subj.s subj.a vp
|
||||
cl = lin Cl (mkClause subj.s subj.a vp)
|
||||
in mkFoc adj cl ;
|
||||
|
||||
UseFoc t p f = {s = t.s ++ p.s ++ f.s ! t.m ! t.t ! t.a ! p.p} ;
|
||||
|
||||
@@ -81,7 +81,7 @@ oper
|
||||
|
||||
} ;
|
||||
|
||||
mkIrregA : Str -> A = \str -> makeIrregA str ;
|
||||
mkIrregA : Str -> A = \str -> lin A (makeIrregA str) ;
|
||||
mkA2 : A -> Str -> A2 ;
|
||||
mkA2 a str = a ** {c2=str ; lock_A2 = <>} ;
|
||||
|
||||
@@ -169,7 +169,7 @@ oper
|
||||
|
||||
-- mkV0 : V -> V0 ;
|
||||
mkVS : V -> VS; -- e.g drna
|
||||
mkVS v = v ;
|
||||
mkVS v = lin VS v ;
|
||||
-- mkV2S : V -> Prep -> V2S ;
|
||||
mkVV : V -> VV = -- e.g cahna
|
||||
\v -> lin VV (v ** {isAux = False});
|
||||
@@ -184,7 +184,7 @@ oper
|
||||
-- mkVA : V -> VA ;
|
||||
-- mkV2A : V -> Prep -> V2A ;
|
||||
mkVQ : V -> VQ ; -- e.g janna
|
||||
mkVQ v = v ;
|
||||
mkVQ v = lin VQ v ;
|
||||
-- mkV2Q : V -> Prep -> V2Q ;
|
||||
--
|
||||
-- mkAS : A -> AS ;
|
||||
|
||||
@@ -36,7 +36,7 @@ oper
|
||||
mkLN : Str -> Number -> PN -- PN with a given number
|
||||
} ;
|
||||
|
||||
mkGN : Str -> PN ; -- GN out of a string
|
||||
mkGN : Str -> GN ; -- GN out of a string
|
||||
mkSN : Str -> SN ; -- SN out of a string
|
||||
|
||||
--2 Adjectives
|
||||
@@ -213,7 +213,7 @@ oper
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : A -> A2 = \a -> a ** {c2 = casePrep Nom ; isPost = False} ;
|
||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = casePrep Nom ; isPost = False}) ;
|
||||
mkA2 : Str -> Prep -> A2 = \s,p ->
|
||||
lin A2 ((mkAdj s) ** {c2 = p ; isPost = False}) ;
|
||||
mkA2 : Str -> Case -> A2 = \s,c ->
|
||||
@@ -230,7 +230,7 @@ oper
|
||||
lin V (mkVerbFull sg1 sg2 sg3 pl1 pl2 pl3 inf) ;
|
||||
} ;
|
||||
|
||||
copula = ResHun.copula ;
|
||||
copula = lin V ResHun.copula ;
|
||||
|
||||
mkVS = overload {
|
||||
mkVS : Str -> VS = \v -> lin VS (mkVerb v) ;
|
||||
@@ -249,7 +249,7 @@ oper
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : (plain : Str) -> V2 = \v2 -> lin V2 (mkVerb2 v2) ;
|
||||
mkV2 : V -> V2 = vtov2 ;
|
||||
mkV2 : V -> V2 = \v -> lin V2 (vtov2 v) ;
|
||||
} ;
|
||||
|
||||
mkVV = overload {
|
||||
|
||||
@@ -403,7 +403,7 @@ resource ParadigmsIce = open
|
||||
|
||||
addAdv : A -> Str -> A = \a,adv -> a ** {adv = adv} ;
|
||||
|
||||
mkA2 : A -> Prep -> A2 = \adj,prep -> adj ** {c2 = prep} ;
|
||||
mkA2 : A -> Prep -> A2 = \adj,prep -> lin A2 (adj ** {c2 = prep}) ;
|
||||
|
||||
--2 Verbs
|
||||
|
||||
@@ -744,9 +744,9 @@ resource ParadigmsIce = open
|
||||
-- Two-place verbs need a preposition, except the special case with direct object.
|
||||
-- (transitive verbs).
|
||||
|
||||
prepV2 : V -> Preposition -> V2 = \v,prep -> v ** {c2 = prep} ;
|
||||
prepV2 : V -> Preposition -> V2 = \v,prep -> lin V2 (v ** {c2 = prep}) ;
|
||||
|
||||
prepV3 : V -> Preposition -> Preposition -> V3 = \v,p1,p2 -> v ** {c2 = p1 ; c3 = p2} ;
|
||||
prepV3 : V -> Preposition -> Preposition -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1 ; c3 = p2}) ;
|
||||
|
||||
accPrep : Preposition = {s = []; c = Acc} ;
|
||||
|
||||
|
||||
@@ -143,16 +143,16 @@ oper
|
||||
\\conj => glue (np.s ! Bare) (conjTable ! NStar ! conj ! np.p) ;
|
||||
-- Versions with commas, no repeated conjunctions
|
||||
|
||||
baseNPcomma : NP -> NP -> ListNP = \x,y -> y ** {
|
||||
baseNPcomma : NP -> NP -> ListNP = \x,y -> lin ListNP y ** {
|
||||
firstNP = \\conj => x.s ! Bare ++ BIND ++ "," ;
|
||||
} ;
|
||||
|
||||
consNPcomma : NP -> ListNP -> ListNP = \x,xs -> xs ** {
|
||||
consNPcomma : NP -> ListNP -> ListNP = \x,xs -> lin ListNP xs ** {
|
||||
firstNP = \\conj =>
|
||||
x.s ! Bare ++ BIND ++ "," ++ xs.firstNP ! conj ;
|
||||
} ;
|
||||
|
||||
conjNPcomma : Conj -> ListNP -> NP = \co,xs -> xs ** {
|
||||
conjNPcomma : Conj -> ListNP -> NP = \co,xs -> lin NP xs ** {
|
||||
s = \\nf => co.s1
|
||||
++ xs.firstNP ! co.c
|
||||
++ co.s2
|
||||
|
||||
@@ -91,7 +91,7 @@ lin come_V = mkV "오다" ;
|
||||
-- lin dig_V = mkV "" ;
|
||||
-- lin dirty_A = mkA "" ;
|
||||
-- lin distance_N3 = mkN "" ;
|
||||
lin do_V2 = mkV2 do_V ;
|
||||
lin do_V2 = mkV2 (lin V do_V) ;
|
||||
-- lin doctor_N = mkN "" ;
|
||||
-- lin dog_N = mkN "" ;
|
||||
-- lin door_N = mkN "" ;
|
||||
@@ -209,7 +209,7 @@ lin laugh_V = mkV "웃다" ;
|
||||
-- lin leave_V2 = mkV2 "" ;
|
||||
-- lin leg_N = mkN "" ;
|
||||
-- lin lie_V = mkV "" ;
|
||||
lin like_V2 = mkV2 (mkV "좋아" do_V) topic object ;
|
||||
lin like_V2 = mkV2 (mkV "좋아" (lin V do_V)) topic object ;
|
||||
-- lin listen_V2 = mkV2 "" ;
|
||||
-- lin live_V = mkV "";
|
||||
-- lin liver_N = mkN "" ;
|
||||
@@ -319,7 +319,7 @@ lin shirt_N = mkN "셔츠" "벌" ;
|
||||
-- lin shop_N = mkN "" ;
|
||||
lin short_A = mkA "키가" small_A ; -- "height is small"
|
||||
-- lin silver_N = mkN "" ;
|
||||
lin sing_V = mkV "노래" do_V ;
|
||||
lin sing_V = mkV "노래" (lin V do_V) ;
|
||||
-- lin sister_N = mkN "" ;
|
||||
-- lin sit_V = mkV "" ;
|
||||
-- lin skin_N = mkN "" ;
|
||||
|
||||
@@ -169,16 +169,16 @@ oper
|
||||
= \x1,x2,x3,x4 -> lin V (mkVerbReg x1 x2 x3 x4) ;
|
||||
} ;
|
||||
|
||||
copula = ResKor.copula ;
|
||||
copula = lin V ResKor.copula ;
|
||||
|
||||
-- regV : Str -> Verb = \s -> case s of {
|
||||
-- } ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : (plain : Str) -> V2 = \v2 -> lin V2 (mkVerb2 v2) ;
|
||||
mkV2 : V -> V2 = vtov2 ;
|
||||
mkV2 : V -> V2 = \v -> lin V2 (vtov2 v) ;
|
||||
mkV2 : V -> (subj,obj : CaseParticle) -> V2 = \v,sc,c2 ->
|
||||
vtov2 v ** {sc = sc ; c2 = c2} ;
|
||||
lin V2 (vtov2 v ** {sc = sc ; c2 = c2}) ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
|
||||
@@ -86,8 +86,8 @@ oper
|
||||
|
||||
V0 : Type = V;
|
||||
mkV0 = overload {
|
||||
mkV0 : V -> V0 = \v -> lin V0 v ; -- Same as in english, don't know if it's working
|
||||
mkV0 : Str -> V0 = \v -> lin V0 (impersonalVerb v) ;
|
||||
mkV0 : V -> V0 = \v -> lin V v ; -- Same as in english, don't know if it's working
|
||||
mkV0 : Str -> V0 = \v -> lin V (impersonalVerb v) ;
|
||||
} ;
|
||||
|
||||
mkV2 = overload {
|
||||
@@ -154,7 +154,7 @@ oper
|
||||
AV : Type = A ;
|
||||
mkAV : A -> AV = \a -> lin AV a ;
|
||||
|
||||
mkLN : N -> Number -> LN = \noun,num -> lin PN (noun ** { s = noun.s ! num ; n = num } ) ;
|
||||
mkLN : N -> Number -> LN = \noun,num -> lin LN (noun ** { s = noun.s ! num ; n = num } ) ;
|
||||
|
||||
mkGN = overload {
|
||||
mkGN : Str -> GN = \s -> lin GN {s = s ; g = Male}; -- default gender male
|
||||
|
||||
@@ -18,7 +18,7 @@ lin
|
||||
|
||||
ImpVP vp = { s = \\pol,num => vp.v.s ! pol ! (VImp num) ++ vp.compl ! (AgrP2 num Masc) } ;
|
||||
|
||||
SlashVP np vp = mkClause np vp ** { prep = vp.rightVal } ;
|
||||
SlashVP np vp = mkClause np (lin VP vp) ** { prep = vp.rightVal } ;
|
||||
|
||||
AdvSlash slash adv = {
|
||||
s = \\m,p => slash.s ! m ! p ++ adv.s ;
|
||||
|
||||
@@ -10,6 +10,22 @@ oper
|
||||
-- defined in $ResSom$.
|
||||
|
||||
noPrep : Prep = mkPrep "" ;
|
||||
emptyPrep : Prep = lin Prep {
|
||||
s = [] ;
|
||||
obj = \\_ => [] ;
|
||||
prepType = EmptyPrep ;
|
||||
} ;
|
||||
datPrep : Prep = mkPrep "kepada" ;
|
||||
|
||||
-- direct object: "hits him" -> "memukul+nya"
|
||||
dirPrep : Prep = lin Prep {
|
||||
s = [] ;
|
||||
obj = table {
|
||||
P1 => BIND ++ "ku" ;
|
||||
P2 => BIND ++ "mu" ;
|
||||
P3 => BIND ++ "nya" } ;
|
||||
prepType = DirObj ;
|
||||
} ;
|
||||
|
||||
--2 Nouns
|
||||
|
||||
@@ -192,9 +208,16 @@ oper
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : Str -> V2S = \v -> lin V2S (mkVerb2 (regVerb v Meng) dirPrep) ;
|
||||
mkV2S : V -> Prep -> V2S = \v,p -> lin V22 (mkVerb2 v p)
|
||||
mkV2S : V -> Prep -> V2S = \v,p -> lin V2S (mkVerb2 v p)
|
||||
} ;
|
||||
|
||||
|
||||
mkPrep : Str -> Prep = \dengan -> lin Prep {
|
||||
s = dengan ;
|
||||
obj = \\p => dengan + poss2str (Poss p) ;
|
||||
prepType = OtherPrep ;
|
||||
} ;
|
||||
|
||||
-- lin like_V2 = let like' : V2 = mkV2 "suka" in like' ** {
|
||||
-- s = table {Passive => "disukai" ; _ => "suka"} ;
|
||||
-- } ;
|
||||
|
||||
@@ -167,31 +167,6 @@ oper
|
||||
prepType : PrepType ; -- TODO rename, the name is confusing
|
||||
} ;
|
||||
|
||||
mkPrep : Str -> Preposition = \dengan -> {
|
||||
s = dengan ;
|
||||
obj = \\p => dengan + poss2str (Poss p) ;
|
||||
prepType = OtherPrep ;
|
||||
} ;
|
||||
|
||||
-- direct object: "hits him" -> "memukul+nya"
|
||||
dirPrep : Preposition = {
|
||||
s = [] ;
|
||||
obj = table {
|
||||
P1 => BIND ++ "ku" ;
|
||||
P2 => BIND ++ "mu" ;
|
||||
P3 => BIND ++ "nya" } ;
|
||||
prepType = DirObj ;
|
||||
} ;
|
||||
|
||||
-- truly empty
|
||||
emptyPrep : Preposition = {
|
||||
s = [] ;
|
||||
obj = \\_ => [] ;
|
||||
prepType = EmptyPrep ;
|
||||
} ;
|
||||
|
||||
datPrep : Preposition = mkPrep "kepada" ;
|
||||
|
||||
applyPrep : Preposition -> NounPhrase -> Str = \prep,np ->
|
||||
case <np.a, prep.prepType> of {
|
||||
<IsPron p,OtherPrep> => prep.obj ! p ++ np.empty ;
|
||||
|
||||
@@ -74,9 +74,9 @@ concrete QuestionNep of Question = CatNep ** open ResNep, Prelude in {
|
||||
CompIAdv a = a ;
|
||||
CompIP p = ss (p.s ! Nom) ;
|
||||
AdvIAdv i a = {s = i.s ++ a.s} ;
|
||||
AdvQVP vp iadv = insertObj (\\_ => iadv.s) vp ;
|
||||
AddAdvQVP qvp iadv = insertObj (\\_ => iadv.s) qvp ;
|
||||
ComplSlashIP vpslash ip = insertObj (\\_ => ip.s ! Nom) vpslash ;
|
||||
AdvQVP vp iadv = lin VP (insertObj (\\_ => iadv.s) vp) ;
|
||||
AddAdvQVP qvp iadv = lin VP (insertObj (\\_ => iadv.s) qvp) ;
|
||||
ComplSlashIP vpslash ip = lin VP (insertObj (\\_ => ip.s ! Nom) vpslash) ;
|
||||
|
||||
--QuestQVP : IP -> QVP -> QCl ; -- who buys what where
|
||||
QuestQVP ip qvp =
|
||||
|
||||
@@ -33,6 +33,6 @@ lin
|
||||
{s = "بگذارید" ++ np2str np ++ showVPH (VSubj Pos np.a) np.a vp};
|
||||
|
||||
oper
|
||||
existVerb : V2 = mkV2 (mkV "وجود" haveVerb) noPrep ;
|
||||
existVerb : V2 = mkV2 (mkV "وجود" (lin V haveVerb)) noPrep ;
|
||||
|
||||
}
|
||||
|
||||
@@ -164,11 +164,11 @@ oper
|
||||
mkVV : Str -> VV -- Predictable VV, subjunctive complement, is auxiliary.
|
||||
= \s -> lin VV (regV s ** {isAux = True ; compl = subjunctive ; isDef = False}) ;
|
||||
mkVV : V -> VV -- takes its VP complement in subjunctive. Is auxiliary.
|
||||
= \v -> v ** {isAux = True ; compl = subjunctive ; isDef = False} ;
|
||||
= \v -> lin VV (v ** {isAux = True ; compl = subjunctive ; isDef = False}) ;
|
||||
mkVV : VVForm -> V -> VV -- takes its VP complement in the given VVForm
|
||||
= \vvf,v -> v ** {isAux = True ; compl = vvf ; isDef = False} ;
|
||||
= \vvf,v -> lin VV (v ** {isAux = True ; compl = vvf ; isDef = False}) ;
|
||||
mkVV : (isAux : Bool) -> VVForm -> V -> VV -- takes its VP complement in the given VVForm. Whether it's auxiliary (T/F) given as the first argument.
|
||||
= \isAux,vvf,v -> v ** {isAux = isAux ; compl = vvf ; isDef = False}
|
||||
= \isAux,vvf,v -> lin VV (v ** {isAux = isAux ; compl = vvf ; isDef = False})
|
||||
} ;
|
||||
|
||||
defVV : VV -> VV = \vv -> vv ** {isDef=True} ;
|
||||
@@ -282,19 +282,19 @@ oper
|
||||
|
||||
mkN = overload {
|
||||
mkN : (sg : Str) -> N -- Takes singular form, returns a noun with ها as the plural form.
|
||||
= \sg -> mkN01 sg inanimate ;
|
||||
= \sg -> lin N (mkN01 sg inanimate) ;
|
||||
mkN : (sg,pl : Str) -> N -- Takes singular and plural forms. Use for ان or its allomorphs, and loanwords with Arabic plural.
|
||||
= \sg,pl -> M.mkN sg pl inanimate ;
|
||||
= \sg,pl -> lin N (M.mkN sg pl inanimate) ;
|
||||
mkN : (possStem : Str) -> N -> N -- Noun with an unexpected possessive stem, e.g. مه where ه is a consonant, not vowel.
|
||||
= \ps,n -> possStemN ps n ;
|
||||
= \ps,n -> lin N (possStemN ps n) ;
|
||||
|
||||
-- hidden from API
|
||||
mkN : (sg : Str) -> Animacy -> N -- Takes singular form and animacy. Inanimate plural ها. Animate plural ان or an allomorph of it (یان or گان) depending on the singular form.
|
||||
= \sg,ani -> case ani of {
|
||||
Inanimate => mkN01 sg ani ;
|
||||
Animate => mkN02 sg ani } ;
|
||||
Inanimate => lin N (mkN01 sg ani) ;
|
||||
Animate => lin N (mkN02 sg ani) } ;
|
||||
mkN : (sg,pl : Str) -> Animacy -> N -- Worst-case constructor: takes singular and plural forms and animacy. Use for e.g. loanwords with Arabic plural, or animate nouns with ها as plural.
|
||||
= \sg,pl,ani -> M.mkN sg pl ani
|
||||
= \sg,pl,ani -> lin N (M.mkN sg pl ani)
|
||||
} ;
|
||||
|
||||
possStemN : Str -> N -> N = \possStem,n -> n ** {
|
||||
@@ -304,18 +304,18 @@ oper
|
||||
|
||||
} ;
|
||||
|
||||
mkN01 : (sg : Str) -> Animacy -> Noun ; -- Takes singular form and animacy, forms plural with ها
|
||||
mkN01 : (sg : Str) -> Animacy -> N ; -- Takes singular form and animacy, forms plural with ها
|
||||
mkN01 sg ani =
|
||||
let pl : Str = case last sg of {
|
||||
--"د"|"ذ"|"ر"|"ز"|"ژ" => sg + "ها" ; -- these letters are separated by default
|
||||
_ => zwnj sg "ها" } ; -- Using zero-width non-joiner, defined in MorphoPes
|
||||
in M.mkN sg pl ani ;
|
||||
in lin N (M.mkN sg pl ani) ;
|
||||
|
||||
mkN02 : (sg : Str) -> Animacy -> Noun ; -- Takes singular form and animacy, pattern matches singular and forms plural with either گان, یان or ان
|
||||
mkN02 : (sg : Str) -> Animacy -> N ; -- Takes singular form and animacy, pattern matches singular and forms plural with either گان, یان or ان
|
||||
mkN02 str ani = case last str of {
|
||||
"ه" => M.mkN str (init str + "گان") ani ;
|
||||
("ا"|"و") => M.mkN str (str + "یان") ani ;
|
||||
_ => M.mkN str (str + "ان") ani
|
||||
"ه" => lin N (M.mkN str (init str + "گان") ani) ;
|
||||
("ا"|"و") => lin N (M.mkN str (str + "یان") ani) ;
|
||||
_ => lin N (M.mkN str (str + "ان") ani)
|
||||
};
|
||||
|
||||
mk2Conj : Str -> Str -> Number -> Conj = \x,y,n ->
|
||||
@@ -396,7 +396,7 @@ oper
|
||||
=> {s = [] ; ra = ra ; mod=Bare ; isPrep = False} ;
|
||||
prep => {s = prep ; ra = [] ; mod=Bare ; isPrep = True}
|
||||
} ;
|
||||
noPrep = prepOrRa [] ;
|
||||
noPrep : Prep = lin Prep (prepOrRa []) ;
|
||||
|
||||
-- NB. The 'mod' field has different meaning for verbs and N2s.
|
||||
ezafeForN2 = {s = [] ; ra = [] ; mod=Ezafe ; isPrep = False} ;
|
||||
@@ -427,11 +427,11 @@ oper
|
||||
mkQuant = overload {
|
||||
-- mkQuant : Pron -> Quant = \p -> {s = \\_,_,c => p.s!c ;a = p.a ; lock_Quant = <>};
|
||||
mkQuant : Str -> Str -> Quant -- hidden from public API
|
||||
= \sg,pl -> makeQuant sg pl Bare False;
|
||||
= \sg,pl -> lin Quant (makeQuant sg pl Bare False);
|
||||
mkQuant : Str -> Str -> (isNeg : Bool) -> Quant -- hidden from public API
|
||||
= \sg,pl,isneg -> makeQuant sg pl Bare isneg;
|
||||
= \sg,pl,isneg -> lin Quant (makeQuant sg pl Bare isneg);
|
||||
mkQuant : Str -> Str -> Mod -> (isNeg : Bool) -> Quant -- hidden from public API
|
||||
= \sg,pl,mod,isneg -> makeQuant sg pl mod isneg;
|
||||
= \sg,pl,mod,isneg -> lin Quant (makeQuant sg pl mod isneg);
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -209,6 +209,6 @@ resource AdjectiveMorphoPol = open CatPol, ResPol, Prelude, (Predef=Predef) in {
|
||||
};
|
||||
|
||||
addComplToAdj : A -> Str -> Case -> A2 ;
|
||||
addComplToAdj a s c = a ** {c = mkCompl s c } ;
|
||||
addComplToAdj a s c = lin A2 (a ** {c = mkCompl s c}) ;
|
||||
|
||||
}
|
||||
|
||||
@@ -26,10 +26,10 @@ oper
|
||||
mkN2 n = mkFun n nullPrep ;
|
||||
|
||||
mkFun : N -> Complement -> N2;
|
||||
mkFun f c = f ** { c = c } ;
|
||||
mkFun f c = lin N2 (f ** { c = c }) ;
|
||||
|
||||
mkN3 : N -> Complement -> Complement -> N3;
|
||||
mkN3 f c1 c2 = f ** { c1 = c1 ; c2 = c2 };
|
||||
mkN3 f c1 c2 = lin N3 (f ** { c1 = c1 ; c2 = c2}) ;
|
||||
|
||||
-- Prepositions
|
||||
|
||||
|
||||
@@ -415,7 +415,7 @@ resource VerbMorphoPol = open CatPol, ResPol, Prelude, (Predef=Predef), (Adj=Adj
|
||||
dirV3 : V -> V3; -- a typical case ie. "zabrać", "dać"
|
||||
dirV3 v = mkV3 v "" "" Acc Dat;
|
||||
|
||||
indicative_form : V -> Bool -> Polarity -> Tense * Anteriority * GenNum * Person => Str;
|
||||
indicative_form : Verb -> Bool -> Polarity -> Tense * Anteriority * GenNum * Person => Str;
|
||||
indicative_form verb imienne pol =
|
||||
case imienne of {True => imienne_form verb pol; False =>
|
||||
let nie = case pol of { Pos => "" ; Neg => "nie" }; in
|
||||
@@ -433,7 +433,7 @@ resource VerbMorphoPol = open CatPol, ResPol, Prelude, (Predef=Predef), (Adj=Adj
|
||||
}
|
||||
};
|
||||
|
||||
imienne_form : V -> Polarity -> Tense * Anteriority * GenNum * Person => Str;
|
||||
imienne_form : Verb -> Polarity -> Tense * Anteriority * GenNum * Person => Str;
|
||||
imienne_form verb pol =
|
||||
let byc = (case verb.asp of { Perfective => conj3 "zostać"; _ => conj1 "być" }).s; in
|
||||
let zostac = (case verb.asp of { Imperfective => conj1 "być"; _ => conj3 "zostać" }).s; in
|
||||
@@ -461,7 +461,7 @@ resource VerbMorphoPol = open CatPol, ResPol, Prelude, (Predef=Predef), (Adj=Adj
|
||||
<Pl, P3> => "będą"
|
||||
};
|
||||
|
||||
imperative_form : V -> Bool -> Polarity -> GenNum -> Person -> Str;
|
||||
imperative_form : Verb -> Bool -> Polarity -> GenNum -> Person -> Str;
|
||||
imperative_form verb imienne pol gn p =
|
||||
case imienne of {
|
||||
True =>
|
||||
@@ -493,7 +493,7 @@ resource VerbMorphoPol = open CatPol, ResPol, Prelude, (Predef=Predef), (Adj=Adj
|
||||
}
|
||||
};
|
||||
|
||||
infinitive_form : V -> Bool -> Polarity -> GenNum -> Str;
|
||||
infinitive_form : Verb -> Bool -> Polarity -> GenNum -> Str;
|
||||
infinitive_form verb imienne pol gn =
|
||||
case imienne of {
|
||||
True =>
|
||||
|
||||
@@ -22,13 +22,13 @@ lin
|
||||
|
||||
what_name_QCl x = mkQCl how_IAdv (mkCl (lin NP x) (reflV (mkV "chamar"))) ;
|
||||
how_old_QCl x = mkQCl (mkIP how8many_IDet L.year_N) x have_V2 ;
|
||||
how_far_QCl x = mkQCl (lin IAdv (ss "a que distância")) (mkCl x D.stare_V) ;
|
||||
how_far_QCl x = mkQCl (lin IAdv (ss "a que distância")) (mkCl x (lin V D.stare_V)) ;
|
||||
|
||||
-- some more things
|
||||
weather_adjCl ap = mkCl (mkVP (mkVA (mkV (fazer_Besch "fazer"))) (lin AP ap)) ;
|
||||
|
||||
is_right_VP = mkVP (mkVA D.stare_V) (mkAP (mkA "certo")) ;
|
||||
is_wrong_VP = mkVP (mkVA D.stare_V) (mkAP (mkA "errado")) ;
|
||||
is_right_VP = mkVP (mkVA (lin V D.stare_V)) (mkAP (mkA "certo")) ;
|
||||
is_wrong_VP = mkVP (mkVA (lin V D.stare_V)) (mkAP (mkA "errado")) ;
|
||||
|
||||
n_units_AP card cn a = mkAP (lin AdA (mkUtt (mkNP <lin Card card : Card> (lin CN cn))))
|
||||
(lin A a) ;
|
||||
|
||||
@@ -36,7 +36,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
|
||||
bread_N = mkN03 "روتی" ;
|
||||
break_V2 = mkV2 (mkV "توڑنا") ;
|
||||
broad_A = mkAdj1 "كھلا" ;
|
||||
brother_N2 = mkN2 (mkN01 "پرا") (mkPrep "كا") "كے" ; --not correct
|
||||
brother_N2 = mkN2 (lin N (mkN01 "پرا")) (mkPrep "كا") "كے" ; --not correct
|
||||
brown_A = mkAdj1 "نسواری" ;
|
||||
-- butter_N = mkN "مكھن" ;
|
||||
buy_V2 = mkV2 (mkV "خریدنا");
|
||||
@@ -73,7 +73,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
|
||||
empty_A = mkAdj1 "خالی" ;
|
||||
-- enemy_N = mkN "دشمن" ;
|
||||
-- factory_N = mkN "كارخانہ" ;
|
||||
father_N2 = mkN2 (mkN01 "ابا") (mkPrep "دا") "دے" ;
|
||||
father_N2 = mkN2 (lin N (mkN01 "ابا")) (mkPrep "دا") "دے" ;
|
||||
fear_VS = mkV "ڈرنا";
|
||||
find_V2 = mkV2 (mkV "پانا") ;
|
||||
fish_N = mkN03 "مچھلی" ;
|
||||
@@ -124,7 +124,7 @@ concrete LexiconPnb of Lexicon = CatPnb **
|
||||
meat_N = mkN02 "گوشت" ;
|
||||
-- milk_N = mkN "دودھ" ;
|
||||
moon_N = mkN02 "چن" ;
|
||||
mother_N2 = mkN2 (mkN05 "ماں") (mkPrep "دی") "ڈے"; -- not covered need to be discussed
|
||||
mother_N2 = mkN2 (lin N (mkN05 "ماں")) (mkPrep "دی") "ڈے"; -- not covered need to be discussed
|
||||
mountain_N = mkN03 "پاڑی" ;
|
||||
-- music_N = mkN "موسیقی" ;
|
||||
narrow_A = mkAdj1 "باریك" ;
|
||||
|
||||
@@ -58,7 +58,7 @@ mkPN = overload {
|
||||
\s1,s2,s3,s4,n,g -> let p = mkIntPronForm s1 s2 s3 s4 in { s = p.s ; n = n ; g = g ; lock_IP = <>};
|
||||
|
||||
-- AdN
|
||||
mkAdN : Str -> AdN = \s -> ss s ;
|
||||
mkAdN : Str -> AdN = \s -> lin AdN (ss s) ;
|
||||
|
||||
--2 Adjectives
|
||||
|
||||
|
||||
@@ -340,7 +340,7 @@ incomplete concrete ExtendRomanceFunctor of Extend =
|
||||
passVPSlash vps agent = let
|
||||
auxvp = predV auxPassive
|
||||
in
|
||||
vps ** {
|
||||
lin VP vps ** {
|
||||
s = auxvp.s ;
|
||||
agr = auxvp.agr ;
|
||||
comp = \\a => (let agr = complAgr a in vps.s.s ! VPart agr.g agr.n) ++ vps.comp ! a ++ agent ;
|
||||
|
||||
@@ -40,17 +40,17 @@ oper
|
||||
};
|
||||
|
||||
mkV = overload {
|
||||
mkV : Str -> Verb
|
||||
mkV : Str -> V
|
||||
= \root -> lin V (smartVerb root); --{s =root; pres =[]; perf = []; morphs= mkVerbMorphs; isRegular = True}; --only those verbs whose conjugation involves change of last letter and are done in the same way in both runyankore and rukiga
|
||||
mkV : Str -> Str ->Str -> Verb
|
||||
mkV : Str -> Str ->Str -> V
|
||||
= \root, restPres, restPerf ->lin V (mkVerb root restPres restPerf);
|
||||
mkV : Str -> Str ->Str ->Str -> Bool -> Verb
|
||||
mkV : Str -> Str ->Str ->Str -> Bool -> V
|
||||
= \root, restPres, restPerf, p, bool ->lin V (mkVerbV2X root restPres restPerf p bool);
|
||||
};
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : Str -> V2 = \root ->dirV2 (smartVerb root); --** {comp =[] ; isCompN2 = False};
|
||||
mkV2 : Str -> Str ->Str -> V2 = \root, s1, s2 ->dirV2 (mkVerb root s1 s2); --** {comp =[] ; isCompN2 = False};
|
||||
mkV2 : Str -> V2 = \root ->dirV2 (lin V (smartVerb root)); --** {comp =[] ; isCompN2 = False};
|
||||
mkV2 : Str -> Str ->Str -> V2 = \root, s1, s2 ->dirV2 (lin V (mkVerb root s1 s2)); --** {comp =[] ; isCompN2 = False};
|
||||
};
|
||||
mkV3 = overload {
|
||||
mkV3 : Str -> Verb3 = \root ->mkV2 root ** {comp2 =[]};
|
||||
@@ -213,7 +213,7 @@ mkInterj : Str -> Interj
|
||||
mkV0 : V -> V;
|
||||
mkV0 v = v ;
|
||||
mkA2 : Str -> Position -> Bool -> Bool ->Bool-> A2V = \a2, pos, isProper, isPrep,isNeg ->
|
||||
lin A2V ((mkAdjective a2 pos isProper isPrep isNeg) ** {c2 = ""; isPre = True});
|
||||
lin A2 (mkAdjective a2 pos isProper isPrep isNeg) ** {c2 = ""; isPre = True};
|
||||
--mkA2V : A -> A2V;
|
||||
--mkA2V a = lin A2V (a * {c2 = ""; isPre = True});
|
||||
mkA2V : Str -> Position -> Bool -> Bool ->Bool-> A2 =\a2, pos, isProper, isPrep,isNeg -> lin A2 ((mkAdjective a2 pos isProper isPrep isNeg) ** {c2 = ""; isPre = True});
|
||||
|
||||
@@ -163,7 +163,7 @@ lin
|
||||
oper
|
||||
{-
|
||||
-} --# notpresent
|
||||
inflVerb : CatRus.V -> Str = \v ->
|
||||
inflVerb : VerbForms -> Str = \v ->
|
||||
let fut : Agr=>Str = \\a => verbFutAgree v a in
|
||||
let pres : Agr=>Str = \\a => verbPresAgree v a in
|
||||
let past : Agr=>Str = \\a => verbPastAgree v a "" in
|
||||
|
||||
@@ -292,7 +292,7 @@ oper
|
||||
|
||||
compoundN = overload {
|
||||
compoundN : A -> N -> N
|
||||
= \a, n -> applyMaybeNumber
|
||||
= \a, n -> lin N (applyMaybeNumber
|
||||
{snom = case n.g of {
|
||||
Fem => preOrPost (notB a.p) a.fsnom n.snom ;
|
||||
Masc => preOrPost (notB a.p) a.msnom n.snom ;
|
||||
@@ -349,7 +349,7 @@ oper
|
||||
g=n.g ;
|
||||
rel=(guessAdjectiveForms nonExist) ;
|
||||
rt=GenType
|
||||
} ;
|
||||
}) ;
|
||||
|
||||
compoundN : N -> Str -> N
|
||||
= \n, adv -> n ** {
|
||||
@@ -592,7 +592,7 @@ oper
|
||||
mkA : Str -> Str -> Z.ZAIndex -> ShortFormPreference -> A
|
||||
= \nom, comp, zi, spf -> lin A (makeAdjectiveFormsUseIndex nom comp zi spf) ;
|
||||
mkA : PronForms -> A
|
||||
= \pf -> pronToAdj pf ;
|
||||
= \pf -> lin A (pronToAdj pf) ;
|
||||
mkA : A -> Str -> A -> A
|
||||
= \a1,link,a2 -> lin A (mkCompoundA a1 link a2) ;
|
||||
mkA : V -> Voice -> Tense -> A
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
--# -path=.:prelude:alltenses
|
||||
|
||||
concrete LexiconSnd of Lexicon = CatSnd **
|
||||
--open ResSnd, Prelude in {
|
||||
open ParadigmsSnd,MorphoSnd, Prelude in {
|
||||
|
||||
flags
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
---- syntax. To build a lexicon, it is better to use $ParadigmsSnd$, which
|
||||
---- gives a higher-level access to this module.
|
||||
--
|
||||
resource MorphoSnd = ResSnd ** open Prelude,Predef in {
|
||||
resource MorphoSnd = ResSnd ** open Prelude,Predef,CatSnd in {
|
||||
|
||||
|
||||
flags optimize=all ;
|
||||
@@ -17,8 +17,8 @@ resource MorphoSnd = ResSnd ** open Prelude,Predef in {
|
||||
----2 Nouns
|
||||
oper
|
||||
|
||||
mkN : (x1,_,_,_,_,_,_,x8 : Str) -> Gender -> Noun =
|
||||
\sd,so,sv,sa, pd,po,pv,pa, g -> {
|
||||
mkN : (x1,_,_,_,_,_,_,x8 : Str) -> Gender -> N =
|
||||
\sd,so,sv,sa, pd,po,pv,pa, g -> lin N {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Dir => sd ;
|
||||
@@ -39,7 +39,7 @@ oper
|
||||
|
||||
|
||||
-- 1. msculine: chokro, kuto, hat
|
||||
mkN01 : Str -> Noun ;
|
||||
mkN01 : Str -> N ;
|
||||
mkN01 chokro = let chokr = (tk 1 chokro)
|
||||
in mkN (chokro) (chokr+"ی") (chokr+"ا") (chokr+"ا")
|
||||
(chokr+"ا") (chokr+"ن") (chokr+"ا") (chokr+"ا")
|
||||
@@ -47,81 +47,81 @@ oper
|
||||
|
||||
|
||||
-- 2. karkhano
|
||||
mkN02 : Str -> Noun ;
|
||||
mkN02 : Str -> N ;
|
||||
mkN02 karkhano =let karkhan = (tk 1 karkhano)
|
||||
in mkN (karkhano) (karkhan+"ی") (karkhan+"ا") (karkhano)
|
||||
(karkhan+"ا") (karkhan+"ن") (karkhan+"و") (karkhan+"ا")
|
||||
Fem ;
|
||||
|
||||
-- 3. gher, shehar
|
||||
mkN03 : Str -> Noun ;
|
||||
mkN03 : Str -> N ;
|
||||
mkN03 gher = mkN (gher) (gher) (gher) (gher)
|
||||
(gher) (gher+"ن") (gher+"و") (gher)
|
||||
Masc ;
|
||||
|
||||
-- 4. paki, mez, gah
|
||||
mkN04 : Str -> Noun ;
|
||||
mkN04 : Str -> N ;
|
||||
mkN04 paki = mkN (paki) (paki) (paki) (paki)
|
||||
(paki) (paki+"ن") (paki) (paki)
|
||||
Fem ;
|
||||
|
||||
-- 5. msculine: bar, hotel, pathar
|
||||
mkN05 : Str -> Noun ;
|
||||
mkN05 : Str -> N ;
|
||||
mkN05 bar = mkN (bar) (bar) (bar) (bar)
|
||||
(bar) (bar+"ن") (bar+"و") (bar)
|
||||
Masc ;
|
||||
|
||||
-- 6. pe
|
||||
mkN06 : Str -> Noun ;
|
||||
mkN06 : Str -> N ;
|
||||
mkN06 pe = mkN (pe) (pe) (pe) (pe)
|
||||
(pe+"۶ر") (pe+"۶رن") (pe+"۶رو") (pe+"۶ر")
|
||||
Masc ;
|
||||
|
||||
-- 7. Feminine : ma
|
||||
mkN07 : Str -> Noun ;
|
||||
mkN07 : Str -> N ;
|
||||
mkN07 ma = mkN (ma) (ma) (ma) (ma)
|
||||
(ma+"۶ر") (ma+"۶رن") (ma+"۶رو") (ma+"۶ر")
|
||||
Fem ;
|
||||
|
||||
-- 8. msculine: topi, takre
|
||||
mkN08 : Str -> Noun ;
|
||||
mkN08 : Str -> N ;
|
||||
mkN08 topi = mkN (topi) (topi) (topi) (topi)
|
||||
(topi+"ون") (topi+"ن") (topi+"و") (topi+"ون")
|
||||
Masc ;
|
||||
|
||||
-- 9. Feminine: bere, bili, kurse
|
||||
mkN09 : Str -> Noun ;
|
||||
mkN09 : Str -> N ;
|
||||
mkN09 bili = mkN (bili) (bili) (bili) (bili)
|
||||
(bili+"ون") (bili+"ن") (bili+"ن") (bili+"ون")
|
||||
Fem ;
|
||||
|
||||
-- 10. msculine: bha
|
||||
mkN010 : Str -> Noun ;
|
||||
mkN010 : Str -> N ;
|
||||
mkN010 bha = mkN (bha) (bha) (bha) (bha)
|
||||
(bha+"ر") (bha+"رن") (bha+"رو") (bha+"ر")
|
||||
Masc ;
|
||||
|
||||
-- 11. Feminine: bhen
|
||||
mkN11 : Str -> Noun ;
|
||||
mkN11 : Str -> N ;
|
||||
mkN11 bhen = let bhe= (tk 1 bhen)
|
||||
in mkN (bhen) (bhen) (bhen) (bhen)
|
||||
(bhe+"نر") (bhe+"نرن") (bhen+"ون") (bhe+"نر")
|
||||
Fem ;
|
||||
|
||||
--12. msculine: raja, darya
|
||||
mkN12 : Str -> Noun ;
|
||||
mkN12 : Str -> N ;
|
||||
mkN12 raja = mkN (raja) (raja) (raja) (raja)
|
||||
(raja) (raja+"۶ن") (raja+"۶و") (raja)
|
||||
Masc ;
|
||||
|
||||
-- 13. msculine: fan, son, kher,
|
||||
mkN13 : Str -> Noun ;
|
||||
mkN13 : Str -> N ;
|
||||
mkN13 son = mkN (son) (son) (son) (son)
|
||||
(son) (son) (son) (son)
|
||||
Masc ;
|
||||
|
||||
-- 14. Feminine: pen, samand
|
||||
mkN14 : Str -> Noun ;
|
||||
mkN14 : Str -> N ;
|
||||
mkN14 pen = mkN (pen) (pen) (pen) (pen)
|
||||
(pen) (pen) pen ""
|
||||
Fem ;
|
||||
|
||||
@@ -60,7 +60,7 @@ mkPN = overload {
|
||||
\s1,s2,s3,s4,n,g -> let p = mkIntPronForm s1 s2 s3 s4 in { s = p.s ; n = n ; g = g ; lock_IP = <>};
|
||||
|
||||
-- AdN
|
||||
mkAdN : Str -> AdN = \s -> ss s ;
|
||||
mkAdN : Str -> AdN = \s -> lin AdN (ss s) ;
|
||||
|
||||
--2 Adjectives
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
---- syntax. To build a lexicon, it is better to use $ParadigmsSnd$, which
|
||||
---- gives a higher-level access to this module.
|
||||
--
|
||||
resource MorphoSnd = ResSnd ** open Prelude,Predef in {
|
||||
resource MorphoSnd = ResSnd ** open Prelude,Predef,CatSnd in {
|
||||
|
||||
|
||||
flags optimize=all ;
|
||||
@@ -17,8 +17,8 @@ resource MorphoSnd = ResSnd ** open Prelude,Predef in {
|
||||
----2 Nouns
|
||||
oper
|
||||
|
||||
mkN : (x1,_,_,_,_,_,_,x8 : Str) -> Gender -> Noun =
|
||||
\sd,so,sv,sa, pd,po,pv,pa, g -> {
|
||||
mkN : (x1,_,_,_,_,_,_,x8 : Str) -> Gender -> N =
|
||||
\sd,so,sv,sa, pd,po,pv,pa, g -> lin N {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Dir => sd ;
|
||||
@@ -39,7 +39,7 @@ oper
|
||||
|
||||
|
||||
-- 1. msculine: chokro, kuto, hat
|
||||
mkN01 : Str -> Noun ;
|
||||
mkN01 : Str -> N ;
|
||||
mkN01 chokro = let chokr = (tk 1 chokro)
|
||||
in mkN (chokro) (chokr+"y") (chokr+"a") (chokr+"a")
|
||||
(chokr+"a") (chokr+"n") (chokr+"a") (chokr+"a")
|
||||
@@ -47,81 +47,81 @@ oper
|
||||
|
||||
|
||||
-- 2. karkhano
|
||||
mkN02 : Str -> Noun ;
|
||||
mkN02 : Str -> N ;
|
||||
mkN02 karkhano =let karkhan = (tk 1 karkhano)
|
||||
in mkN (karkhano) (karkhan+"y") (karkhan+"a") (karkhano)
|
||||
(karkhan+"a") (karkhan+"n") (karkhan+"W") (karkhan+"a")
|
||||
Fem ;
|
||||
|
||||
-- 3. gher, shehar
|
||||
mkN03 : Str -> Noun ;
|
||||
mkN03 : Str -> N ;
|
||||
mkN03 gher = mkN (gher) (gher) (gher) (gher)
|
||||
(gher) (gher+"n") (gher+"W") (gher)
|
||||
Masc ;
|
||||
|
||||
-- 4. paki, mez, gah
|
||||
mkN04 : Str -> Noun ;
|
||||
mkN04 : Str -> N ;
|
||||
mkN04 paki = mkN (paki) (paki) (paki) (paki)
|
||||
(paki) (paki+"n") (paki) (paki)
|
||||
Fem ;
|
||||
|
||||
-- 5. msculine: bar, hotel, pathar
|
||||
mkN05 : Str -> Noun ;
|
||||
mkN05 : Str -> N ;
|
||||
mkN05 bar = mkN (bar) (bar) (bar) (bar)
|
||||
(bar) (bar+"n") (bar+"W") (bar)
|
||||
Masc ;
|
||||
|
||||
-- 6. pe
|
||||
mkN06 : Str -> Noun ;
|
||||
mkN06 : Str -> N ;
|
||||
mkN06 pe = mkN (pe) (pe) (pe) (pe)
|
||||
(pe+"e'r") (pe+"e'rn") (pe+"e'rW") (pe+"e'r")
|
||||
Masc ;
|
||||
|
||||
-- 7. Feminine : ma
|
||||
mkN07 : Str -> Noun ;
|
||||
mkN07 : Str -> N ;
|
||||
mkN07 ma = mkN (ma) (ma) (ma) (ma)
|
||||
(ma+"e'r") (ma+"e'rn") (ma+"e'rW") (ma+"e'r")
|
||||
Fem ;
|
||||
|
||||
-- 8. msculine: topi, takre
|
||||
mkN08 : Str -> Noun ;
|
||||
mkN08 : Str -> N ;
|
||||
mkN08 topi = mkN (topi) (topi) (topi) (topi)
|
||||
(topi+"Wn") (topi+"n") (topi+"W") (topi+"Wn")
|
||||
Masc ;
|
||||
|
||||
-- 9. Feminine: bere, bili, kurse
|
||||
mkN09 : Str -> Noun ;
|
||||
mkN09 : Str -> N ;
|
||||
mkN09 bili = mkN (bili) (bili) (bili) (bili)
|
||||
(bili+"Wn") (bili+"n") (bili+"n") (bili+"Wn")
|
||||
Fem ;
|
||||
|
||||
-- 10. msculine: bha
|
||||
mkN010 : Str -> Noun ;
|
||||
mkN010 : Str -> N ;
|
||||
mkN010 bha = mkN (bha) (bha) (bha) (bha)
|
||||
(bha+"r") (bha+"rn") (bha+"rW") (bha+"r")
|
||||
Masc ;
|
||||
|
||||
-- 11. Feminine: bhen
|
||||
mkN11 : Str -> Noun ;
|
||||
mkN11 : Str -> N ;
|
||||
mkN11 bhen = let bhe= (tk 1 bhen)
|
||||
in mkN (bhen) (bhen) (bhen) (bhen)
|
||||
(bhe+"nr") (bhe+"nrn") (bhen+"Wn") (bhe+"nr")
|
||||
Fem ;
|
||||
|
||||
--12. msculine: raja, darya
|
||||
mkN12 : Str -> Noun ;
|
||||
mkN12 : Str -> N ;
|
||||
mkN12 raja = mkN (raja) (raja) (raja) (raja)
|
||||
(raja) (raja+"e'n") (raja+"e'W") (raja)
|
||||
Masc ;
|
||||
|
||||
-- 13. msculine: fan, son, kher,
|
||||
mkN13 : Str -> Noun ;
|
||||
mkN13 : Str -> N ;
|
||||
mkN13 son = mkN (son) (son) (son) (son)
|
||||
(son) (son) (son) (son)
|
||||
Masc ;
|
||||
|
||||
-- 14. Feminine: pen, samand
|
||||
mkN14 : Str -> Noun ;
|
||||
mkN14 : Str -> N ;
|
||||
mkN14 pen = mkN (pen) (pen) (pen) (pen)
|
||||
(pen) (pen) pen ""
|
||||
Fem ;
|
||||
|
||||
@@ -38,7 +38,7 @@ oper
|
||||
compoundN : N -> Str -> N = \noun,adv -> noun ** {s = \\c,n => noun.s ! c ! n ++ adv} ;
|
||||
} ;
|
||||
|
||||
mkN2 : N -> Prep -> N2 = \n,c -> n ** {c=c} ;
|
||||
mkN2 : N -> Prep -> N2 = \n,c -> lin N2 (n ** {c=c}) ;
|
||||
|
||||
--All masculine forms (except those with long pluralstem) are formed here.
|
||||
--Takes the baseform + the genitive singular form + animacy.
|
||||
@@ -398,11 +398,11 @@ oper
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \v -> lin V2 (v ** {c2 = lin Prep {s=""; c=Acc}; c3 = lin Prep {s=""; c=Acc}}) ;
|
||||
mkV3 : V -> Case -> Case -> V3 = \v,c2,c3 -> lin V2 (v ** {c2 = lin Prep {s=""; c=c2}; c3 = lin Prep {s=""; c=c3}}) ;
|
||||
mkV3 : V -> Case -> Prep -> V3 = \v,c2,p3 -> lin V2 (v ** {c2 = lin Prep {s=""; c=c2}; c3 = p3}) ;
|
||||
mkV3 : V -> Prep -> Case -> V3 = \v,p2,c3 -> lin V2 (v ** {c2 = p2 ; c3 = lin Prep {s=""; c=c3}}) ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p2,p3 -> lin V2 (v ** {c2 = p2 ; c3 = p3}) ;
|
||||
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = lin Prep {s=""; c=Acc}; c3 = lin Prep {s=""; c=Acc}}) ;
|
||||
mkV3 : V -> Case -> Case -> V3 = \v,c2,c3 -> lin V3 (v ** {c2 = lin Prep {s=""; c=c2}; c3 = lin Prep {s=""; c=c3}}) ;
|
||||
mkV3 : V -> Case -> Prep -> V3 = \v,c2,p3 -> lin V3 (v ** {c2 = lin Prep {s=""; c=c2}; c3 = p3}) ;
|
||||
mkV3 : V -> Prep -> Case -> V3 = \v,p2,c3 -> lin V3 (v ** {c2 = p2 ; c3 = lin Prep {s=""; c=c3}}) ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p2,p3 -> lin V3 (v ** {c2 = p2 ; c3 = p3}) ;
|
||||
} ;
|
||||
|
||||
mkVA : V -> VA ;
|
||||
@@ -442,7 +442,7 @@ oper
|
||||
mkA : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x166 : Str) -> A = worstA ;
|
||||
} ;
|
||||
|
||||
mkA2 : A -> Prep -> A2 = \a,c -> a ** {c=c} ;
|
||||
mkA2 : A -> Prep -> A2 = \a,c -> lin A2 (a ** {c=c}) ;
|
||||
|
||||
irregA : (_,_,_,_,_,_ :Str) -> A = \masc,fem,neut,mascC,femC,neutC -> lin A {
|
||||
s = table {
|
||||
|
||||
@@ -226,7 +226,7 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
||||
UseN,UseN2 = ResSom.useN ;
|
||||
|
||||
-- : N2 -> NP -> CN ; -- Sahra hooyadeed
|
||||
ComplN2 n2 np = genModCN (useN n2) np ;
|
||||
ComplN2 n2 np = genModCN (lin CN (useN n2)) np ;
|
||||
|
||||
{-
|
||||
-- : N3 -> NP -> N2 ; -- distance from this city (to Paris)
|
||||
|
||||
@@ -219,7 +219,7 @@ oper
|
||||
mkV : Str -> V -> V = \s,v -> lin V (prefixV s v)
|
||||
} ;
|
||||
|
||||
copula = ResSom.copula ;
|
||||
copula = lin V (ResSom.copula) ;
|
||||
|
||||
regV : Str -> Verb = \s -> case s of {
|
||||
_ + #c + #c + "o" => mkVerb (cJoogso s) ;
|
||||
@@ -243,7 +243,7 @@ oper
|
||||
mkV3 = overload {
|
||||
mkV3 : (sug : Str) -> V3 = \s -> lin V3 (regV s ** {c2,c3 = noPrep}) ;
|
||||
mkV3 : (sug : Str) -> (_,_ : Adposition) -> V3 = \s,p,q -> lin V3 (regV s ** {c2 = p ; c3 = q}) ;
|
||||
mkV3 : V -> (_,_ : Adposition) -> V2 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) ;
|
||||
mkV3 : V -> (_,_ : Adposition) -> V3 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) ;
|
||||
} ;
|
||||
|
||||
mkVV = overload {
|
||||
|
||||
@@ -115,14 +115,14 @@ lin above_Prep = mkPrep (mkPrep ka) [] [] "dul" ;
|
||||
-- lin after_Prep = mkPrep ""
|
||||
-- lin before_Prep = mkPrep "" ;
|
||||
-- lin behind_Prep = mkPrep "" ;
|
||||
lin between_Prep = possPrep (nUl "dhex") ;
|
||||
lin between_Prep = possPrep (lin N (nUl "dhex")) ;
|
||||
-- lin by8agent_Prep = mkPrep ;
|
||||
-- lin by8means_Prep = mkPrep ;
|
||||
-- lin during_Prep = mkPrep ;
|
||||
-- lin except_Prep = mkPrep ;
|
||||
-- lin for_Prep = mkPrep ;
|
||||
-- lin from_Prep = mkPrep "" ;
|
||||
lin in8front_Prep = possPrep (nUl "hor") ;
|
||||
lin in8front_Prep = possPrep (lin N (nUl "hor")) ;
|
||||
lin in_Prep = mkPrep ku ;
|
||||
lin on_Prep = mkPrep ku ;
|
||||
-- lin part_Prep = mkPrep ;
|
||||
@@ -130,7 +130,7 @@ lin on_Prep = mkPrep ku ;
|
||||
-- lin through_Prep = mkPrep ;
|
||||
-- lin to_Prep = mkPrep ;
|
||||
lin under_Prep =
|
||||
let hoos : CatSom.Prep = possPrep (nUl "hoos")
|
||||
let hoos : CatSom.Prep = possPrep (lin N (nUl "hoos"))
|
||||
in hoos ** {c2 = Ku} ;
|
||||
lin with_Prep = mkPrep la ;
|
||||
-- lin without_Prep = mkPrep ;
|
||||
@@ -176,7 +176,7 @@ lin yes_Utt = ss "haa" ;
|
||||
-------
|
||||
-- Verb
|
||||
|
||||
lin have_V2 = mkV2 have_V noPrep ; -- TODO: check if {sii = "l" ++ BIND ; isCopula=True} makes sense for present tense negative
|
||||
lin have_V2 = mkV2 (lin V 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 can_VV = mkVV "kar" ; -- can (possibility)
|
||||
lin must_VV = mkVV waa_in ;
|
||||
@@ -190,18 +190,17 @@ lin please_Voc = ss "" ;
|
||||
-}
|
||||
oper
|
||||
mkIAdv : Adposition -> Str -> Bool -> ResSom.IAdv = \pr ->
|
||||
let pr' : Prep = ParadigmsSom.mkPrep pr ;
|
||||
in prepIP pr' ;
|
||||
prepIP (ParadigmsSom.mkPrep pr) ;
|
||||
|
||||
mkIP : (maxay, maxaa : Str) -> Bool -> IP = \maxay,maxaa,b -> emptyNP ** {
|
||||
mkIP : (maxay, maxaa : Str) -> Bool -> IP = \maxay,maxaa,b -> lin IP (emptyNP ** {
|
||||
s = table {
|
||||
Nom => maxaa ; -- together with STM
|
||||
Abs => maxay } ; -- alone, no STM (used in UttIP and IComp)
|
||||
contractSTM = b ;
|
||||
} ;
|
||||
}) ;
|
||||
|
||||
prepIP : Prep -> Str -> Bool -> ResSom.IAdv = \pr,str,b ->
|
||||
prepIP : CatSom.Prep -> Str -> Bool -> ResSom.IAdv = \pr,str,b ->
|
||||
let adv : Adverb = prepNP (mkPrep pr str [] []) emptyNP ;
|
||||
in adv ** {contractSTM = b ; s = linAdv adv} ;
|
||||
in lin IP (adv ** {contractSTM = b ; s = linAdv adv}) ;
|
||||
|
||||
}
|
||||
|
||||
@@ -166,65 +166,65 @@ oper
|
||||
-- Used in application grammars, please don't remove. /IL
|
||||
agr2pron : Agr => Pron = table {
|
||||
{g=Masc ; n=Sg ; p=P1}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"yo" "me" "me" "mí"
|
||||
"mi" "mi" "mis" "mis"
|
||||
Masc Sg P1 ;
|
||||
Masc Sg P1) ;
|
||||
{g=Masc ; n=Sg ; p=P2}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"tú" "te" "te" "ti"
|
||||
"tu" "tu" "tus" "tus"
|
||||
Masc Sg P2 ;
|
||||
Masc Sg P2) ;
|
||||
{g=Masc ; n=Sg ; p=P3}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"él" "lo" "le" "él"
|
||||
"su" "su" "sus" "sus"
|
||||
Masc Sg P3 ;
|
||||
Masc Sg P3) ;
|
||||
{g=Masc ; n=Pl ; p=P1}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"nosotros" "nos" "nos" "nosotros"
|
||||
"nuestro" "nuestra" "nuestros" "nuestras"
|
||||
Masc Pl P1 ;
|
||||
Masc Pl P1) ;
|
||||
{g=Masc ; n=Pl ; p=P2}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"vosotros" "os" "os" "vosotros"
|
||||
"vuestro" "vuestra" "vuestros" "vuestras"
|
||||
Masc Pl P2 ;
|
||||
Masc Pl P2) ;
|
||||
{g=Masc ; n=Pl ; p=P3}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"ellos" "los" "les" "ellos"
|
||||
"su" "su" "sus" "sus"
|
||||
Masc Pl P3 ;
|
||||
Masc Pl P3) ;
|
||||
{g=Fem ; n=Sg ; p=P1}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"yo" "me" "me" "mí"
|
||||
"mi" "mi" "mis" "mis"
|
||||
Fem Sg P1 ;
|
||||
Fem Sg P1) ;
|
||||
{g=Fem ; n=Sg ; p=P2}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"tú" "te" "te" "ti"
|
||||
"tu" "tu" "tus" "tus"
|
||||
Fem Sg P2 ;
|
||||
Fem Sg P2) ;
|
||||
{g=Fem ; n=Sg ; p=P3}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"ella" "la" "le" "ella"
|
||||
"su" "su" "sus" "sus"
|
||||
Fem Sg P3 ;
|
||||
Fem Sg P3) ;
|
||||
{g=Fem ; n=Pl ; p=P1}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"nosotras" "nos" "nos" "nosotras"
|
||||
"nuestro" "nuestra" "nuestros" "nuestras"
|
||||
Fem Pl P1 ;
|
||||
Fem Pl P1) ;
|
||||
{g=Fem ; n=Pl ; p=P2}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"vosotras" "os" "os" "vosotras"
|
||||
"vuestro" "vuestra" "vuestros" "vuestras"
|
||||
Fem Pl P2 ;
|
||||
Fem Pl P2) ;
|
||||
{g=Fem ; n=Pl ; p=P3}
|
||||
=> mkPronoun
|
||||
=> lin Pron (mkPronoun
|
||||
"ellas" "las" "les" "ellas"
|
||||
"su" "su" "sus" "sus"
|
||||
Fem Pl P3
|
||||
Fem Pl P3)
|
||||
} ;
|
||||
|
||||
--2 Determiners
|
||||
|
||||
@@ -388,7 +388,7 @@ mkN2 = overload {
|
||||
} ;
|
||||
|
||||
|
||||
regV=MorphoSwa.regV ;
|
||||
regV=\v -> lin V (MorphoSwa.regV v) ;
|
||||
|
||||
mkV = overload {
|
||||
mkV : Str -> V = \v ->lin V(regV v) ;
|
||||
|
||||
@@ -65,7 +65,7 @@ lin
|
||||
monthPN m = ss m.s ;
|
||||
|
||||
languageNP l = mkNP l ;
|
||||
languageCN l = mkCN l ;
|
||||
languageCN l = l ;
|
||||
|
||||
monday_Weekday = mkN (R.thword "วัน" "จั" "นท" "ร์") ;
|
||||
tuesday_Weekday = mkN (R.thword "วัน" "อัง" "คาร") ;
|
||||
|
||||
@@ -11,12 +11,12 @@ lin
|
||||
airplane_N = mkN (thword "เครื่อง" "บิน") "ลำ" ;
|
||||
already_Adv = mkAdv (thword "เรียบ" "ร้อย") ;
|
||||
animal_N = animalN (thword "สัตว์") ;
|
||||
answer_V2S = mkV2S (regV "ตอบ") [] ; ---- prep
|
||||
answer_V2S = mkV2S (mkV "ตอบ") [] ; ---- prep
|
||||
apartment_N = mkN (thword "ห้อง" "เช่า")"ห้อง" ;
|
||||
apple_N = mkN (thbind "แอป" "เปิ้ล") "ลูก" ;
|
||||
art_N = mkN (thword "ศิล" "ปะ") ;
|
||||
ashes_N = mkN (thword "เถ้า") ;
|
||||
ask_V2Q = regV "ถาม" ** {c2 = []} ;
|
||||
ask_V2Q = mkV "ถาม" ** {c2 = []} ;
|
||||
at_Prep = mkPrep "ที่" ;
|
||||
baby_N = mkN (thword "เด็ก" "ทา" "รก") "คน" ;
|
||||
back_N = mkN (thword "หลัง") ;
|
||||
@@ -26,7 +26,7 @@ lin
|
||||
beautiful_A = mkA "สวย" ;
|
||||
become_VA = mkV (thword "กลาย" "เป็น") ; -- pen
|
||||
beer_N = mkN biar_s kew_s ;
|
||||
beg_V2V = regV "ขอ" ** {c2 = [] ; c3 = "ให้"} ; --- hay as prep of VP
|
||||
beg_V2V = mkV "ขอ" ** {c2 = [] ; c3 = "ให้"} ; --- hay as prep of VP
|
||||
belly_N = mkN (thword "พุง") ;
|
||||
big_A = mkA (thword "ใหญ่") ;
|
||||
bike_N = mkN (thword "จักร" "ยาน") "คัน" ;
|
||||
@@ -105,7 +105,7 @@ lin
|
||||
father_N2 = mkN2 (personN (thword "พ่อ")) poss ;
|
||||
fear_N = mkN (thword "ความ" "กลัว") ;
|
||||
fear_V2 = mkV2 "กลัว";
|
||||
fear_VS = mkVS (regV "กลัว") ;
|
||||
fear_VS = mkVS (mkV "กลัว") ;
|
||||
feather_N = mkN (thword "ขน" "นก") ;
|
||||
fight_V2 = mkV2 (thword "สู้") ;
|
||||
find_V2 = mkV2 "หา" ;
|
||||
@@ -151,7 +151,7 @@ lin
|
||||
hill_N = placeN (thword "เนิน" "เขา") ;
|
||||
hit_V2 = mkV2 (thword "ตี") ;
|
||||
hold_V2 = mkV2 (thword "รั้ง") ;
|
||||
hope_VS = mkVS (regV "หวัง") ;
|
||||
hope_VS = mkVS (mkV "หวัง") ;
|
||||
horn_N = mkN (thword "เขา") ;
|
||||
horse_N = mkN "ม้า" " ตัว" ;
|
||||
hot_A = mkA "ร้อน" ;
|
||||
@@ -168,8 +168,8 @@ lin
|
||||
king_N = mkN (thword "พระ" "รา" "ชา") (thword "พระ" "องด์") ;
|
||||
knee_N = mkN (thword "เข่า") ;
|
||||
know_V2 = mkV2 "รู้" ; ----?
|
||||
know_VQ = lin VQ (regV "รู้") ;
|
||||
know_VS = lin VS (regV "รู้") ;
|
||||
know_VQ = lin VQ (mkV "รู้") ;
|
||||
know_VS = lin VS (mkV "รู้") ;
|
||||
lake_N = mkN (thword "ทะ" "เล" "สาบ") ; ----?
|
||||
lamp_N = mkN (thword "โคม" "ไฟ") ; ----?
|
||||
language_N = mkN (thword "ภา" "ษา") ; ----?
|
||||
@@ -214,7 +214,7 @@ lin
|
||||
old_A = mkA (thword "แก่") ;
|
||||
open_V2 = mkV2 (mkV "เปิด") ;
|
||||
other_A = mkA "อื่น" ;
|
||||
paint_V2A = mkV2A (regV "ทา") [] "สี" ;
|
||||
paint_V2A = mkV2A (mkV "ทา") [] "สี" ;
|
||||
paper_N = mkN (thword "กระ" "ดาษ") ; ----?
|
||||
paris_PN = ss "ปารีส" ;
|
||||
peace_N = mkN (thword "สัน" "ติ" "ภาพ"); ----?
|
||||
@@ -255,7 +255,7 @@ lin
|
||||
run_V = mkV "วิ่ง" ;
|
||||
salt_N = mkN (thword "เกลือ") ;
|
||||
sand_N = mkN (thword "ทราย") ;
|
||||
say_VS = mkVS (regV "พูด") ;
|
||||
say_VS = mkVS (mkV "พูด") ;
|
||||
school_N = placeN (thword "โรง" "เรียน") ;
|
||||
---- science_N = mkN "science" ; ----?
|
||||
scratch_V2 = mkV2 (thword "เกา") ;
|
||||
@@ -351,7 +351,7 @@ lin
|
||||
wing_N = mkN (thword "ปิก") ;
|
||||
wipe_V2 = mkV2 (thword "เช็ด") ;
|
||||
woman_N = personN (thword "หญิง") ;
|
||||
wonder_VQ = mkVQ (regV (thword "ประ" "หลาด" "ใจ")) ; ----
|
||||
wonder_VQ = mkVQ (mkV (thword "ประ" "หลาด" "ใจ")) ; ----
|
||||
wood_N = mkN "ไม้" ; ----?
|
||||
worm_N = animalN (thword "หนอน") ;
|
||||
write_V2 = mkV2 "เขียน" ;
|
||||
|
||||
@@ -55,10 +55,10 @@ resource ParadigmsTur = open
|
||||
mkV2V : V -> V2V = \verb -> lin V2V (verb ** {c = noPrep}) ;
|
||||
mkV2S : V -> V2S = \verb -> lin V2S (verb ** {c = noPrep}) ;
|
||||
|
||||
mkVA : V -> VA = \verb -> verb ;
|
||||
mkVV : V -> VV = \verb -> verb ;
|
||||
mkVS : V -> VS = \verb -> verb ;
|
||||
mkVQ : V -> VQ = \verb -> verb ;
|
||||
mkVA : V -> VA = \verb -> lin VA verb ;
|
||||
mkVV : V -> VV = \verb -> lin VV verb ;
|
||||
mkVS : V -> VS = \verb -> lin VS verb ;
|
||||
mkVQ : V -> VQ = \verb -> lin VQ verb ;
|
||||
|
||||
-- make a regular verb
|
||||
-- supply infinitive, softened infinitive, future infinitive forms and
|
||||
|
||||
@@ -1244,13 +1244,13 @@ oper
|
||||
} ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : N -> N2 = \n -> n ** {c2 = noPrep} ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> n ** {c2 = p} ;
|
||||
mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> N3 = \n -> n ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> n ** {c2 = p1; c3 = p2} ;
|
||||
mkN3 : N -> N3 = \n -> lin N3 (n ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV = overload {
|
||||
@@ -1258,39 +1258,39 @@ oper
|
||||
mkV : Str -> Str -> V = reg2V -- Active;Imperf;Pres;P1;Sg imperative1
|
||||
} ;
|
||||
|
||||
mkVV : V -> VV = \v -> v ;
|
||||
mkVS : V -> VS = \v -> v ;
|
||||
mkVQ : V -> VQ = \v -> v ;
|
||||
mkVA : V -> VA = \v -> v ;
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
mkVS : V -> VS = \v -> lin VS v ;
|
||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||
mkVA : V -> VA = \v -> lin VA v ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> V2 = \v -> v ** {c2 = noPrep} ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> v ** {c2 = p} ;
|
||||
mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = noPrep}) ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
mkV2A : V -> V2A = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> lin V2A (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> lin V2S (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> lin V2Q (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2V = overload {
|
||||
mkV2V : V -> V2V = \v -> v ** {c2 = noPrep; c3 = noPrep} ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> v ** {c2 = p1; c3 = p2} ;
|
||||
mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> lin V2V (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
@@ -1299,8 +1299,8 @@ oper
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : A -> A2 = \a -> a ** {c2 = noPrep} ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> a ** {c2 = p} ;
|
||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
|
||||
|
||||
@@ -83,7 +83,7 @@ oper
|
||||
|
||||
-- compound Adjectives
|
||||
mkCompoundA : Str -> Str -> A ; -- e.g dra hwa
|
||||
mkCompoundA s1 s2 = compoundAdj s1 s2 ;
|
||||
mkCompoundA s1 s2 = lin A (compoundAdj s1 s2) ;
|
||||
|
||||
--2 Verbs
|
||||
|
||||
@@ -144,7 +144,7 @@ mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
|
||||
-- mkQuant : Pron -> Quant = \p -> {s = \\_,_,c => p.s!c ;a = p.a ; lock_Quant = <>};
|
||||
-- mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant = mkQuantifier;
|
||||
-- } ;
|
||||
mkIQuant : Str -> IQuant = \s -> makeIQuant s ;
|
||||
mkIQuant : Str -> IQuant = \s -> lin IQuant (makeIQuant s) ;
|
||||
|
||||
|
||||
--2 Conjunctions
|
||||
@@ -166,7 +166,7 @@ mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
|
||||
|
||||
-- mkV0 : V -> V0 ;
|
||||
mkVS : V -> VS; -- e.g drna
|
||||
mkVS v = v ;
|
||||
mkVS v = lin VS v ;
|
||||
-- mkV2S : V -> Prep -> V2S ;
|
||||
mkVV : V -> VV = -- e.g cahna
|
||||
\v -> lin VV (v ** {isAux = False});
|
||||
@@ -181,7 +181,7 @@ mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
|
||||
-- mkVA : V -> VA ;
|
||||
-- mkV2A : V -> Prep -> V2A ;
|
||||
mkVQ : V -> VQ ; -- e.g janna
|
||||
mkVQ v = v ;
|
||||
mkVQ v = lin VQ v ;
|
||||
-- mkV2Q : V -> Prep -> V2Q ;
|
||||
--
|
||||
-- mkAS : A -> AS ;
|
||||
|
||||
Reference in New Issue
Block a user