diff --git a/src/arabic/ConstructionAra.gf b/src/arabic/ConstructionAra.gf index 0542f3e0d..bd762048f 100644 --- a/src/arabic/ConstructionAra.gf +++ b/src/arabic/ConstructionAra.gf @@ -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) ; diff --git a/src/arabic/LexiconAra.gf b/src/arabic/LexiconAra.gf index d10f07ec6..05bbf1151 100644 --- a/src/arabic/LexiconAra.gf +++ b/src/arabic/LexiconAra.gf @@ -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 ; diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 1c6540e3d..b5cf1340a 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -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 diff --git a/src/arabic/StructuralAra.gf b/src/arabic/StructuralAra.gf index 744af2289..83652369c 100644 --- a/src/arabic/StructuralAra.gf +++ b/src/arabic/StructuralAra.gf @@ -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 is on X" + have_V2 = mkV2 (lin V ladaa_V) (casePrep nom) ; -- "X has Y" literally "Y is on X" --have_V2 = dirV2 (regV "يَملِك") ; -- "X owns/possesses Y" lin language_title_Utt = {s = \\_ => "العربية"} ; diff --git a/src/armenian/ParadigmsHye.gf b/src/armenian/ParadigmsHye.gf index 02210befe..4687407e8 100644 --- a/src/armenian/ParadigmsHye.gf +++ b/src/armenian/ParadigmsHye.gf @@ -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} ; diff --git a/src/basque/ConjunctionEus.gf b/src/basque/ConjunctionEus.gf index bd3c2c796..658b412e4 100644 --- a/src/basque/ConjunctionEus.gf +++ b/src/basque/ConjunctionEus.gf @@ -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 } ; -} \ No newline at end of file +} diff --git a/src/basque/ParadigmsEus.gf b/src/basque/ParadigmsEus.gf index c21461073..5836fee14 100644 --- a/src/basque/ParadigmsEus.gf +++ b/src/basque/ParadigmsEus.gf @@ -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 diff --git a/src/belarusian/ParadigmsBel.gf b/src/belarusian/ParadigmsBel.gf index 9b99d0a0e..470cc4861 100644 --- a/src/belarusian/ParadigmsBel.gf +++ b/src/belarusian/ParadigmsBel.gf @@ -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} ; diff --git a/src/bulgarian/LangBul.gf b/src/bulgarian/LangBul.gf index 2ddb86329..5af8a89ef 100644 --- a/src/bulgarian/LangBul.gf +++ b/src/bulgarian/LangBul.gf @@ -1,4 +1,4 @@ ---# -path=.:../abstract:../common:../api +--# -path=.:../abstract:../common:../api:../prelude concrete LangBul of Lang = GrammarBul, diff --git a/src/bulgarian/MorphoFunsBul.gf b/src/bulgarian/MorphoFunsBul.gf index d199b3c1f..4f5bcdd87 100644 --- a/src/bulgarian/MorphoFunsBul.gf +++ b/src/bulgarian/MorphoFunsBul.gf @@ -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 ; diff --git a/src/chinese/ParadigmsChi.gf b/src/chinese/ParadigmsChi.gf index 881a14972..a52528e5f 100644 --- a/src/chinese/ParadigmsChi.gf +++ b/src/chinese/ParadigmsChi.gf @@ -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 = []} ; diff --git a/src/english/ExtendEng.gf b/src/english/ExtendEng.gf index bb830e0d1..d8252c368 100644 --- a/src/english/ExtendEng.gf +++ b/src/english/ExtendEng.gf @@ -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}); diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 3700bb36e..08712dc2f 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -353,7 +353,7 @@ concrete ExtendEst of Extend = -- : VPSlash -> AP ; -- täna leitud PastPartAP vp = { - s = \\_,_ => vp2adv ; + s = \\_,_ => vp2adv (lin VP vp) ; 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 ; + ++ vp2adv (lin VP vp) ; 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 ; diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 0e8723f40..07cdadf8f 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -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} ; diff --git a/src/faroese/ParadigmsFao.gf b/src/faroese/ParadigmsFao.gf index 7c6dc2077..90cb23640 100644 --- a/src/faroese/ParadigmsFao.gf +++ b/src/faroese/ParadigmsFao.gf @@ -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} ; diff --git a/src/finnish/DocumentationFinFunctor.gf b/src/finnish/DocumentationFinFunctor.gf index b81fd9a39..3f09fbd18 100644 --- a/src/finnish/DocumentationFinFunctor.gf +++ b/src/finnish/DocumentationFinFunctor.gf @@ -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 ( diff --git a/src/finnish/ExtendFin.gf b/src/finnish/ExtendFin.gf index 2c3b19158..c64d21b94 100644 --- a/src/finnish/ExtendFin.gf +++ b/src/finnish/ExtendFin.gf @@ -258,7 +258,7 @@ lin PresPartAP vp = { hasPrefix = False } ; lin PastPartAP vps = { - s = \\_,nf => preCompVP (PastPartAct (AN nf)) ; + s = \\_,nf => preCompVP (lin VP vps) (PastPartAct (AN nf)) ; p = vps.c2.s.p1 ; hasPrefix = False } ; diff --git a/src/finnish/ParadigmsFin.gf b/src/finnish/ParadigmsFin.gf index c44570a61..d44d9de25 100644 --- a/src/finnish/ParadigmsFin.gf +++ b/src/finnish/ParadigmsFin.gf @@ -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 diff --git a/src/gaelic/ParadigmsGla.gf b/src/gaelic/ParadigmsGla.gf index f5210104b..e065eabba 100644 --- a/src/gaelic/ParadigmsGla.gf +++ b/src/gaelic/ParadigmsGla.gf @@ -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} ; diff --git a/src/german/ExtraGer.gf b/src/german/ExtraGer.gf index 3aa143542..8de75a860 100644 --- a/src/german/ExtraGer.gf +++ b/src/german/ExtraGer.gf @@ -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} ; diff --git a/src/hindi/ParadigmsHin.gf b/src/hindi/ParadigmsHin.gf index 2999e5ff4..5d4e664c2 100644 --- a/src/hindi/ParadigmsHin.gf +++ b/src/hindi/ParadigmsHin.gf @@ -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 ; diff --git a/src/hungarian/ParadigmsHun.gf b/src/hungarian/ParadigmsHun.gf index 344436c18..5dfb718a0 100644 --- a/src/hungarian/ParadigmsHun.gf +++ b/src/hungarian/ParadigmsHun.gf @@ -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 { diff --git a/src/icelandic/ParadigmsIce.gf b/src/icelandic/ParadigmsIce.gf index c40f4846d..d888506d0 100644 --- a/src/icelandic/ParadigmsIce.gf +++ b/src/icelandic/ParadigmsIce.gf @@ -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} ; diff --git a/src/korean/ConjunctionKor.gf b/src/korean/ConjunctionKor.gf index 7e69601e2..9102d5326 100644 --- a/src/korean/ConjunctionKor.gf +++ b/src/korean/ConjunctionKor.gf @@ -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 diff --git a/src/korean/LexiconKor.gf b/src/korean/LexiconKor.gf index e2783bc58..cc7e92d41 100644 --- a/src/korean/LexiconKor.gf +++ b/src/korean/LexiconKor.gf @@ -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 "" ; diff --git a/src/korean/ParadigmsKor.gf b/src/korean/ParadigmsKor.gf index e3ffd3340..b9109a6b7 100644 --- a/src/korean/ParadigmsKor.gf +++ b/src/korean/ParadigmsKor.gf @@ -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 { diff --git a/src/latin/ParadigmsLat.gf b/src/latin/ParadigmsLat.gf index 78f4ee202..42620669b 100644 --- a/src/latin/ParadigmsLat.gf +++ b/src/latin/ParadigmsLat.gf @@ -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 diff --git a/src/latvian/SentenceLav.gf b/src/latvian/SentenceLav.gf index 226c8d1a9..ebc530714 100644 --- a/src/latvian/SentenceLav.gf +++ b/src/latvian/SentenceLav.gf @@ -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 ; diff --git a/src/malay/ParadigmsMay.gf b/src/malay/ParadigmsMay.gf index 18cb71f78..68ca7f79e 100644 --- a/src/malay/ParadigmsMay.gf +++ b/src/malay/ParadigmsMay.gf @@ -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"} ; -- } ; diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 9fd534333..1fdf7682a 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -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 of { => prep.obj ! p ++ np.empty ; diff --git a/src/nepali/QuestionNep.gf b/src/nepali/QuestionNep.gf index efd629161..a74e896fb 100644 --- a/src/nepali/QuestionNep.gf +++ b/src/nepali/QuestionNep.gf @@ -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 = diff --git a/src/persian/IdiomPes.gf b/src/persian/IdiomPes.gf index 07bdb0237..6057acd96 100644 --- a/src/persian/IdiomPes.gf +++ b/src/persian/IdiomPes.gf @@ -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 ; } diff --git a/src/persian/ParadigmsPes.gf b/src/persian/ParadigmsPes.gf index ae381f653..f8073156b 100644 --- a/src/persian/ParadigmsPes.gf +++ b/src/persian/ParadigmsPes.gf @@ -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); } ; } diff --git a/src/polish/AdjectiveMorphoPol.gf b/src/polish/AdjectiveMorphoPol.gf index cbee1e24c..4cf89b94b 100644 --- a/src/polish/AdjectiveMorphoPol.gf +++ b/src/polish/AdjectiveMorphoPol.gf @@ -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}) ; } diff --git a/src/polish/MorphoPol.gf b/src/polish/MorphoPol.gf index 776de2ac9..447ebacc2 100644 --- a/src/polish/MorphoPol.gf +++ b/src/polish/MorphoPol.gf @@ -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 diff --git a/src/polish/VerbMorphoPol.gf b/src/polish/VerbMorphoPol.gf index 9667aa915..ba8b9e4a5 100644 --- a/src/polish/VerbMorphoPol.gf +++ b/src/polish/VerbMorphoPol.gf @@ -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 => "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 => diff --git a/src/portuguese/ConstructionPor.gf b/src/portuguese/ConstructionPor.gf index ffd73900d..7f916d605 100644 --- a/src/portuguese/ConstructionPor.gf +++ b/src/portuguese/ConstructionPor.gf @@ -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 CN cn)))) (lin A a) ; diff --git a/src/punjabi/LexiconPnb.gf b/src/punjabi/LexiconPnb.gf index f256b82a6..6fe73959b 100644 --- a/src/punjabi/LexiconPnb.gf +++ b/src/punjabi/LexiconPnb.gf @@ -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 "باریك" ; diff --git a/src/punjabi/ParadigmsPnb.gf b/src/punjabi/ParadigmsPnb.gf index a0bc81c15..c478fe56c 100644 --- a/src/punjabi/ParadigmsPnb.gf +++ b/src/punjabi/ParadigmsPnb.gf @@ -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 diff --git a/src/romance/ExtendRomanceFunctor.gf b/src/romance/ExtendRomanceFunctor.gf index bc5ddaa6e..62dede71e 100644 --- a/src/romance/ExtendRomanceFunctor.gf +++ b/src/romance/ExtendRomanceFunctor.gf @@ -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 ; diff --git a/src/rukiga/ParadigmsCgg.gf b/src/rukiga/ParadigmsCgg.gf index 278b01ec1..fdc29e853 100644 --- a/src/rukiga/ParadigmsCgg.gf +++ b/src/rukiga/ParadigmsCgg.gf @@ -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}); diff --git a/src/russian/DocumentationRusFunctor.gf b/src/russian/DocumentationRusFunctor.gf index 9e451e3be..d2b1bdaed 100644 --- a/src/russian/DocumentationRusFunctor.gf +++ b/src/russian/DocumentationRusFunctor.gf @@ -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 diff --git a/src/russian/ParadigmsRus.gf b/src/russian/ParadigmsRus.gf index ecab4331a..fa1efe6b7 100644 --- a/src/russian/ParadigmsRus.gf +++ b/src/russian/ParadigmsRus.gf @@ -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 diff --git a/src/sindhi/LexiconSnd.gf b/src/sindhi/LexiconSnd.gf index 5deb86ac2..de0de5793 100644 --- a/src/sindhi/LexiconSnd.gf +++ b/src/sindhi/LexiconSnd.gf @@ -1,7 +1,6 @@ --# -path=.:prelude:alltenses concrete LexiconSnd of Lexicon = CatSnd ** ---open ResSnd, Prelude in { open ParadigmsSnd,MorphoSnd, Prelude in { flags diff --git a/src/sindhi/MorphoSnd.gf b/src/sindhi/MorphoSnd.gf index 2efe97d62..43b43aa68 100644 --- a/src/sindhi/MorphoSnd.gf +++ b/src/sindhi/MorphoSnd.gf @@ -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 ; diff --git a/src/sindhi/ParadigmsSnd.gf b/src/sindhi/ParadigmsSnd.gf index 7c8b76317..3506d2e07 100644 --- a/src/sindhi/ParadigmsSnd.gf +++ b/src/sindhi/ParadigmsSnd.gf @@ -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 diff --git a/src/sindhi/src/MorphoSnd.gf b/src/sindhi/src/MorphoSnd.gf index b6a028920..4f0b5f79d 100644 --- a/src/sindhi/src/MorphoSnd.gf +++ b/src/sindhi/src/MorphoSnd.gf @@ -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 ; diff --git a/src/slovenian/ParadigmsSlv.gf b/src/slovenian/ParadigmsSlv.gf index 7cb1a45a3..78a584afa 100644 --- a/src/slovenian/ParadigmsSlv.gf +++ b/src/slovenian/ParadigmsSlv.gf @@ -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 { diff --git a/src/somali/NounSom.gf b/src/somali/NounSom.gf index 5432a8b49..925117fff 100644 --- a/src/somali/NounSom.gf +++ b/src/somali/NounSom.gf @@ -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) diff --git a/src/somali/ParadigmsSom.gf b/src/somali/ParadigmsSom.gf index deed7226a..cec47c5b8 100644 --- a/src/somali/ParadigmsSom.gf +++ b/src/somali/ParadigmsSom.gf @@ -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 { diff --git a/src/somali/StructuralSom.gf b/src/somali/StructuralSom.gf index 5ce165290..33861378b 100644 --- a/src/somali/StructuralSom.gf +++ b/src/somali/StructuralSom.gf @@ -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}) ; } diff --git a/src/spanish/MorphoSpa.gf b/src/spanish/MorphoSpa.gf index aea78c105..9c5bcd7bd 100644 --- a/src/spanish/MorphoSpa.gf +++ b/src/spanish/MorphoSpa.gf @@ -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 diff --git a/src/swahili/ParadigmsSwa.gf b/src/swahili/ParadigmsSwa.gf index 8584e99ca..5e4853818 100644 --- a/src/swahili/ParadigmsSwa.gf +++ b/src/swahili/ParadigmsSwa.gf @@ -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) ; diff --git a/src/thai/ConstructionTha.gf b/src/thai/ConstructionTha.gf index 15289d4da..b36edc045 100644 --- a/src/thai/ConstructionTha.gf +++ b/src/thai/ConstructionTha.gf @@ -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 "วัน" "อัง" "คาร") ; diff --git a/src/thai/LexiconTha.gf b/src/thai/LexiconTha.gf index bef525b23..acfc30b3d 100644 --- a/src/thai/LexiconTha.gf +++ b/src/thai/LexiconTha.gf @@ -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 "เขียน" ; diff --git a/src/turkish/ParadigmsTur.gf b/src/turkish/ParadigmsTur.gf index bca8d9d6d..67d6821e4 100644 --- a/src/turkish/ParadigmsTur.gf +++ b/src/turkish/ParadigmsTur.gf @@ -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 diff --git a/src/ukrainian/ParadigmsUkr.gf b/src/ukrainian/ParadigmsUkr.gf index 3c075b1b5..309d82a0b 100644 --- a/src/ukrainian/ParadigmsUkr.gf +++ b/src/ukrainian/ParadigmsUkr.gf @@ -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} ; diff --git a/src/urdu/ParadigmsUrd.gf b/src/urdu/ParadigmsUrd.gf index 79c653f5d..54d1aaa8e 100644 --- a/src/urdu/ParadigmsUrd.gf +++ b/src/urdu/ParadigmsUrd.gf @@ -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 ;