mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-08-26 14:16:25 -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 ;
|
||||
|
||||
Det = Determiner ;
|
||||
DAP = Determiner ** {
|
||||
adj : GenNum => Str
|
||||
} ;
|
||||
Predet = {s : Str} ;
|
||||
Quant = Quantifier ;
|
||||
|
||||
@@ -83,6 +86,10 @@ concrete CatMlt of Cat = CommonX - [Adv] ** open ResMlt, Prelude in {
|
||||
s : NumCase => Str ;
|
||||
n : NumForm ;
|
||||
} ;
|
||||
ACard = {
|
||||
s : NumCase => Str ;
|
||||
n : NumForm ;
|
||||
} ;
|
||||
|
||||
-- Numeral
|
||||
|
||||
@@ -127,10 +134,6 @@ concrete CatMlt of Cat = CommonX - [Adv] ** open ResMlt, Prelude in {
|
||||
|
||||
-- Overridden from CommonX
|
||||
|
||||
Adv = {
|
||||
s : Str ;
|
||||
joinsVerb : Bool ; -- Adv "for us" completely integrates into verb at VP level
|
||||
a : Agr ; -- when joinsVerb, this is important
|
||||
} ;
|
||||
Adv = Adverb ;
|
||||
|
||||
}
|
||||
|
||||
@@ -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 =
|
||||
GrammarMlt,
|
||||
LexiconMlt
|
||||
,ConstructionMlt
|
||||
,DocumentationMlt --# notpresent
|
||||
** {
|
||||
|
||||
flags
|
||||
|
||||
@@ -19,5 +19,17 @@ lin UseLN pn = {
|
||||
isPron = 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 ;
|
||||
} ;
|
||||
|
||||
-- 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
|
||||
DefArt = {
|
||||
s = \\_ => artDef ;
|
||||
|
||||
@@ -84,6 +84,25 @@ resource ParadigmsMlt = open
|
||||
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 : N -> Prep -> 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...
|
||||
|
||||
compoundN : overload {
|
||||
compoundN : N -> A -> N ; -- Noun modified by adjective: dar kbira
|
||||
compoundN : N -> Str -> N ; -- Noun modified by adverbial string
|
||||
} ;
|
||||
|
||||
mkRoot : overload {
|
||||
mkRoot : Root ; -- Null root
|
||||
mkRoot : Str -> Root ; -- From hyphenated string: "k-t-b"
|
||||
@@ -137,6 +161,8 @@ resource ParadigmsMlt = open
|
||||
|
||||
mkVS : V -> VS ; -- sentence-compl
|
||||
|
||||
compoundV : V -> Str -> V ; -- post-verbal particle/fixed object: mar lura
|
||||
|
||||
mkV3 : overload {
|
||||
mkV3 : V -> V3 ; -- ditransitive: give,_,_
|
||||
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)
|
||||
dirV2V : V -> V2V ; -- make (NP) (VP)
|
||||
|
||||
mkConj : overload {
|
||||
mkConj : 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 : 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 ; -- preverbal adverb: dejjem
|
||||
mkIAdv : Str -> IAdv ;
|
||||
mkCAdv : overload {
|
||||
mkCAdv : Str -> CAdv ;
|
||||
mkCAdv : Str -> Str -> CAdv ;
|
||||
} ;
|
||||
|
||||
mkAdA : Str -> AdA ; -- adverb modifying adjective: pjuttost
|
||||
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)
|
||||
@@ -334,12 +385,46 @@ resource ParadigmsMlt = open
|
||||
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
|
||||
regPN : Str -> Gender -> Number -> PN = \name,g,n -> lin PN {
|
||||
s = name ;
|
||||
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 : N -> Prep -> N2 = prepN2 ;
|
||||
mkN2 : N -> Str -> N2 = \n,s -> prepN2 n (mkPrep s);
|
||||
@@ -363,6 +448,23 @@ resource ParadigmsMlt = open
|
||||
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 -------------------------------------------------------- -}
|
||||
|
||||
mkPrep = overload {
|
||||
@@ -1278,6 +1380,26 @@ resource ParadigmsMlt = open
|
||||
|
||||
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 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 }) ;
|
||||
|
||||
dirV2V v = lin V2V (v ** { c2 = noCompl ; c3 = noCompl }) ;
|
||||
|
||||
{- Conjunction -------------------------------------------------------- -}
|
||||
|
||||
mkConj = overload {
|
||||
@@ -1311,6 +1435,24 @@ resource ParadigmsMlt = open
|
||||
mk2Conj : Str -> Str -> Conj = \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 ---------------------------------------------------------- -}
|
||||
|
||||
-- Overloaded function for building an adjective
|
||||
@@ -1404,8 +1546,17 @@ resource ParadigmsMlt = open
|
||||
a = agrP3 Sg Masc ; -- ignored when joinsVerb = False
|
||||
} ;
|
||||
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) ;
|
||||
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 ---------------------------------------------------- -}
|
||||
|
||||
|
||||
@@ -1312,4 +1312,11 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
||||
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
|
||||
-- (whom) he sees
|
||||
SlashVP np vp =
|
||||
|
||||
Reference in New Issue
Block a user