From 6bf2555a4a5f3b3f49f16291ce232343ec8c8110 Mon Sep 17 00:00:00 2001 From: krangelov Date: Fri, 23 Apr 2021 11:19:54 +0200 Subject: [PATCH] helper functions to make it possible to import Polish morphology --- src/polish/AdjectiveMorphoPol.gf | 21 ++++++++++++++++++--- src/polish/NounMorphoPol.gf | 15 +++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/polish/AdjectiveMorphoPol.gf b/src/polish/AdjectiveMorphoPol.gf index 99a27e5c..0c389f41 100644 --- a/src/polish/AdjectiveMorphoPol.gf +++ b/src/polish/AdjectiveMorphoPol.gf @@ -39,7 +39,6 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { -- L |4 4 4 4 7 10 10 -- (V = N) - -- oper adj11forms : Type = { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 : Str }; -- -- oper Adj : Type = { @@ -113,10 +112,26 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { s1=stem + "y"; s2=stem + "ego"; s3=stem + "emu"; s4=stem + "ym"; s5=stem + "e"; s6=stem + "a"; s7=stem + "ej"; s8=stem + "ą"; s9=form9; s10=stem + "ych"; s11=stem + "ymi" - }; + }; oper model_comp : Str -> adj11forms = \comp -> model4 comp ((Predef.tk 2 comp)+"i"); - + + oper mkAForms : adj11forms -> Str -> Adj = + \pos, comp -> { + pos = pos; + comp = model_comp comp; + super = model_comp ("naj"+comp) ; + advpos = nonExist; + advcomp = nonExist; + advsuper = nonExist; + }; + + oper mkA = overload { + mkA : adj11forms -> Adj = + \pos -> mkAForms pos ("bardziej" ++ pos.s1) ; + mkA : adj11forms -> Str -> Adj = mkAForms ; + } ; + oper guess_model : Str -> adj11forms = \form -> case form of { x + ("pi"|"bi"|"fi"|"wi"|"mi"|"si"|"zi"|"ci"|"dzi"|"ni") => model1 form; diff --git a/src/polish/NounMorphoPol.gf b/src/polish/NounMorphoPol.gf index c780d457..2fcb3dca 100644 --- a/src/polish/NounMorphoPol.gf +++ b/src/polish/NounMorphoPol.gf @@ -22,6 +22,21 @@ resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { oper mkN: (SubstForm => Str) -> Gender -> CommNoun; oper mkN tab gen = { s = tab; g = gen }; + oper nounPN : (SubstForm => Str) -> GenNum -> NounPhrase; + oper nounPN forms gn = + { nom = forms!SF Sg Nom; + voc = forms!SF Sg VocP; + dep = table { + GenPrep|GenNoPrep=>forms!SF Sg Gen; + AccPrep|AccNoPrep=>forms!SF Sg Acc; + DatPrep|DatNoPrep=>forms!SF Sg Dat; + InstrC =>forms!SF Sg Instr; + LocPrep =>forms!SF Sg Loc + }; + gn = gn ; + p = P3 + } ; + oper mkNTable0000: Str -> SubstForm => Str; --% oper mkNTable0000 lexem = let x = lexem in