mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-09-03 01:46:59 -06:00
added missing functionality
This commit is contained in:
@@ -60,6 +60,9 @@ concrete CatMlt of Cat = CommonX - [Adv] ** open ResMlt, Prelude in {
|
|||||||
Pron = Pronoun ;
|
Pron = Pronoun ;
|
||||||
|
|
||||||
Det = Determiner ;
|
Det = Determiner ;
|
||||||
|
DAP = Determiner ** {
|
||||||
|
adj : GenNum => Str
|
||||||
|
} ;
|
||||||
Predet = {s : Str} ;
|
Predet = {s : Str} ;
|
||||||
Quant = Quantifier ;
|
Quant = Quantifier ;
|
||||||
|
|
||||||
@@ -83,6 +86,10 @@ concrete CatMlt of Cat = CommonX - [Adv] ** open ResMlt, Prelude in {
|
|||||||
s : NumCase => Str ;
|
s : NumCase => Str ;
|
||||||
n : NumForm ;
|
n : NumForm ;
|
||||||
} ;
|
} ;
|
||||||
|
ACard = {
|
||||||
|
s : NumCase => Str ;
|
||||||
|
n : NumForm ;
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Numeral
|
-- Numeral
|
||||||
|
|
||||||
@@ -127,10 +134,6 @@ concrete CatMlt of Cat = CommonX - [Adv] ** open ResMlt, Prelude in {
|
|||||||
|
|
||||||
-- Overridden from CommonX
|
-- Overridden from CommonX
|
||||||
|
|
||||||
Adv = {
|
Adv = Adverb ;
|
||||||
s : Str ;
|
|
||||||
joinsVerb : Bool ; -- Adv "for us" completely integrates into verb at VP level
|
|
||||||
a : Agr ; -- when joinsVerb, this is important
|
|
||||||
} ;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,214 @@
|
|||||||
|
concrete ConstructionMlt of Construction = CatMlt ** open
|
||||||
|
Prelude,
|
||||||
|
ResMlt,
|
||||||
|
GrammarMlt,
|
||||||
|
ParadigmsMlt,
|
||||||
|
(S = StructuralMlt) in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Timeunit = N ;
|
||||||
|
Hour = {s : Str} ;
|
||||||
|
Weekday = N ;
|
||||||
|
Monthday = NP ;
|
||||||
|
Month = N ;
|
||||||
|
Year = NP ;
|
||||||
|
Language = N ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
mkHour : Str -> Hour = \s -> lin Hour {s = s} ;
|
||||||
|
mkYearNP : Str -> NounPhrase = \s -> {
|
||||||
|
s = \\_ => s ;
|
||||||
|
a = agrP3 Sg Masc ;
|
||||||
|
isPron = False ;
|
||||||
|
isDefn = False
|
||||||
|
} ;
|
||||||
|
amountStr : Card -> CN -> Str = \card,unit ->
|
||||||
|
card.s ! NumAdj ++ unit.s ! numform2nounnum card.n ;
|
||||||
|
containerCN : N -> NP -> Noun = \container,np -> {
|
||||||
|
s = \\num => container.s ! num ++ prepNP prep_ta np ;
|
||||||
|
g = container.g ;
|
||||||
|
hasColl = container.hasColl ;
|
||||||
|
hasDual = container.hasDual ;
|
||||||
|
takesPron = container.takesPron
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
hungry_VP = UseComp (CompAP (PositA (mkA "bil-ġuħ"))) ;
|
||||||
|
thirsty_VP = UseComp (CompAP (PositA (mkA "bil-għatx"))) ;
|
||||||
|
tired_VP = UseComp (CompAP (PositA (mkA "għajjien"))) ;
|
||||||
|
scared_VP = UseComp (CompAP (PositA (mkA "imbeżża'"))) ;
|
||||||
|
ill_VP = UseComp (CompAP (PositA (mkA "marid"))) ;
|
||||||
|
ready_VP = UseComp (CompAP (PositA (mkA "lest"))) ;
|
||||||
|
|
||||||
|
has_age_VP card =
|
||||||
|
ComplSlash (SlashV2a S.have_V2) {
|
||||||
|
s = \\_ => card.s ! NumNom ++ "sena" ;
|
||||||
|
a = agrP3 Pl Fem ;
|
||||||
|
isPron = False ;
|
||||||
|
isDefn = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
weather_adjCl ap = PredVP (UsePron S.it_Pron) (UseComp (CompAP ap)) ;
|
||||||
|
is_right_VP = UseComp (CompAP (PositA (mkA "għandu raġun"))) ;
|
||||||
|
is_wrong_VP = UseComp (CompAP (PositA (mkA "żbaljat"))) ;
|
||||||
|
|
||||||
|
have_name_Cl x y =
|
||||||
|
mkClause ("l-isem" ++ prepNP prep_ta x) (agrP3 Sg Masc)
|
||||||
|
(insertObj (\\_ => y.s ! NPAcc) CopulaVP) ;
|
||||||
|
married_Cl x y =
|
||||||
|
PredVP x (UseComp (CompAP (ComplA2 (mkA2 (mkA "miżżewweġ") S.with_Prep) y))) ;
|
||||||
|
what_name_QCl x = {
|
||||||
|
s = \\_,_,_,_ => "x'inhu l-isem" ++ prepNP prep_ta x
|
||||||
|
} ;
|
||||||
|
how_old_QCl x = {
|
||||||
|
s = \\_,_,_,_ => "kemm għandu żmien" ++ x.s ! NPNom
|
||||||
|
} ;
|
||||||
|
how_far_QCl x = {
|
||||||
|
s = \\_,_,_,_ => "kemm qiegħed 'il bogħod" ++ x.s ! NPNom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
n_units_AP card unit a = {
|
||||||
|
s = \\gn => amountStr card unit ++ a.s ! APosit gn ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
n_units_of_NP card unit np = {
|
||||||
|
s = \\_ => amountStr card unit ++ prepNP prep_ta np ;
|
||||||
|
a = agrP3 (numform2num card.n) unit.g ;
|
||||||
|
isPron = False ;
|
||||||
|
isDefn = False
|
||||||
|
} ;
|
||||||
|
n_unit_CN card unit cn = {
|
||||||
|
s = \\num => amountStr card unit ++ cn.s ! num ;
|
||||||
|
g = cn.g ;
|
||||||
|
hasColl = cn.hasColl ;
|
||||||
|
hasDual = cn.hasDual ;
|
||||||
|
takesPron = cn.takesPron
|
||||||
|
} ;
|
||||||
|
|
||||||
|
bottle_of_CN np = containerCN (mkN "flixkun") np ;
|
||||||
|
cup_of_CN np = containerCN (mkN "kikkra") np ;
|
||||||
|
glass_of_CN np = containerCN (mkN "tazza") np ;
|
||||||
|
few_X_short_of_Y np x y = {
|
||||||
|
s = np.s ! NPNom ++ "jonqsu" ++ x.s ! Plural ++ "biex ikun" ++ y.s ! Singulative
|
||||||
|
} ;
|
||||||
|
|
||||||
|
timeunitAdv n unit = advSS (n.s ! NumNom ++ unit.s ! Singulative) ;
|
||||||
|
timeunitRange l u unit = advSS (l.s ! NumNom ++ "sa" ++ u.s ! NumNom ++ unit.s ! Plural) ;
|
||||||
|
|
||||||
|
oneHour = mkHour "1" ;
|
||||||
|
twoHour = mkHour "2" ;
|
||||||
|
threeHour = mkHour "3" ;
|
||||||
|
fourHour = mkHour "4" ;
|
||||||
|
fiveHour = mkHour "5" ;
|
||||||
|
sixHour = mkHour "6" ;
|
||||||
|
sevenHour = mkHour "7" ;
|
||||||
|
eightHour = mkHour "8" ;
|
||||||
|
nineHour = mkHour "9" ;
|
||||||
|
tenHour = mkHour "10" ;
|
||||||
|
elevenHour = mkHour "11" ;
|
||||||
|
twelveHour = mkHour "12" ;
|
||||||
|
thirteenHour = mkHour "13" ;
|
||||||
|
fourteenHour = mkHour "14" ;
|
||||||
|
fifteenHour = mkHour "15" ;
|
||||||
|
sixteenHour = mkHour "16" ;
|
||||||
|
seventeenHour = mkHour "17" ;
|
||||||
|
eighteenHour = mkHour "18" ;
|
||||||
|
nineteenHour = mkHour "19" ;
|
||||||
|
twentyHour = mkHour "20" ;
|
||||||
|
twentyOneHour = mkHour "21" ;
|
||||||
|
twentyTwoHour = mkHour "22" ;
|
||||||
|
twentyThreeHour = mkHour "23" ;
|
||||||
|
twentyFourHour = mkHour "24" ;
|
||||||
|
|
||||||
|
timeHour h = advSS ("fis-" ++ h.s) ;
|
||||||
|
timeHourMinute h m = advSS ("fis-" ++ h.s ++ m.s ! NumNom) ;
|
||||||
|
|
||||||
|
weekdayPunctualAdv w = advSS ("nhar" ++ w.s ! Singulative) ;
|
||||||
|
weekdayHabitualAdv w = advSS ("nhar ta'" ++ w.s ! Plural) ;
|
||||||
|
weekdayLastAdv w = advSS (w.s ! Singulative ++ "li għadda") ;
|
||||||
|
weekdayNextAdv w = advSS (w.s ! Singulative ++ "li ġej") ;
|
||||||
|
|
||||||
|
monthAdv m = advSS (makePreVowel "fi" "f'" ++ m.s ! Singulative) ;
|
||||||
|
yearAdv y = PrepNP S.in_Prep y ;
|
||||||
|
dayMonthAdv d m = advSS (d.s ! NPNom ++ m.s ! Singulative) ;
|
||||||
|
monthYearAdv m y = advSS (m.s ! Singulative ++ y.s ! NPNom) ;
|
||||||
|
dayMonthYearAdv d m y = advSS (d.s ! NPNom ++ m.s ! Singulative ++ y.s ! NPNom) ;
|
||||||
|
|
||||||
|
intYear i = lin NP (mkYearNP i.s) ;
|
||||||
|
intMonthday i = lin NP (mkYearNP i.s) ;
|
||||||
|
|
||||||
|
InLanguage l = PrepNP S.in_Prep (MassNP (UseN l)) ;
|
||||||
|
|
||||||
|
weekdayN w = w ;
|
||||||
|
monthN m = m ;
|
||||||
|
weekdayPN w = mkPN (w.s ! Singulative) ;
|
||||||
|
monthPN m = mkPN (m.s ! Singulative) ;
|
||||||
|
languageNP l = MassNP (UseN l) ;
|
||||||
|
languageCN l = UseN l ;
|
||||||
|
|
||||||
|
second_Timeunit = mkN "sekonda" ;
|
||||||
|
minute_Timeunit = mkN "minuta" ;
|
||||||
|
hour_Timeunit = mkN "siegħa" ;
|
||||||
|
day_Timeunit = mkN "jum" ;
|
||||||
|
week_Timeunit = mkN "ġimgħa" ;
|
||||||
|
month_Timeunit = mkN "xahar" ;
|
||||||
|
year_Timeunit = mkN "sena" ;
|
||||||
|
|
||||||
|
monday_Weekday = mkN "Tnejn" ;
|
||||||
|
tuesday_Weekday = mkN "Tlieta" ;
|
||||||
|
wednesday_Weekday = mkN "Erbgħa" ;
|
||||||
|
thursday_Weekday = mkN "Ħamis" ;
|
||||||
|
friday_Weekday = mkN "Ġimgħa" ;
|
||||||
|
saturday_Weekday = mkN "Sibt" ;
|
||||||
|
sunday_Weekday = mkN "Ħadd" ;
|
||||||
|
|
||||||
|
january_Month = mkN "Jannar" ;
|
||||||
|
february_Month = mkN "Frar" ;
|
||||||
|
march_Month = mkN "Marzu" ;
|
||||||
|
april_Month = mkN "April" ;
|
||||||
|
may_Month = mkN "Mejju" ;
|
||||||
|
june_Month = mkN "Ġunju" ;
|
||||||
|
july_Month = mkN "Lulju" ;
|
||||||
|
august_Month = mkN "Awwissu" ;
|
||||||
|
september_Month = mkN "Settembru" ;
|
||||||
|
october_Month = mkN "Ottubru" ;
|
||||||
|
november_Month = mkN "Novembru" ;
|
||||||
|
december_Month = mkN "Diċembru" ;
|
||||||
|
|
||||||
|
afrikaans_Language = mkN "Afrikans" ;
|
||||||
|
amharic_Language = mkN "Amħariku" ;
|
||||||
|
arabic_Language = mkN "Għarbi" ;
|
||||||
|
bulgarian_Language = mkN "Bulgaru" ;
|
||||||
|
catalan_Language = mkN "Katalan" ;
|
||||||
|
chinese_Language = mkN "Ċiniż" ;
|
||||||
|
danish_Language = mkN "Daniż" ;
|
||||||
|
dutch_Language = mkN "Olandiż" ;
|
||||||
|
english_Language = mkN "Ingliż" ;
|
||||||
|
estonian_Language = mkN "Estonjan" ;
|
||||||
|
finnish_Language = mkN "Finlandiż" ;
|
||||||
|
french_Language = mkN "Franċiż" ;
|
||||||
|
german_Language = mkN "Ġermaniż" ;
|
||||||
|
greek_Language = mkN "Grieg" ;
|
||||||
|
hebrew_Language = mkN "Ebrajk" ;
|
||||||
|
hindi_Language = mkN "Ħindi" ;
|
||||||
|
japanese_Language = mkN "Ġappuniż" ;
|
||||||
|
italian_Language = mkN "Taljan" ;
|
||||||
|
latin_Language = mkN "Latin" ;
|
||||||
|
latvian_Language = mkN "Latvjan" ;
|
||||||
|
maltese_Language = mkN "Malti" ;
|
||||||
|
nepali_Language = mkN "Nepali" ;
|
||||||
|
norwegian_Language = mkN "Norveġiż" ;
|
||||||
|
persian_Language = mkN "Persjan" ;
|
||||||
|
polish_Language = mkN "Pollakk" ;
|
||||||
|
punjabi_Language = mkN "Punġabi" ;
|
||||||
|
romanian_Language = mkN "Rumen" ;
|
||||||
|
russian_Language = mkN "Russu" ;
|
||||||
|
sindhi_Language = mkN "Sindi" ;
|
||||||
|
spanish_Language = mkN "Spanjol" ;
|
||||||
|
swahili_Language = mkN "Swaħili" ;
|
||||||
|
swedish_Language = mkN "Svediż" ;
|
||||||
|
thai_Language = mkN "Tajlandiż" ;
|
||||||
|
turkish_Language = mkN "Tork" ;
|
||||||
|
urdu_Language = mkN "Urdu" ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -9,6 +9,8 @@
|
|||||||
concrete LangMlt of Lang =
|
concrete LangMlt of Lang =
|
||||||
GrammarMlt,
|
GrammarMlt,
|
||||||
LexiconMlt
|
LexiconMlt
|
||||||
|
,ConstructionMlt
|
||||||
|
,DocumentationMlt --# notpresent
|
||||||
** {
|
** {
|
||||||
|
|
||||||
flags
|
flags
|
||||||
|
|||||||
@@ -19,5 +19,17 @@ lin UseLN pn = {
|
|||||||
isPron = False ;
|
isPron = False ;
|
||||||
isDefn = False ;
|
isDefn = False ;
|
||||||
} ;
|
} ;
|
||||||
|
lin PlainLN = UseLN ;
|
||||||
|
|
||||||
|
lin AdjLN ap pn = {
|
||||||
|
s = preOrPost ap.isPre (ap.s ! toGenNum pn.a) pn.s ;
|
||||||
|
a = pn.a ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin InLN pn = {
|
||||||
|
s = makePreVowel "fi" "f'" ++ pn.s ;
|
||||||
|
joinsVerb = False ;
|
||||||
|
a = pn.a ;
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,6 +107,18 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude, Maybe in {
|
|||||||
isDefn = True ;
|
isDefn = True ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- DAP -> AP -> DAP
|
||||||
|
-- the large one
|
||||||
|
AdjDAP dap ap = dap ** {
|
||||||
|
adj = \\gn => dap.adj ! gn ++ ap.s ! gn
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Det -> DAP
|
||||||
|
-- this one
|
||||||
|
DetDAP det = det ** {
|
||||||
|
adj = \\_ => []
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Quant
|
-- Quant
|
||||||
DefArt = {
|
DefArt = {
|
||||||
s = \\_ => artDef ;
|
s = \\_ => artDef ;
|
||||||
|
|||||||
@@ -84,6 +84,25 @@ resource ParadigmsMlt = open
|
|||||||
mkPN : Str -> Gender -> Number -> PN ;
|
mkPN : Str -> Gender -> Number -> PN ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkLN : overload {
|
||||||
|
mkLN : Str -> LN ;
|
||||||
|
mkLN : Str -> Number -> LN ;
|
||||||
|
mkLN : Str -> Gender -> LN ;
|
||||||
|
mkLN : Str -> Gender -> Number -> LN ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkGN : overload {
|
||||||
|
mkGN : Str -> GN ;
|
||||||
|
mkGN : Str -> Gender -> GN ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkSN : overload {
|
||||||
|
mkSN : Str -> SN ;
|
||||||
|
mkSN : Str -> Number -> SN ;
|
||||||
|
mkSN : Str -> Gender -> SN ;
|
||||||
|
mkSN : Str -> Gender -> Number -> SN ;
|
||||||
|
} ;
|
||||||
|
|
||||||
mkN2 : overload {
|
mkN2 : overload {
|
||||||
mkN2 : N -> Prep -> N2 ;
|
mkN2 : N -> Prep -> N2 ;
|
||||||
mkN2 : N -> Str -> N2 ;
|
mkN2 : N -> Str -> N2 ;
|
||||||
@@ -94,6 +113,11 @@ resource ParadigmsMlt = open
|
|||||||
|
|
||||||
possN : N -> N ; -- Mark a noun as taking possessive enclitic pronouns: missieri, missierek...
|
possN : N -> N ; -- Mark a noun as taking possessive enclitic pronouns: missieri, missierek...
|
||||||
|
|
||||||
|
compoundN : overload {
|
||||||
|
compoundN : N -> A -> N ; -- Noun modified by adjective: dar kbira
|
||||||
|
compoundN : N -> Str -> N ; -- Noun modified by adverbial string
|
||||||
|
} ;
|
||||||
|
|
||||||
mkRoot : overload {
|
mkRoot : overload {
|
||||||
mkRoot : Root ; -- Null root
|
mkRoot : Root ; -- Null root
|
||||||
mkRoot : Str -> Root ; -- From hyphenated string: "k-t-b"
|
mkRoot : Str -> Root ; -- From hyphenated string: "k-t-b"
|
||||||
@@ -137,6 +161,8 @@ resource ParadigmsMlt = open
|
|||||||
|
|
||||||
mkVS : V -> VS ; -- sentence-compl
|
mkVS : V -> VS ; -- sentence-compl
|
||||||
|
|
||||||
|
compoundV : V -> Str -> V ; -- post-verbal particle/fixed object: mar lura
|
||||||
|
|
||||||
mkV3 : overload {
|
mkV3 : overload {
|
||||||
mkV3 : V -> V3 ; -- ditransitive: give,_,_
|
mkV3 : V -> V3 ; -- ditransitive: give,_,_
|
||||||
mkV3 : V -> Prep -> Prep -> V3 ; -- two prepositions: speak, with, about
|
mkV3 : V -> Prep -> Prep -> V3 ; -- two prepositions: speak, with, about
|
||||||
@@ -144,11 +170,26 @@ resource ParadigmsMlt = open
|
|||||||
};
|
};
|
||||||
|
|
||||||
mkV2V : V -> Prep -> Prep -> V2V ; -- want (noPrep NP) (to VP)
|
mkV2V : V -> Prep -> Prep -> V2V ; -- want (noPrep NP) (to VP)
|
||||||
|
dirV2V : V -> V2V ; -- make (NP) (VP)
|
||||||
|
|
||||||
mkConj : overload {
|
mkConj : overload {
|
||||||
mkConj : Str -> Conj ; -- Conjunction: wieħed tnejn u tlieta
|
mkConj : Str -> Conj ; -- Conjunction: wieħed tnejn u tlieta
|
||||||
mkConj : Str -> Str -> Conj ; -- Conjunction: wieħed , tnejn u tlieta
|
mkConj : Str -> Str -> Conj ; -- Conjunction: wieħed , tnejn u tlieta
|
||||||
} ;
|
} ;
|
||||||
|
mkPConj : Str -> PConj ;
|
||||||
|
|
||||||
|
mkDet : overload {
|
||||||
|
mkDet : Str -> Det ;
|
||||||
|
mkDet : Str -> Number -> Det ;
|
||||||
|
} ;
|
||||||
|
mkPredet : Str -> Predet ;
|
||||||
|
|
||||||
|
mkSubj : Str -> Subj ;
|
||||||
|
mkIQuant : Str -> IQuant ;
|
||||||
|
mkIDet : overload {
|
||||||
|
mkIDet : Str -> IDet ;
|
||||||
|
mkIDet : Str -> Number -> IDet ;
|
||||||
|
} ;
|
||||||
|
|
||||||
mkA : overload {
|
mkA : overload {
|
||||||
mkA : Str -> A ; -- Regular adjective with predictable feminine and plural forms: bravu
|
mkA : Str -> A ; -- Regular adjective with predictable feminine and plural forms: bravu
|
||||||
@@ -168,10 +209,20 @@ resource ParadigmsMlt = open
|
|||||||
|
|
||||||
mkAdv : Str -> Adv ; -- post-verbal adverb: illum
|
mkAdv : Str -> Adv ; -- post-verbal adverb: illum
|
||||||
mkAdV : Str -> AdV ; -- preverbal adverb: dejjem
|
mkAdV : Str -> AdV ; -- preverbal adverb: dejjem
|
||||||
|
mkIAdv : Str -> IAdv ;
|
||||||
|
mkCAdv : overload {
|
||||||
|
mkCAdv : Str -> CAdv ;
|
||||||
|
mkCAdv : Str -> Str -> CAdv ;
|
||||||
|
} ;
|
||||||
|
|
||||||
mkAdA : Str -> AdA ; -- adverb modifying adjective: pjuttost
|
mkAdA : Str -> AdA ; -- adverb modifying adjective: pjuttost
|
||||||
mkAdN : Str -> AdN ; -- adverb modifying numeral: madwar
|
mkAdN : Str -> AdN ; -- adverb modifying numeral: madwar
|
||||||
|
|
||||||
|
mkCard : Str -> Card ;
|
||||||
|
mkACard : Str -> ACard ;
|
||||||
|
mkInterj : Str -> Interj ;
|
||||||
|
mkVoc : Str -> Voc ;
|
||||||
|
|
||||||
|
|
||||||
--.
|
--.
|
||||||
-- Everything below this is definitions (excluded from synopsis)
|
-- Everything below this is definitions (excluded from synopsis)
|
||||||
@@ -334,12 +385,46 @@ resource ParadigmsMlt = open
|
|||||||
mkPN : Str -> Gender -> Number -> PN = \s,g,n -> regPN s g n ;
|
mkPN : Str -> Gender -> Number -> PN = \s,g,n -> regPN s g n ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkLN = overload {
|
||||||
|
mkLN : Str -> LN = \s -> regLN s masculine singular ;
|
||||||
|
mkLN : Str -> Number -> LN = \s,n -> regLN s masculine n ;
|
||||||
|
mkLN : Str -> Gender -> LN = \s,g -> regLN s g singular ;
|
||||||
|
mkLN : Str -> Gender -> Number -> LN = \s,g,n -> regLN s g n ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkGN = overload {
|
||||||
|
mkGN : Str -> GN = \s -> regGN s masculine singular ;
|
||||||
|
mkGN : Str -> Gender -> GN = \s,g -> regGN s g singular ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkSN = overload {
|
||||||
|
mkSN : Str -> SN = \s -> regSN s masculine singular ;
|
||||||
|
mkSN : Str -> Number -> SN = \s,n -> regSN s masculine n ;
|
||||||
|
mkSN : Str -> Gender -> SN = \s,g -> regSN s g singular ;
|
||||||
|
mkSN : Str -> Gender -> Number -> SN = \s,g,n -> regSN s g n ;
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Proper noun
|
-- Proper noun
|
||||||
regPN : Str -> Gender -> Number -> PN = \name,g,n -> lin PN {
|
regPN : Str -> Gender -> Number -> PN = \name,g,n -> lin PN {
|
||||||
s = name ;
|
s = name ;
|
||||||
a = mkAgr n P3 g ;
|
a = mkAgr n P3 g ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
regLN : Str -> Gender -> Number -> LN = \name,g,n -> lin LN {
|
||||||
|
s = name ;
|
||||||
|
a = mkAgr n P3 g ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
regGN : Str -> Gender -> Number -> GN = \name,g,n -> lin GN {
|
||||||
|
s = name ;
|
||||||
|
a = mkAgr n P3 g ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
regSN : Str -> Gender -> Number -> SN = \name,g,n -> lin SN {
|
||||||
|
s = name ;
|
||||||
|
a = mkAgr n P3 g ;
|
||||||
|
} ;
|
||||||
|
|
||||||
mkN2 = overload {
|
mkN2 = overload {
|
||||||
mkN2 : N -> Prep -> N2 = prepN2 ;
|
mkN2 : N -> Prep -> N2 = prepN2 ;
|
||||||
mkN2 : N -> Str -> N2 = \n,s -> prepN2 n (mkPrep s);
|
mkN2 : N -> Str -> N2 = \n,s -> prepN2 n (mkPrep s);
|
||||||
@@ -363,6 +448,23 @@ resource ParadigmsMlt = open
|
|||||||
takesPron = True ;
|
takesPron = True ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
compoundN = overload {
|
||||||
|
compoundN : N -> A -> N = \n,a -> lin N {
|
||||||
|
s = \\num => n.s ! num ++ a.s ! APosit (mkGenNum num n.g) ;
|
||||||
|
g = n.g ;
|
||||||
|
hasColl = n.hasColl ;
|
||||||
|
hasDual = n.hasDual ;
|
||||||
|
takesPron = n.takesPron ;
|
||||||
|
} ;
|
||||||
|
compoundN : N -> Str -> N = \n,adv -> lin N {
|
||||||
|
s = \\num => n.s ! num ++ adv ;
|
||||||
|
g = n.g ;
|
||||||
|
hasColl = n.hasColl ;
|
||||||
|
hasDual = n.hasDual ;
|
||||||
|
takesPron = n.takesPron ;
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
{- Preposition -------------------------------------------------------- -}
|
{- Preposition -------------------------------------------------------- -}
|
||||||
|
|
||||||
mkPrep = overload {
|
mkPrep = overload {
|
||||||
@@ -1278,6 +1380,26 @@ resource ParadigmsMlt = open
|
|||||||
|
|
||||||
mkVS v = lin VS v ;
|
mkVS v = lin VS v ;
|
||||||
|
|
||||||
|
compoundV : V -> Str -> V = \v,s -> lin V {
|
||||||
|
s = \\vf => postVerbStems (v.s ! vf) s ;
|
||||||
|
i = v.i ;
|
||||||
|
presPart = postParticiple v.presPart s ;
|
||||||
|
pastPart = postParticiple v.pastPart s ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
postVerbStems : VerbStems -> Str -> VerbStems = \vs,s -> {
|
||||||
|
s1 = vs.s1 ++ s ;
|
||||||
|
s2 = vs.s2 ++ s ;
|
||||||
|
s3 = vs.s3 ++ s ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
postParticiple : Maybe Participle -> Str -> Maybe Participle = \part,s ->
|
||||||
|
case exists Participle part of {
|
||||||
|
True => let part' : Participle = fromJust Participle part in
|
||||||
|
Just Participle (\\gn => part' ! gn ++ s) ;
|
||||||
|
False => noParticiple
|
||||||
|
} ;
|
||||||
|
|
||||||
prepV2 : V -> Prep -> V2 ;
|
prepV2 : V -> Prep -> V2 ;
|
||||||
prepV2 v p = lin V2 ( v ** { c2 = hasCompl p } ) ;
|
prepV2 v p = lin V2 ( v ** { c2 = hasCompl p } ) ;
|
||||||
|
|
||||||
@@ -1301,6 +1423,8 @@ resource ParadigmsMlt = open
|
|||||||
|
|
||||||
mkV2V v p t = lin V2V (v ** { c2 = hasCompl p ; c3 = hasCompl t }) ;
|
mkV2V v p t = lin V2V (v ** { c2 = hasCompl p ; c3 = hasCompl t }) ;
|
||||||
|
|
||||||
|
dirV2V v = lin V2V (v ** { c2 = noCompl ; c3 = noCompl }) ;
|
||||||
|
|
||||||
{- Conjunction -------------------------------------------------------- -}
|
{- Conjunction -------------------------------------------------------- -}
|
||||||
|
|
||||||
mkConj = overload {
|
mkConj = overload {
|
||||||
@@ -1311,6 +1435,24 @@ resource ParadigmsMlt = open
|
|||||||
mk2Conj : Str -> Str -> Conj = \x,y ->
|
mk2Conj : Str -> Str -> Conj = \x,y ->
|
||||||
lin Conj (sd2 x y) ;
|
lin Conj (sd2 x y) ;
|
||||||
|
|
||||||
|
mkPConj : Str -> PConj = \s -> lin PConj {s = s} ;
|
||||||
|
|
||||||
|
mkDet = overload {
|
||||||
|
mkDet : Str -> Det = \s -> lin Det (mkDeterminer singular s) ;
|
||||||
|
mkDet : Str -> Number -> Det = \s,n -> lin Det (mkDeterminer n s) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkPredet : Str -> Predet = \s -> lin Predet {s = s} ;
|
||||||
|
|
||||||
|
mkSubj : Str -> Subj = \s -> lin Subj {s = s} ;
|
||||||
|
|
||||||
|
mkIQuant : Str -> IQuant = \s -> lin IQuant {s = s} ;
|
||||||
|
|
||||||
|
mkIDet = overload {
|
||||||
|
mkIDet : Str -> IDet = \s -> lin IDet {s = s ; n = singular} ;
|
||||||
|
mkIDet : Str -> Number -> IDet = \s,n -> lin IDet {s = s ; n = n} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
{- Adjective ---------------------------------------------------------- -}
|
{- Adjective ---------------------------------------------------------- -}
|
||||||
|
|
||||||
-- Overloaded function for building an adjective
|
-- Overloaded function for building an adjective
|
||||||
@@ -1404,8 +1546,17 @@ resource ParadigmsMlt = open
|
|||||||
a = agrP3 Sg Masc ; -- ignored when joinsVerb = False
|
a = agrP3 Sg Masc ; -- ignored when joinsVerb = False
|
||||||
} ;
|
} ;
|
||||||
mkAdV x = lin AdV (ss x) ;
|
mkAdV x = lin AdV (ss x) ;
|
||||||
|
mkIAdv x = lin IAdv {s = x} ;
|
||||||
|
mkCAdv = overload {
|
||||||
|
mkCAdv : Str -> CAdv = \s -> lin CAdv {s = s ; p = []} ;
|
||||||
|
mkCAdv : Str -> Str -> CAdv = \s,p -> lin CAdv {s = s ; p = p} ;
|
||||||
|
} ;
|
||||||
mkAdA x = lin AdA (ss x) ;
|
mkAdA x = lin AdA (ss x) ;
|
||||||
mkAdN x = lin AdN (ss x) ;
|
mkAdN x = lin AdN (ss x) ;
|
||||||
|
mkCard : Str -> Card = \s -> lin Card {s = \\_ => s ; n = Num20_99} ;
|
||||||
|
mkACard : Str -> ACard = \s -> lin ACard {s = \\_ => s ; n = Num20_99} ;
|
||||||
|
mkInterj x = lin Interj {s = x} ;
|
||||||
|
mkVoc x = lin Voc {s = x} ;
|
||||||
|
|
||||||
{- Quantifier, Ord ---------------------------------------------------- -}
|
{- Quantifier, Ord ---------------------------------------------------- -}
|
||||||
|
|
||||||
|
|||||||
@@ -1312,4 +1312,11 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
|||||||
ma+"z-" ++ BIND / strs { "z" }
|
ma+"z-" ++ BIND / strs { "z" }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
Adverb = {
|
||||||
|
s : Str ;
|
||||||
|
joinsVerb : Bool ; -- Adv "for us" completely integrates into verb at VP level
|
||||||
|
a : Agr ; -- when joinsVerb, this is important
|
||||||
|
} ;
|
||||||
|
advSS : Str -> Adverb = \s -> {s = s ; joinsVerb = False ; a = agrP3 Sg Masc} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,11 @@ concrete SentenceMlt of Sentence = CatMlt ** open
|
|||||||
} ;
|
} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- Adv -> Imp -> Imp
|
||||||
|
AdvImp adv imp = {
|
||||||
|
s = \\pol,n => adv.s ++ imp.s ! pol ! n
|
||||||
|
} ;
|
||||||
|
|
||||||
-- NP -> VPSlash -> ClSlash
|
-- NP -> VPSlash -> ClSlash
|
||||||
-- (whom) he sees
|
-- (whom) he sees
|
||||||
SlashVP np vp =
|
SlashVP np vp =
|
||||||
|
|||||||
Reference in New Issue
Block a user