forked from GitHub/gf-rgl
(Romance) Attributive and predicative adjective forms (#93)
* (Fre,Por) accomodate changes to Romance adjectives - to support Spanish buen/bueno, gran/grande and catalan bo/bon * (Cat) Update paradigms to allow predicative and attributive forms of adj * (Spa) fix argument order in Spanish adjective paradigms * (Eng) fix missing paradigm invarA * (Spa) Flip order of args in mkAdj constructor
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
incomplete concrete DocumentationCatFunctor of Documentation = CatCat ** open
|
||||
incomplete concrete DocumentationCatFunctor of Documentation = CatCat ** open
|
||||
Terminology, -- the interface to be instantiated
|
||||
ResCat,
|
||||
CommonRomance,
|
||||
@@ -19,22 +19,22 @@ lincat
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
|
||||
{-
|
||||
-} --# notpresent
|
||||
|
||||
oper
|
||||
heading : N -> Str = \n -> (nounHeading n).s ;
|
||||
|
||||
|
||||
lin
|
||||
InflectionN, InflectionN3, InflectionN3 = \noun -> {
|
||||
t = "n" ;
|
||||
s1 = heading1 (heading noun_Category ++
|
||||
s1 = heading1 (heading noun_Category ++
|
||||
case noun.g of {
|
||||
Masc => "("+heading masculine_Parameter+")" ;
|
||||
Masc => "("+heading masculine_Parameter+")" ;
|
||||
Fem => "("+heading feminine_Parameter+")"
|
||||
}) ;
|
||||
s2 = frameTable (
|
||||
s2 = frameTable (
|
||||
tr (th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||
tr (td (noun.s ! Sg) ++ td (noun.s ! Pl))
|
||||
)
|
||||
@@ -45,8 +45,8 @@ lin
|
||||
s1 = heading1 (nounHeading adjective_Category).s ;
|
||||
s2 = frameTable (
|
||||
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (AF Masc Sg)) ++ td (adj.s ! Posit ! (AF Masc Pl))) ++
|
||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (AF Fem Sg)) ++ td (adj.s ! Posit ! (AF Fem Pl)))
|
||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Masc Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++
|
||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Fem Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl)))
|
||||
)
|
||||
} ;
|
||||
|
||||
@@ -141,23 +141,23 @@ lin
|
||||
MkDocument d i e = ss (i.s1 ++ d.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
|
||||
MkTag i = ss i.t ;
|
||||
|
||||
oper
|
||||
oper
|
||||
verbExample : CatCat.Cl -> Str = \cl ->
|
||||
(S.mkUtt cl).s
|
||||
(S.mkUtt cl).s
|
||||
++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent
|
||||
;
|
||||
|
||||
inflVerb : Verb -> Str = \verb ->
|
||||
let
|
||||
inflVerb : Verb -> Str = \verb ->
|
||||
let
|
||||
vfin : CommonRomance.VF -> Str = \f ->
|
||||
verb.s ! f ;
|
||||
verb.s ! f ;
|
||||
|
||||
ttable : TMood -> Str = \tense ->
|
||||
frameTable (
|
||||
tr (th "" ++
|
||||
th (heading singular_Parameter) ++
|
||||
th (heading plural_Parameter)) ++
|
||||
tr (th "1.p" ++
|
||||
tr (th "" ++
|
||||
th (heading singular_Parameter) ++
|
||||
th (heading plural_Parameter)) ++
|
||||
tr (th "1.p" ++
|
||||
td (vfin (VFin tense Sg P1)) ++
|
||||
td (vfin (VFin tense Pl P1))) ++
|
||||
tr (th "2.p" ++
|
||||
@@ -170,11 +170,11 @@ oper
|
||||
|
||||
ttable2 : (Mood -> TMood) -> Str = \f ->
|
||||
frameTable (
|
||||
tr (intagAttr "th" "colspan=2" "" ++
|
||||
th (heading indicative_Parameter) ++
|
||||
th (heading conjunctive_Parameter)) ++
|
||||
tr (intagAttr "th" "colspan=2" "" ++
|
||||
th (heading indicative_Parameter) ++
|
||||
th (heading conjunctive_Parameter)) ++
|
||||
tr (intagAttr "th" "rowspan=3" (heading singular_Parameter) ++
|
||||
th "1.p" ++
|
||||
th "1.p" ++
|
||||
td (vfin (VFin (f Indic) Sg P1)) ++
|
||||
td (vfin (VFin (f Conjunct) Sg P1))) ++
|
||||
tr (th "2.p" ++
|
||||
@@ -182,7 +182,7 @@ oper
|
||||
td (vfin (VFin (f Conjunct) Sg P2))) ++
|
||||
tr (th "3.p" ++
|
||||
td (vfin (VFin (f Indic) Sg P3)) ++
|
||||
td (vfin (VFin (f Conjunct) Sg P3))) ++
|
||||
td (vfin (VFin (f Conjunct) Sg P3))) ++
|
||||
tr (intagAttr "th" "rowspan=3" (heading plural_Parameter) ++
|
||||
th "1.p" ++
|
||||
td (vfin (VFin (f Indic) Pl P1)) ++
|
||||
@@ -190,7 +190,7 @@ oper
|
||||
tr (th "2.p" ++
|
||||
td (vfin (VFin (f Indic) Pl P2)) ++
|
||||
td (vfin (VFin (f Conjunct) Pl P2))) ++
|
||||
tr (th "3.p" ++
|
||||
tr (th "3.p" ++
|
||||
td (vfin (VFin (f Indic) Pl P3)) ++
|
||||
td (vfin (VFin (f Conjunct) Pl P3)))
|
||||
) ;
|
||||
@@ -209,17 +209,17 @@ oper
|
||||
paragraph (vfin (VInfin False)) ++
|
||||
heading2 (heading imperative_Parameter) ++
|
||||
frameTable (
|
||||
tr (th "sg.2.p" ++ td (vfin (VImper SgP2))) ++
|
||||
tr (th "pl.1.p" ++ td (vfin (VImper PlP1))) ++
|
||||
tr (th "sg.2.p" ++ td (vfin (VImper SgP2))) ++
|
||||
tr (th "pl.1.p" ++ td (vfin (VImper PlP1))) ++
|
||||
tr (th "pl.2.p" ++ td (vfin (VImper PlP2)))
|
||||
) ++
|
||||
heading2 (heading participle_Parameter) ++
|
||||
frameTable (
|
||||
tr (th (heading past_Parameter) ++ td (vfin (VPart Masc Sg))) ++
|
||||
tr (th (heading present_Parameter) ++ td (vfin VGer))
|
||||
) ;
|
||||
) ;
|
||||
|
||||
{- --# notpresent
|
||||
-}
|
||||
-}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||
|
||||
concrete LexiconCat of Lexicon = CatCat ** open
|
||||
concrete LexiconCat of Lexicon = CatCat ** open
|
||||
(M=MorphoCat), ParadigmsCat, BeschCat in {
|
||||
|
||||
flags
|
||||
flags
|
||||
coding=utf8 ;
|
||||
optimize=values ;
|
||||
|
||||
oper
|
||||
regFN : Str -> N = \s -> femN (regN s) ;
|
||||
regMN : Str -> N = \s -> regN s ;
|
||||
regMN : Str -> N = \s -> regN s ;
|
||||
irregMN : Str -> Str -> N = \pa,pans -> M.mkNounIrreg pa pans masculine ** {lock_N=<>} ;
|
||||
saberV : V = verbV (saber_99 "saber") ;
|
||||
|
||||
lin
|
||||
airplane_N = regMN "avió" ;
|
||||
airplane_N = regMN "avió" ;
|
||||
|
||||
answer_V2S = mkV2S (verbV (compondre_26 "respondre")) dative ;
|
||||
apartment_N = regMN "pis" ;
|
||||
apple_N = regFN "poma" ;
|
||||
art_N = regMN "art" ;
|
||||
art_N = regMN "art" ;
|
||||
ask_V2Q = mkV2Q (mkV "preguntar") dative ;
|
||||
baby_N = regMN "nadó" ;
|
||||
bad_A = mkADeg (regA "dolent") (regA "pitjor") ;
|
||||
@@ -28,10 +28,10 @@ lin
|
||||
become_VA = reflV (mkV "tornar") ; -- esdevenir
|
||||
beer_N = regFN "cervesa" ;
|
||||
beg_V2V = mkV2V (mkV "demanar") accusative dative ;
|
||||
big_A = regADeg "gros" ;
|
||||
big_A = mkA "gros" "grossa" ;
|
||||
bike_N = regFN "bicicleta" ;
|
||||
bird_N = regMN "ocell" ;
|
||||
black_A = compADeg (mkA "negre" "negra" "negres" "negres" "negrament") ;
|
||||
black_A = compADeg (mkA "negre" "negra" "negres" "negres" "negrament") ;
|
||||
blue_A = compADeg (mkA "blau" "blava" "blaus" "blaves" "blavament") ;
|
||||
boat_N = regFN "barca" ;
|
||||
book_N = regMN "llibre" ;
|
||||
@@ -55,15 +55,15 @@ lin
|
||||
cheese_N = regMN "formatge" ;
|
||||
child_N = regMN "nen" ; -- nena
|
||||
church_N = regFN "església" ;
|
||||
city_N = regFN "ciutat" ;
|
||||
city_N = regFN "ciutat" ;
|
||||
clean_A = regADeg "net" ;
|
||||
clever_A = regADeg "inteligent" ;
|
||||
close_V2 = dirV2 (verbV (trencar_112 "tancar")) ;
|
||||
coat_N = regMN "abric" ;
|
||||
cold_A = regADeg "fred" ;
|
||||
come_V = verbV (venir_117 "venir") ;
|
||||
computer_N = regMN "ordinador" ;
|
||||
country_N = mkN "país" "països" masculine ;
|
||||
computer_N = regMN "ordinador" ;
|
||||
country_N = mkN "país" "països" masculine ;
|
||||
cousin_N = regMN "cosí" ;
|
||||
cow_N = mkN "vaca" ;
|
||||
die_V = verbV (morir_71 "morir") ;
|
||||
@@ -92,7 +92,7 @@ lin
|
||||
girl_N = regFN "noia" ;
|
||||
glove_N = regMN "guant" ;
|
||||
gold_N = regMN "or" ;
|
||||
good_A = prefA (mkADeg (mkA "bo" "bona") (mkA "millor")) ;
|
||||
good_A = mkA (prefA "bo" "bon") (mkA "millor") ;
|
||||
go_V = (verbV (anar_4 "anar")) ;
|
||||
green_A = regADeg "verd" ;
|
||||
harbour_N = regMN "port" ;
|
||||
@@ -107,7 +107,7 @@ lin
|
||||
important_A = regADeg "important" ;
|
||||
industry_N = regFN "indústria" ;
|
||||
iron_N = regMN "ferro" ;
|
||||
king_N = regMN "rei" ;
|
||||
king_N = regMN "rei" ;
|
||||
know_V2 = dirV2 saberV ;
|
||||
know_VQ = mkVQ saberV;
|
||||
know_VS = mkVS saberV;
|
||||
@@ -133,7 +133,7 @@ lin
|
||||
music_N = regFN "música" ;
|
||||
narrow_A = regADeg "estret" ;
|
||||
new_A = prefixA (compADeg (mkA "nou" "nova" "nous" "noves" "novament")) ;
|
||||
newspaper_N = regMN "diari" ; -- periòdic
|
||||
newspaper_N = regMN "diari" ; -- periòdic
|
||||
oil_N = regMN "oli" ;
|
||||
old_A = regADeg "vell" ;
|
||||
open_V2 = dirV2 (verbV (obrir_77 "obrir")) ;
|
||||
@@ -147,14 +147,14 @@ lin
|
||||
play_V2 = dirV2 (verbV (pregar_86 "jugar")) ;
|
||||
policeman_N = regMN "policia" ; -- fem refers to the institution
|
||||
priest_N = regMN "capellà" ; -- masc
|
||||
probable_AS = mkAS (regA "probable") ;
|
||||
probable_AS = mkAS (regA "probable") ;
|
||||
queen_N = regN "reina" ;
|
||||
radio_N = regFN "ràdio" ;
|
||||
rain_V0 = mkV0 (verbV (moure_72 "ploure")) ;
|
||||
read_V2 = dirV2 (verbV (servir_101 "llegir")) ;
|
||||
red_A = regADeg "vermell" ;
|
||||
religion_N = mkN "religió" "religions" feminine ;
|
||||
restaurant_N = regMN "restaurant" ;
|
||||
restaurant_N = regMN "restaurant" ;
|
||||
river_N = regMN "riu" ;
|
||||
rock_N = regFN "roca" ;
|
||||
roof_N = regFN "teulada" ;
|
||||
@@ -163,7 +163,7 @@ lin
|
||||
say_VS = mkVS (verbV (dir_41 "dir")) ;
|
||||
school_N = regFN "escola" ;
|
||||
science_N = regFN "ciència" ;
|
||||
sea_N = regMN "mar" ; -- masc & fem
|
||||
sea_N = regMN "mar" ; -- masc & fem
|
||||
seek_V2 = dirV2 (verbV (trencar_112 "buscar")) ;
|
||||
see_V2 = dirV2 (verbV (veure_118 "veure")) ;
|
||||
sell_V3 = dirV3 (verbV (vendre_116 "vendre")) dative ;
|
||||
@@ -184,13 +184,13 @@ lin
|
||||
star_N = regFN "estrella" ;
|
||||
steel_N = regMN "acer" ;
|
||||
stone_N = regFN "pedra" ;
|
||||
stove_N = regMN "forn" ;
|
||||
stove_N = regMN "forn" ;
|
||||
student_N = regN "estudiant" ; -- used both for fem & masc
|
||||
stupid_A = regADeg "estúpid" ;
|
||||
sun_N = regMN "sol" ;
|
||||
sun_N = regMN "sol" ;
|
||||
switch8off_V2 = dirV2 (verbV (pregar_86 "apagar")) ;
|
||||
switch8on_V2 = dirV2 (verbV (atendre_8 "encendre")) ;
|
||||
table_N = regFN "taula" ;
|
||||
table_N = regFN "taula" ;
|
||||
talk_V3 = mkV3 (mkV "parlar") dative genitive ;
|
||||
teacher_N = regMN "mestre" ; -- mestra
|
||||
teach_V2 = dirV2 (mkV "ensenyar") ;
|
||||
@@ -228,7 +228,7 @@ lin
|
||||
add_V3 = dirV3 (mkV "afegir") dative ; -- also: (mkV "sumar")
|
||||
number_N = regMN "número" ;
|
||||
put_V2 = dirV2 (mkV "posar") ;
|
||||
stop_V = mkV "aturar" ;
|
||||
stop_V = mkV "aturar" ;
|
||||
jump_V = mkV "saltar" ;
|
||||
left_Ord = M.mkOrd (regA "esquerra") ;
|
||||
right_Ord = M.mkOrd (regA "dreta") ;
|
||||
@@ -269,7 +269,7 @@ lin
|
||||
fog_N = regFN "boira" ;
|
||||
foot_N = regMN "peu" ;
|
||||
forest_N = regMN "bosc" ;
|
||||
grass_N = regFN "herba" ;
|
||||
grass_N = regFN "herba" ;
|
||||
guts_N = regMN "budell" ;
|
||||
hair_N = regMN "cabell" ;
|
||||
hand_N = regFN "mà" ;
|
||||
@@ -290,7 +290,7 @@ lin
|
||||
nose_N = regMN "nas" ;
|
||||
person_N = regFN "persona" ;
|
||||
rain_N = regFN "pluja" ; -- pluges
|
||||
road_N = regMN "carrer" ;
|
||||
road_N = regMN "carrer" ;
|
||||
root_N = regFN "arrel" ;
|
||||
rope_N = regN "corda" ;
|
||||
salt_N = regFN "sal" ;
|
||||
@@ -300,14 +300,14 @@ lin
|
||||
sky_N = regMN "cel" ;
|
||||
smoke_N = regMN "fum" ;
|
||||
snow_N = regFN "neu" ; -- fem
|
||||
stick_N = regMN "bastó" ;
|
||||
stick_N = regMN "bastó" ;
|
||||
tail_N = regFN "cua" ;
|
||||
tongue_N = mkN "llengua" ; -- llengües
|
||||
tooth_N = regFN "dent" ;
|
||||
wife_N = regFN "esposa" ;
|
||||
wind_N = regMN "vent" ;
|
||||
wing_N = regFN "ala" ;
|
||||
worm_N = regMN "cuc" ;
|
||||
worm_N = regMN "cuc" ;
|
||||
year_N = regMN "any" ;
|
||||
bite_V2 = dirV2 (verbV (pregar_86 "mossegar")) ;
|
||||
blow_V = mkV "bufar" ;
|
||||
@@ -327,7 +327,7 @@ lin
|
||||
hold_V2 = dirV2 (verbV (obtenir_78 "sostenir")) ;
|
||||
hunt_V2 = dirV2 (verbV (començar_22 "caçar")) ;
|
||||
kill_V2 = dirV2 (mkV "matar") ;
|
||||
laugh_V = verbV (riure_96 "riure") ;
|
||||
laugh_V = verbV (riure_96 "riure") ;
|
||||
lie_V = reflV (verbV (jeure_62 "jeure")) ;
|
||||
play_V = verbV (pregar_86 "jugar") ;
|
||||
pull_V2 = dirV2 (mkV "tibar") ;
|
||||
|
||||
@@ -94,14 +94,19 @@ oper
|
||||
-- Here are some patterns. First one that describes the worst case.
|
||||
-- gcc M2.1
|
||||
|
||||
mkAdj : (_,_,_,_,_ : Str) -> Adj = \prim,prima,prims,primes,primament ->
|
||||
mkAdjFull : (x1,_,_,_,_,x6 : Str) -> Adj = \bon,bo,prima,prims,primes,primament ->
|
||||
{s = table {
|
||||
AF Masc n => numForms prim prims ! n ;
|
||||
AF Fem n => numForms prima primes ! n ;
|
||||
AA => primament
|
||||
ASg Masc AAttr => bon ;
|
||||
ASg Masc APred => bo ;
|
||||
ASg Fem _ => prima ;
|
||||
APl Masc => prims ;
|
||||
APl Fem => primes ;
|
||||
AA => primament
|
||||
}
|
||||
} ;
|
||||
|
||||
mkAdj : (x1,_,_,_,x5 : Str) -> Adj = \a,b,c,d,e -> mkAdjFull a a b c d e ;
|
||||
|
||||
--- Then the regular and invariant patterns.
|
||||
|
||||
adjPrim : Str -> Adj = \prim ->
|
||||
@@ -116,16 +121,15 @@ oper
|
||||
let fond = Predef.tk 1 fondo
|
||||
in adjBlau fondo (fond + "a") ;
|
||||
|
||||
adjBo : Str -> Adj = \bo ->
|
||||
mkAdj bo (bo + "na") (bo + "ns") (bo + "nes") (bo + "nament") ;
|
||||
adjBo : (bo,bon : Str) -> Adj = \bo,bon ->
|
||||
mkAdjFull bon bo (bon + "a") (bon + "s") (bon + "es") (bon + "ament") ;
|
||||
|
||||
adjFidel : Str -> Adj = \fidel ->
|
||||
let fidels : Str = case (last fidel) of {
|
||||
_ + ("s"|"ç"|"x") => fidel + "os" ; --feliç; capaç
|
||||
_ => fidel + "s"
|
||||
} ;
|
||||
in mkAdj fidel fidel fidels fidels
|
||||
(fidel + "ment") ;
|
||||
in mkAdj fidel fidel fidels fidels (fidel + "ment") ;
|
||||
|
||||
--boig, boja, bojos, boges
|
||||
--lleig, lletja, lletjos, lletges
|
||||
@@ -300,6 +304,6 @@ oper unaccent : Str -> Str = \vocal ->
|
||||
-- Determiners, traditionally called indefinite pronouns, are inflected
|
||||
-- in gender and number, like adjectives.
|
||||
|
||||
pronForms : Adj -> Gender -> Number -> Str = \tal,g,n -> tal.s ! AF g n ;
|
||||
pronForms : Adj -> Gender -> Number -> Str = \tal,g,n -> tal.s ! genNum2Aform g n ;
|
||||
|
||||
}
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
-- Aarne Ranta 2004 - 2006
|
||||
-- Jordi Saludes 2008: Modified from ParadigmsSpa
|
||||
--
|
||||
-- This is an API for the user of the resource grammar
|
||||
-- This is an API for the user of the resource grammar
|
||||
-- for adding lexical items. It gives functions for forming
|
||||
-- expressions of open categories: nouns, adjectives, verbs.
|
||||
--
|
||||
--
|
||||
-- Closed categories (determiners, pronouns, conjunctions) are
|
||||
-- accessed through the resource syntax API, $Structural.gf$.
|
||||
-- accessed through the resource syntax API, $Structural.gf$.
|
||||
--
|
||||
-- The main difference with $MorphoCat.gf$ is that the types
|
||||
-- referred to are compiled resource grammar types. We have moreover
|
||||
@@ -24,11 +24,11 @@
|
||||
-- verbs, there is a fairly complete list of irregular verbs in
|
||||
-- [``IrregCat`` ../../catalan/IrregCat.gf].
|
||||
|
||||
resource ParadigmsCat =
|
||||
open
|
||||
(Predef=Predef),
|
||||
Prelude,
|
||||
MorphoCat,
|
||||
resource ParadigmsCat =
|
||||
open
|
||||
(Predef=Predef),
|
||||
Prelude,
|
||||
MorphoCat,
|
||||
BeschCat,
|
||||
CatCat in {
|
||||
|
||||
@@ -36,19 +36,19 @@ flags
|
||||
optimize=all ;
|
||||
coding = utf8 ;
|
||||
|
||||
--2 Parameters
|
||||
--2 Parameters
|
||||
--
|
||||
-- To abstract over gender names, we define the following identifiers.
|
||||
|
||||
oper
|
||||
Gender : Type ;
|
||||
Gender : Type ;
|
||||
|
||||
masculine : Gender ;
|
||||
feminine : Gender ;
|
||||
|
||||
-- To abstract over number names, we define the following.
|
||||
|
||||
Number : Type ;
|
||||
Number : Type ;
|
||||
|
||||
singular : Number ;
|
||||
plural : Number ;
|
||||
@@ -70,7 +70,7 @@ oper
|
||||
mkN : overload {
|
||||
|
||||
-- The regular function takes the singular form and the gender,
|
||||
-- and computes the plural and the gender by a heuristic.
|
||||
-- and computes the plural and the gender by a heuristic.
|
||||
-- The heuristic says that the gender is feminine for nouns
|
||||
-- ending with "a" or "z", and masculine for all other words.
|
||||
-- Nouns ending with "a", "o", "e" have the plural with "s",
|
||||
@@ -89,23 +89,23 @@ oper
|
||||
} ;
|
||||
|
||||
|
||||
--3 Compound nouns
|
||||
--3 Compound nouns
|
||||
--
|
||||
-- Some nouns are ones where the first part is inflected as a noun but
|
||||
-- the second part is not inflected. e.g. "número de telèfon".
|
||||
-- the second part is not inflected. e.g. "número de telèfon".
|
||||
-- They could be formed in syntax, but we give a shortcut here since
|
||||
-- they are frequent in lexica.
|
||||
|
||||
compN : N -> Str -> N ; -- compound, e.g. "número" + "de telèfon"
|
||||
|
||||
|
||||
--3 Relational nouns
|
||||
--
|
||||
-- Relational nouns ("filla de x") need a case and a preposition.
|
||||
--3 Relational nouns
|
||||
--
|
||||
-- Relational nouns ("filla de x") need a case and a preposition.
|
||||
|
||||
mkN2 : N -> Prep -> N2 ; -- e.g. filla + genitive
|
||||
|
||||
-- The most common cases are the genitive "de" and the dative "a",
|
||||
-- The most common cases are the genitive "de" and the dative "a",
|
||||
-- with the empty preposition.
|
||||
|
||||
deN2 : N -> N2 ; -- relation with genitive
|
||||
@@ -123,11 +123,11 @@ oper
|
||||
-- $N3$ are purely lexical categories. But you can use the $AdvCN$
|
||||
-- and $PrepNP$ constructions to build phrases like this.
|
||||
|
||||
--
|
||||
--
|
||||
--3 Proper names and noun phrases
|
||||
--
|
||||
-- Proper names need a string and a gender.
|
||||
-- The default gender is feminine for names ending with "a", otherwise masculine. TODO
|
||||
-- The default gender is feminine for names ending with "a", otherwise masculine. TODO
|
||||
|
||||
mkPN : overload {
|
||||
mkPN : (Anna : Str) -> PN ; -- feminine for "-a", otherwise masculine
|
||||
@@ -151,8 +151,8 @@ oper
|
||||
|
||||
mkA : (fort,forta,forts,fortes,fortament : Str) -> A ; -- worst case
|
||||
|
||||
-- In the worst case, two separate adjectives are given:
|
||||
-- the positive ("bo"), and the comparative ("millor").
|
||||
-- In the worst case, two separate adjectives are given:
|
||||
-- the positive ("bo"), and the comparative ("millor").
|
||||
|
||||
mkA : (bo : A) -> (millor : A) -> A -- special comparison (default with "mas")
|
||||
} ;
|
||||
@@ -177,7 +177,7 @@ oper
|
||||
--2 Adverbs
|
||||
|
||||
-- Adverbs are not inflected. Most lexical ones have position
|
||||
-- after the verb.
|
||||
-- after the verb.
|
||||
|
||||
mkAdv : Str -> Adv ;
|
||||
|
||||
@@ -200,11 +200,11 @@ oper
|
||||
|
||||
mkV : (cantar : Str) -> V ; -- regular in models I, IIa, IIb
|
||||
|
||||
-- Verbs with predictable alternation:
|
||||
-- Verbs with predictable alternation:
|
||||
-- a) inchoative verbs, servir serveixo
|
||||
-- b) re verbs with c/g in root, vendre venc ; subj. vengui
|
||||
|
||||
mkV : (servir,serveixo : Str) -> V ; --inchoative verbs and "re" verbs whose 1st person ends in c
|
||||
mkV : (servir,serveixo : Str) -> V ; --inchoative verbs and "re" verbs whose 1st person ends in c
|
||||
|
||||
-- Most irregular verbs are found in $IrregCat$. If this is not enough,
|
||||
-- the module $BeschCat$ gives all the patterns of the "Bescherelle"
|
||||
@@ -229,7 +229,7 @@ oper
|
||||
--3 Two-place verbs
|
||||
--
|
||||
-- Two-place verbs need a preposition, except the special case with direct object.
|
||||
-- (transitive verbs).
|
||||
-- (transitive verbs).
|
||||
|
||||
mkV2 : overload {
|
||||
mkV2 : Str -> V2 ; -- regular verb, direct object
|
||||
@@ -274,9 +274,9 @@ oper
|
||||
mkAV : A -> Prep -> AV ; --%
|
||||
mkA2V : A -> Prep -> Prep -> A2V ; --%
|
||||
|
||||
-- Notice: categories $AS, A2S, AV, A2V$ are just $A$,
|
||||
-- Notice: categories $AS, A2S, AV, A2V$ are just $A$,
|
||||
-- and the second argument is given
|
||||
-- as an adverb. Likewise
|
||||
-- as an adverb. Likewise
|
||||
-- $V0$ is just $V$.
|
||||
|
||||
V0 : Type ; --%
|
||||
@@ -289,7 +289,7 @@ oper
|
||||
-- The definitions should not bother the user of the API. So they are
|
||||
-- hidden from the document.
|
||||
|
||||
Gender = MorphoCat.Gender ;
|
||||
Gender = MorphoCat.Gender ;
|
||||
Number = MorphoCat.Number ;
|
||||
masculine = Masc ;
|
||||
feminine = Fem ;
|
||||
@@ -323,19 +323,23 @@ oper
|
||||
|
||||
makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False} ** {lock_NP = <>} ;
|
||||
|
||||
mk5A a b c d e =
|
||||
mk5A a b c d e =
|
||||
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; lock_A = <>} ;
|
||||
mk2A a b = compADeg {s = \\_ => (mkAdj2Reg a b).s ; isPre = False ; lock_A = <>} ;
|
||||
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; lock_A = <>} ;
|
||||
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
||||
prefA = overload {
|
||||
prefA : A -> A = \a -> a ** {isPre = True} ;
|
||||
prefA : Str -> Str -> A = \bo,bon ->
|
||||
compADeg (lin A {s = \\_ => (adjBo bo bon).s ; isPre = True}) ;
|
||||
} ;
|
||||
|
||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||
|
||||
mkADeg a b =
|
||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
|
||||
mkADeg a b =
|
||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
|
||||
isPre = a.isPre ; lock_A = <>} ;
|
||||
compADeg a =
|
||||
{s = table {Posit => a.s ! Posit ; _ => \\f => "més" ++ a.s ! Posit ! f} ;
|
||||
compADeg a =
|
||||
{s = table {Posit => a.s ! Posit ; _ => \\f => "més" ++ a.s ! Posit ! f} ;
|
||||
isPre = a.isPre ;
|
||||
lock_A = <>} ;
|
||||
regADeg a = compADeg (regA a) ;
|
||||
@@ -356,7 +360,7 @@ oper
|
||||
|
||||
_ + "re" => perdre_83 x ;
|
||||
_ + "er" => verbEr x ; --handles accents in infinitives and c/ç, g/j
|
||||
_ + "ir" => dormir_44 x ; --inchoative verbs with regAltV
|
||||
_ + "ir" => dormir_44 x ; --inchoative verbs with regAltV
|
||||
_ + "ur" => dur_45 x ;
|
||||
_ => cantar_15 x } ;
|
||||
|
||||
@@ -384,10 +388,10 @@ oper
|
||||
mk3V x y z =
|
||||
let ure = Predef.dp 3 x ;
|
||||
venc = Predef.dp 4 y ;
|
||||
gut = Predef.dp 3 z
|
||||
gut = Predef.dp 3 z
|
||||
in case <ure,venc,gut> of {
|
||||
<_+"re",_,"gut"> => regAltV x y ; --default participle of type dolgut
|
||||
|
||||
|
||||
--if these are overfitting, just comment out.
|
||||
--still doesn't catch creure, seure; mk4V with creiem as 4th arg?
|
||||
<"ure",_, "uit"> => coure_32 x ; --coure coem cuit
|
||||
@@ -425,7 +429,7 @@ oper
|
||||
|
||||
special_ppV ve pa = {
|
||||
s = table {
|
||||
VPart g n => (regA pa).s ! Posit ! AF g n ;
|
||||
VPart g n => (regA pa).s ! Posit ! genNum2Aform g n ;
|
||||
p => ve.s ! p
|
||||
} ;
|
||||
lock_V = <> ;
|
||||
@@ -489,7 +493,7 @@ oper
|
||||
-- To form a noun phrase that can also be plural,
|
||||
-- you can use the worst-case function.
|
||||
|
||||
makeNP : Str -> Gender -> Number -> NP ;
|
||||
makeNP : Str -> Gender -> Number -> NP ;
|
||||
|
||||
mkA = overload {
|
||||
mkA : (util : Str) -> A = regA ;
|
||||
@@ -504,7 +508,10 @@ oper
|
||||
mkADeg : A -> A -> A ;
|
||||
compADeg : A -> A ;
|
||||
regADeg : Str -> A ;
|
||||
prefA : A -> A ;
|
||||
prefA : overload {
|
||||
prefA : A -> A ; -- gran
|
||||
prefA : (bo,bon : Str) -> A -- predicative masc, attributive masc
|
||||
} ;
|
||||
prefixA = prefA ;
|
||||
|
||||
mkV = overload {
|
||||
@@ -521,7 +528,7 @@ oper
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : Str -> V2 = \s -> dirV2 (mkV s) ;
|
||||
mkV2 : V -> V2 = dirV2 ;
|
||||
mkV2 : V -> V2 = dirV2 ;
|
||||
mkV2 : V -> Prep -> V2 = mk2V2
|
||||
} ;
|
||||
mk2V2 : V -> Prep -> V2 ;
|
||||
|
||||
Reference in New Issue
Block a user