1
0
forked from GitHub/gf-rgl

added documentaion and missing paradigm functions

This commit is contained in:
Krasimir Angelov
2024-10-20 17:11:42 +02:00
parent 650076a867
commit bb7786af7c
6 changed files with 518 additions and 463 deletions

View File

@@ -78,6 +78,8 @@ concrete CatIna of Cat = CommonX ** open ResIna, Prelude in {
N2 = {s : Number => Str} ** {p2 : Str; c2 : Case} ;
N3 = {s : Number => Str} ** {p2,p3 : Str; c2,c3 : Case} ;
PN = {s : Str} ;
PN,LN = {s : Str} ;
GN = {s : Str ; g : Sex} ;
SN = {s : Sex => Str ; pl : Str} ;
}

View File

@@ -0,0 +1,113 @@
--# -path=.:../abstract:../common
concrete DocumentationIna of Documentation = CatIna ** open
ResIna,
Prelude,
HTML
in {
flags coding=utf8 ;
lincat
Inflection = {t : Str; s1,s2 : Str} ;
Definition = {s : Str} ;
Document = {s : Str} ;
Tag = {s : Str} ;
{-
-} --# notpresent
lin
InflectionN, InflectionN2, InflectionN3 = \noun -> {
t = "s" ;
s1 = heading1 "Substantivo" ;
s2 = frameTable (
tr (th "Singular" ++ th "Plural") ++
tr (td (noun.s ! Sg) ++ td (noun.s ! Pl))
)
} ;
InflectionPN = \pn -> {
t = "pn" ;
s1 = heading1 ("Nombre Proprio") ;
s2 = pn.s
} ;
InflectionGN = \gn -> {
t = "pn" ;
s1 = heading1 ("Nombre de Pila" ++
case gn.g of {
Male => "(Mascule)" ;
Female => "(Femina)"
}) ;
s2 = gn.s
} ;
InflectionSN = \sn -> {
t = "sn" ;
s1 = heading1 "Apellido" ;
s2 = sn.s ! Male
} ;
InflectionLN = \ln -> {
t = "nl" ;
s1 = heading1 ("Nombre del Lugar") ;
s2 = paragraph ln.s
} ;
InflectionA, InflectionA2 = \adj -> {
t = "a" ;
s1 = heading1 "Adjectivo" ;
s2 = paragraph (adj.s ! AAdj Posit)
} ;
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
t = "adv" ;
s1 = heading1 "Adverbio" ;
s2 = paragraph adv.s
} ;
InflectionPrep p = {
t = "prep" ;
s1 = heading1 "Preposition" ;
s2 = paragraph p.s
} ;
InflectionV, InflectionV2, InflectionV3, InflectionV2V, InflectionV2S, InflectionV2Q, InflectionV2A, InflectionVV, InflectionVS, InflectionVQ, InflectionVA = \v -> {
t = "v" ;
s1 = heading1 "Verbo" ;
s2 = inflVerb v
} ;
lin
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Definición:</b>"++t.s++d.s++"</p>"};
MkDefinitionEx t d e = {s="<p><b>Definición:</b>"++t.s++d.s++"</p><p><b>Ejemplo:</b>"++e.s++"</p>"};
lin
MkDocument b i e = ss (i.s1 ++ "<p style=\"font-size:20px\">"++b.s++"</p>" ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
MkTag i = ss i.t ;
oper
inflVerb : Verb -> Str = \verb ->
frameTable (
tr (th "infinitivo" ++
td (verb.s ! VInf)) ++
tr (th "presente" ++
td (verb.s ! VPres)) ++
tr (th "participio passato" ++
td (verb.s ! VPPart)) ++
tr (th "participio presente" ++
td (verb.s ! VPresPart)) ++
tr (th "passato" ++
td (verb.s ! VPast)) ++
tr (th "futuro" ++
td (verb.s ! VFut)) ++
tr (th "conditional" ++
td (verb.s ! VCond))
) ;
{- --# notpresent
-}
}

View File

@@ -2,7 +2,8 @@
concrete LangIna of Lang =
GrammarIna,
LexiconIna
LexiconIna,
DocumentationIna
** {
flags startcat = Phr ; unlexer = text ; lexer = text ;

View File

@@ -7,355 +7,355 @@ concrete LexiconIna of Lexicon = CatIna **
optimize=values ;
lin
airplane_N = regN "avion";
answer_V2S = prepV2 aP (regV "responder");
apartment_N = regN "appartamento";
apple_N = regN "pomo";
art_N = regN "arte" ;
ask_V2Q = mkV2Q aP (regV "demandar") ;
baby_N = regN "bebe" ;
bad_A = regA "mal";
bank_N = regN "banca" ;
beautiful_A = regA "belle" ;
become_VA = mkVA (regV "devenir") ;
beer_N = regN "bira" ;
beg_V2V = mkV2V noPrep aP (regV "rogar") ;
big_A = regA "magne" ;
bike_N = regN "bicycletta" ;
bird_N = regN "ave" ;
black_A = regA "nigre" ;
blue_A = regA "blau" ;
boat_N = regN "barca" ;
book_N = regN "libro" ;
boot_N = regN "botta";
boss_N = regN "chef" ;
boy_N = regN "puero" ;
bread_N = regN "pan" ;
break_V2 = dirV2 (regV "rumper") ;
broad_A = regA "large" ;
airplane_N = mkN "avion";
answer_V2S = mkV2 (mkV "responder") aP;
apartment_N = mkN "appartamento";
apple_N = mkN "pomo";
art_N = mkN "arte" ;
ask_V2Q = mkV2Q (mkV "demandar") aP ;
baby_N = mkN "bebe" ;
bad_A = mkA "mal";
bank_N = mkN "banca" ;
beautiful_A = mkA "belle" ;
become_VA = mkVA (mkV "devenir") ;
beer_N = mkN "bira" ;
beg_V2V = mkV2V (mkV "rogar") noPrep aP ;
big_A = mkA "magne" ;
bike_N = mkN "bicycletta" ;
bird_N = mkN "ave" ;
black_A = mkA "nigre" ;
blue_A = mkA "blau" ;
boat_N = mkN "barca" ;
book_N = mkN "libro" ;
boot_N = mkN "botta";
boss_N = mkN "chef" ;
boy_N = mkN "puero" ;
bread_N = mkN "pan" ;
break_V2 = mkV2 (mkV "rumper") ;
broad_A = mkA "large" ;
brother_N2 = regN2 "fratre";
brown_A = regA "brun" ;
butter_N = regN "butyro" ;
buy_V2 = dirV2 (regV "compra");
camera_N = compN (regN "apparato" ) ["photographic"] ;
cap_N = regN "bonetto" ;
car_N = regN "automobile" ;
carpet_N = regN "tapete" ;
cat_N = regN "catto" ;
ceiling_N = regN "tecto" ; -- of room ???
chair_N = regN "sede";
cheese_N = regN "caseo";
child_N = regN "infante" ;
church_N = regN "ecclesia" ;
city_N = regN "urbe" ; -- ??? citate
clean_A = regA "munde" ;
clever_A = regA "intelligente" ;
close_V2 = dirV2 (regV "clauder") ;
coat_N = regN "mantello" ;
cold_A = regA "frigide" ;
come_V = regV "venir" ;
computer_N = regN "computator" ;
country_N = regN "pais" ;
cousin_N = regN "cosino" ; ---- cosina
cow_N = regN "vacca" ;
die_V = regV "morir" ;
dirty_A = regA "immunde" ;
distance_N3 = prepN3 aP (prepN2 deP (regN "distantia")) ; --- ??? wtf
doctor_N = regN "medico";
dog_N = regN "can";
door_N = regN "porta";
drink_V2 = dirV2 (regV "biber");
easy_A2V = mkA2V (regA "facile") aP ;
eat_V2 = dirV2 (regV "eder");
empty_A = regA "vacue" ;
enemy_N = regN "inimico" ;
factory_N = regN "fabrica" ;
brown_A = mkA "brun" ;
butter_N = mkN "butyro" ;
buy_V2 = mkV2 (mkV "compra");
camera_N = compN (mkN "apparato" ) ["photographic"] ;
cap_N = mkN "bonetto" ;
car_N = mkN "automobile" ;
carpet_N = mkN "tapete" ;
cat_N = mkN "catto" ;
ceiling_N = mkN "tecto" ; -- of room ???
chair_N = mkN "sede";
cheese_N = mkN "caseo";
child_N = mkN "infante" ;
church_N = mkN "ecclesia" ;
city_N = mkN "urbe" ; -- ??? citate
clean_A = mkA "munde" ;
clever_A = mkA "intelligente" ;
close_V2 = mkV2 (mkV "clauder") ;
coat_N = mkN "mantello" ;
cold_A = mkA "frigide" ;
come_V = mkV "venir" ;
computer_N = mkN "computator" ;
country_N = mkN "pais" ;
cousin_N = mkN "cosino" ; ---- cosina
cow_N = mkN "vacca" ;
die_V = mkV "morir" ;
dirty_A = mkA "immunde" ;
distance_N3 = prepN3 aP (prepN2 deP (mkN "distantia")) ; --- ??? wtf
doctor_N = mkN "medico";
dog_N = mkN "can";
door_N = mkN "porta";
drink_V2 = mkV2 (mkV "biber");
easy_A2V = mkA2V (mkA "facile") aP ;
eat_V2 = mkV2 (mkV "eder");
empty_A = mkA "vacue" ;
enemy_N = mkN "inimico" ;
factory_N = mkN "fabrica" ;
father_N2 = regN2 "patre" ;
fear_VS = mkVS (regV "timer") ;
find_V2 = dirV2 (regV "trovar") ;
fish_N = regN "pisce" ;
floor_N = regN "pavimento" ;
forget_V2 = dirV2 (regV "oblidar");
fridge_N = regN "refrigerator";
friend_N = regN "amico" ;
fruit_N = regN "fructo" ;
fun_AV = mkAV (regA "famusante") ;
garden_N = regN "horto" ;
girl_N = regN "puera" ;
glove_N = regN "guanto" ;
go_V = regV "ir";
gold_N = regN "auro" ;
fear_VS = mkVS (mkV "timer") ;
find_V2 = mkV2 (mkV "trovar") ;
fish_N = mkN "pisce" ;
floor_N = mkN "pavimento" ;
forget_V2 = mkV2 (mkV "oblidar");
fridge_N = mkN "refrigerator";
friend_N = mkN "amico" ;
fruit_N = mkN "fructo" ;
fun_AV = mkAV (mkA "famusante") ;
garden_N = mkN "horto" ;
girl_N = mkN "puera" ;
glove_N = mkN "guanto" ;
go_V = mkV "ir";
gold_N = mkN "auro" ;
good_A = R.mkAdjective "bon" "melior" "optime";
green_A = regA "verde" ;
harbour_N = regN "porto" ;
hate_V2 = dirV2 (regV "detestar0") ;
hat_N = regN "cappello" ;
hear_V2 = dirV2 (regV "audir");
hill_N = regN "monticulo" ;
hope_VS = mkVS (regV "sperar") ;
horse_N = regN "cavallo" ;
hot_A = regA "calide" ;
house_N = regN "domo" ;
important_A = regA "importante" ;
industry_N = regN "industria" ;
iron_N = regN "ferro" ;
king_N = regN "rege" ;
know_V2 = dirV2 (regV "cognoscer") ; -- ???
lake_N = regN "laco" ;
lamp_N = regN "lampa" ;
learn_V2 = dirV2 (regV "apprender") ;
leather_N = regN "corio" ;
leave_V2 = prepV2 deP (regV "partir");
like_V2 = dirV2 (regV "amar") ;
listen_V2 = dirV2 (regV "ascoltar") ;
live_V = (regV "vive") ;
long_A = regA "longe" ;
lose_V2 = dirV2 (regV "perder");
love_N = regN "amor" ;
love_V2 = dirV2 (regV "adorar") ;
man_N = regN "viro";
married_A2 = mkA2 (regA "sponsate") aP ;
meat_N = regN "carne" ;
milk_N = regN "lacte" ;
moon_N = regN "luna" ;
green_A = mkA "verde" ;
harbour_N = mkN "porto" ;
hate_V2 = mkV2 (mkV "detestar0") ;
hat_N = mkN "cappello" ;
hear_V2 = mkV2 (mkV "audir");
hill_N = mkN "monticulo" ;
hope_VS = mkVS (mkV "sperar") ;
horse_N = mkN "cavallo" ;
hot_A = mkA "calide" ;
house_N = mkN "domo" ;
important_A = mkA "importante" ;
industry_N = mkN "industria" ;
iron_N = mkN "ferro" ;
king_N = mkN "rege" ;
know_V2 = mkV2 (mkV "cognoscer") ; -- ???
lake_N = mkN "laco" ;
lamp_N = mkN "lampa" ;
learn_V2 = mkV2 (mkV "apprender") ;
leather_N = mkN "corio" ;
leave_V2 = mkV2 (mkV "partir") deP;
like_V2 = mkV2 (mkV "amar") ;
listen_V2 = mkV2 (mkV "ascoltar") ;
live_V = mkV "vive" ;
long_A = mkA "longe" ;
lose_V2 = mkV2 (mkV "perder");
love_N = mkN "amor" ;
love_V2 = mkV2 (mkV "adorar") ;
man_N = mkN "viro";
married_A2 = mkA2 (mkA "sponsate") aP ;
meat_N = mkN "carne" ;
milk_N = mkN "lacte" ;
moon_N = mkN "luna" ;
mother_N2 = regN2 "matre" ;
mountain_N = regN "montania" ;
music_N = regN "musica" ;
narrow_A = regA "stricte" ;
new_A = regA "nove" ;
newspaper_N = regN "jornal" ;
oil_N = regN "oleo" ;
old_A = regA "vetule" ;
open_V2 = dirV2 (regV "operir") ;
paint_V2A = mkV2A noPrep inP (regV "pinger") ; -- ??? preposition might be wrong. (did not find a sample usage)
paper_N = regN "papiro" ;
paris_PN = regPN "Paris" ;
peace_N = regN "pace" ;
pen_N = regN "penna" ;
planet_N = regN "planeta" ;
plastic_N = regN "plastico" ;
play_V2 = dirV2 (regV "sonar") ; -- ??? eg. play the piano
policeman_N = regN "policero" ;
priest_N = regN "prestre" ;
probable_AS = mkAS (regA "probabile") ;
queen_N = regN "regina" ;
radio_N = regN "radio" ;
rain_V0 = mkV0 (regV "pluvar") ;
read_V2 = dirV2 (regV "leger");
red_A = regA "rubie" ;
religion_N = regN "religion" ;
restaurant_N = regN "restaurant" ;
river_N = regN "riviera" ;
rock_N = regN "rocca" ;
roof_N = regN "tecto" ;
rubber_N = regN "cauchu" ;
run_V = regV "currer";
say_VS = mkVS (regV "dicer");
school_N = regN "schola" ;
science_N = regN "scientia";
sea_N = regN "mar" ;
seek_V2 = dirV2 (regV "cercar");
see_V2 = dirV2 (regV "vider");
sell_V3 = prepV3 aP (dirV2 (regV "vender"));
send_V3 = prepV3 aP (dirV2 (regV "inviar"));
sheep_N = regN "ove";
ship_N = regN "nave" ;
shirt_N = regN "camisa" ;
shoe_N = regN "scapra" ;
shop_N = regN "boteca" ;
short_A = regA "curte" ;
silver_N = regN "argento" ;
sister_N = regN "soror" ;
sleep_V = regV "dormir";
small_A = regA "parve" ; -- !!! This one should be preferably a prefix adjective
snake_N = regN "serpente" ;
sock_N = regN "calcetta" ;
speak_V2 = dirV2 (regV "parlar") ;-- ???
star_N = regN "stella" ;
steel_N = regN "aciero" ;
stone_N = regN "petra" ;
stove_N = regN "estufa" ;
student_N = regN "studente" ;
stupid_A = regA "nescie" ;
sun_N = regN "sol" ;
switch8off_V2 = dirV2 (regV "extinguer");
switch8on_V2 = dirV2 (regV "accender") ;
table_N = regN "tablula" ;
talk_V3 = (prepV3 deP (prepV2 aP (regV "parlar"))) ;
teacher_N = regN "professor" ;
teach_V2 = dirV2 (regV "inseniar"); -- ??? aP (preposition is what?)
television_N = regN "television" ;
thick_A = regA "spisse" ;
thin_A = regA "magre" ;
train_N = regN "convoyo" ; -- ???
travel_V = regV "viagiar" ;
tree_N = regN "tarbore" ;
---- trousers_N = regN "pantalon" ; --- ??? funky plural in the Abstract lexicon...
ugly_A = regA "ugly" ;
understand_V2 = dirV2 (regV "comprender");
university_N = regN "universitate" ;
village_N = regN "village" ;
wait_V2 = dirV2 (regV "wait") ;
walk_V = (regV "ambular") ;
warm_A = regA "calde" ;
war_N = regN "guerra" ;
watch_V2 = dirV2 (regV "spectar") ;
water_N = regN "aqua" ;
white_A = regA "albe" ;
window_N = regN "fenestra" ;
wine_N = regN "vino" ;
win_V2 = dirV2 (regV "ganiar");
woman_N = regN "femina";
wonder_VQ = mkVQ (reflV (regV "demandar")) ;
wood_N = regN "ligno"; -- or silva ...
write_V2 = dirV2 (regV "scriber");
yellow_A = regA "jalne" ;
young_A = regA "juvene" ;
mountain_N = mkN "montania" ;
music_N = mkN "musica" ;
narrow_A = mkA "stricte" ;
new_A = mkA "nove" ;
newspaper_N = mkN "jornal" ;
oil_N = mkN "oleo" ;
old_A = mkA "vetule" ;
open_V2 = mkV2 (mkV "operir") ;
paint_V2A = mkV2A (mkV "pinger") noPrep inP ; -- ??? preposition might be wrong. (did not find a sample usage)
paper_N = mkN "papiro" ;
paris_PN = mkPN "Paris" ;
peace_N = mkN "pace" ;
pen_N = mkN "penna" ;
planet_N = mkN "planeta" ;
plastic_N = mkN "plastico" ;
play_V2 = mkV2 (mkV "sonar") ; -- ??? eg. play the piano
policeman_N = mkN "policero" ;
priest_N = mkN "prestre" ;
probable_AS = mkAS (mkA "probabile") ;
queen_N = mkN "regina" ;
radio_N = mkN "radio" ;
rain_V0 = mkV0 (mkV "pluvar") ;
read_V2 = mkV2 (mkV "leger");
red_A = mkA "rubie" ;
religion_N = mkN "religion" ;
restaurant_N = mkN "restaurant" ;
river_N = mkN "riviera" ;
rock_N = mkN "rocca" ;
roof_N = mkN "tecto" ;
rubber_N = mkN "cauchu" ;
run_V = mkV "currer";
say_VS = mkVS (mkV "dicer");
school_N = mkN "schola" ;
science_N = mkN "scientia";
sea_N = mkN "mar" ;
seek_V2 = mkV2 (mkV "cercar");
see_V2 = mkV2 (mkV "vider");
sell_V3 = mkV3 (mkV "vender") noPrep aP;
send_V3 = mkV3 (mkV "inviar") noPrep aP;
sheep_N = mkN "ove";
ship_N = mkN "nave" ;
shirt_N = mkN "camisa" ;
shoe_N = mkN "scapra" ;
shop_N = mkN "boteca" ;
short_A = mkA "curte" ;
silver_N = mkN "argento" ;
sister_N = mkN "soror" ;
sleep_V = mkV "dormir";
small_A = mkA "parve" ; -- !!! This one should be preferably a prefix adjective
snake_N = mkN "serpente" ;
sock_N = mkN "calcetta" ;
speak_V2 = mkV2 (mkV "parlar") ;-- ???
star_N = mkN "stella" ;
steel_N = mkN "aciero" ;
stone_N = mkN "petra" ;
stove_N = mkN "estufa" ;
student_N = mkN "studente" ;
stupid_A = mkA "nescie" ;
sun_N = mkN "sol" ;
switch8off_V2 = mkV2 (mkV "extinguer");
switch8on_V2 = mkV2 (mkV "accender") ;
table_N = mkN "tablula" ;
talk_V3 = mkV3 (mkV "parlar") deP aP ;
teacher_N = mkN "professor" ;
teach_V2 = mkV2 (mkV "inseniar"); -- ??? aP (preposition is what?)
television_N = mkN "television" ;
thick_A = mkA "spisse" ;
thin_A = mkA "magre" ;
train_N = mkN "convoyo" ; -- ???
travel_V = mkV "viagiar" ;
tree_N = mkN "tarbore" ;
---- trousers_N = mkN "pantalon" ; --- ??? funky plural in the Abstract lexicon...
ugly_A = mkA "ugly" ;
understand_V2 = mkV2 (mkV "comprender");
university_N = mkN "universitate" ;
village_N = mkN "village" ;
wait_V2 = mkV2 (mkV "wait") ;
walk_V = (mkV "ambular") ;
warm_A = mkA "calde" ;
war_N = mkN "guerra" ;
watch_V2 = mkV2 (mkV "spectar") ;
water_N = mkN "aqua" ;
white_A = mkA "albe" ;
window_N = mkN "fenestra" ;
wine_N = mkN "vino" ;
win_V2 = mkV2 (mkV "ganiar");
woman_N = mkN "femina";
wonder_VQ = mkVQ (reflV (mkV "demandar")) ;
wood_N = mkN "ligno"; -- or silva ...
write_V2 = mkV2 (mkV "scriber");
yellow_A = mkA "jalne" ;
young_A = mkA "juvene" ;
lin
do_V2 = dirV2 (regV "facer");
add_V3 = prepV3 aP (dirV2 (regV "additionar"));
do_V2 = mkV2 (mkV "facer");
add_V3 = mkV3 (mkV "additionar") noPrep aP;
already_Adv = mkAdv "jam" ;
animal_N = regN "animal" ;
ashes_N = regN "cinere" ; -- plural only???
back_N = regN "dorso" ;
bark_N = regN "cortice" ;
belly_N = regN "ventre" ;
bite_V2 = dirV2 (regV "morder");
blood_N = regN "sanguine" ;
blow_V = regV "sufflar";
bone_N = regN "osso" ;
breast_N = regN "pectore" ;
breathe_V = dirV2 (regV "respirar") ;
burn_V = regV "arder";
cloud_N = regN "nube" ;
correct_A = (regA "correcte") ;
count_V2 = dirV2 (regV "numerar") ;
cut_V2 = dirV2 (regV "secar");
day_N = regN "die" ;
dig_V = regV "fossar";
dry_A = regA "sic" ;
dull_A = regA "enoiose" ;
dust_N = regN "pulvere" ;
ear_N = regN "aure" ;
earth_N = regN "terra" ;
egg_N = regN "ovo" ;
eye_N = regN "oculo" ;
fall_V = regV "cader" ;
animal_N = mkN "animal" ;
ashes_N = mkN "cinere" ; -- plural only???
back_N = mkN "dorso" ;
bark_N = mkN "cortice" ;
belly_N = mkN "ventre" ;
bite_V2 = mkV2 (mkV "morder");
blood_N = mkN "sanguine" ;
blow_V = mkV "sufflar";
bone_N = mkN "osso" ;
breast_N = mkN "pectore" ;
breathe_V = mkV "respirar" ;
burn_V = mkV "arder";
cloud_N = mkN "nube" ;
correct_A = (mkA "correcte") ;
count_V2 = mkV2 (mkV "numerar") ;
cut_V2 = mkV2 (mkV "secar");
day_N = mkN "die" ;
dig_V = mkV "fossar";
dry_A = mkA "sic" ;
dull_A = mkA "enoiose" ;
dust_N = mkN "pulvere" ;
ear_N = mkN "aure" ;
earth_N = mkN "terra" ;
egg_N = mkN "ovo" ;
eye_N = mkN "oculo" ;
fall_V = mkV "cader" ;
far_Adv = mkAdv "lontano" ;
fat_N = regN "grasse" ;
fear_V2 = dirV2 (regV "timer") ;
feather_N = regN "pluma" ;
fight_V2 = dirV2 (regV "combattar");
fingernail_N = regN "ungual";
fire_N = regN "foco" ;
float_V = regV "flottar" ;
flow_V = regV "flucto" ;
flower_N = regN "flore" ;
fly_V = regV "volar" ;
fog_N = regN "bruma" ;
foot_N = regN "pede";
forest_N = regN "silva" ;
freeze_V = regV "gelar";
full_A = regA "plen" ;
give_V3 = prepV3 aP (dirV2 (regV "dar")) ;
grammar_N = regN "grammatica" ;
grass_N = regN "herba" ;
guts_N = regN "tripas" ; -- !!!: no singular
hair_N = regN "pilo" ;
hand_N = regN "mano" ;
head_N = regN "capite" ;
heart_N = regN "corde" ;
heavy_A = regA "pesante" ;
hit_V2 = dirV2 (regV "frappar") ;
hold_V2 = dirV2 (regV "retener") ;
horn_N = regN "corno" ;
hunt_V2 = dirV2 (regV "chassar") ;
husband_N = regN "sposo";
ice_N = regN "glacie" ;
john_PN = regPN "John" ;
jump_V = regV "saltar" ;
kill_V2 = dirV2 (regV "occider") ;
knee_N = regN "genu" ;
language_N = regN "linguage" ;
laugh_V = regV "rider" ;
leaf_N = regN "folio" ;
fat_N = mkN "grasse" ;
fear_V2 = mkV2 (mkV "timer") ;
feather_N = mkN "pluma" ;
fight_V2 = mkV2 (mkV "combattar");
fingernail_N = mkN "ungual";
fire_N = mkN "foco" ;
float_V = mkV "flottar" ;
flow_V = mkV "flucto" ;
flower_N = mkN "flore" ;
fly_V = mkV "volar" ;
fog_N = mkN "bruma" ;
foot_N = mkN "pede";
forest_N = mkN "silva" ;
freeze_V = mkV "gelar";
full_A = mkA "plen" ;
give_V3 = mkV3 (mkV "dar") noPrep aP ;
grammar_N = mkN "grammatica" ;
grass_N = mkN "herba" ;
guts_N = mkN "tripas" ; -- !!!: no singular
hair_N = mkN "pilo" ;
hand_N = mkN "mano" ;
head_N = mkN "capite" ;
heart_N = mkN "corde" ;
heavy_A = mkA "pesante" ;
hit_V2 = mkV2 (mkV "frappar") ;
hold_V2 = mkV2 (mkV "retener") ;
horn_N = mkN "corno" ;
hunt_V2 = mkV2 (mkV "chassar") ;
husband_N = mkN "sposo";
ice_N = mkN "glacie" ;
john_PN = mkPN "John" ;
jump_V = mkV "saltar" ;
kill_V2 = mkV2 (mkV "occider") ;
knee_N = mkN "genu" ;
language_N = mkN "linguage" ;
laugh_V = mkV "rider" ;
leaf_N = mkN "folio" ;
left_Ord = ss "leve" ;
leg_N = regN "gamba" ;
lie_V = regV "mentir";
liver_N = regN "hepate" ;
louse_N = regN "pediculo";
mouth_N = regN "bucca" ;
name_N = regN "nomine" ;
near_A = regA "proxime" ;
neck_N = regN "collo" ;
night_N = regN "nocte" ;
nose_N = regN "naso" ;
leg_N = mkN "gamba" ;
lie_V = mkV "mentir";
liver_N = mkN "hepate" ;
louse_N = mkN "pediculo";
mouth_N = mkN "bucca" ;
name_N = mkN "nomine" ;
near_A = mkA "proxime" ;
neck_N = mkN "collo" ;
night_N = mkN "nocte" ;
nose_N = mkN "naso" ;
now_Adv = mkAdv "nunc" ;
number_N = regN "numero" ;
person_N = regN "homine" ;
play_V = regV "jocar" ;
pull_V2 = dirV2 (regV "traher") ;
push_V2 = dirV2 (regV "pulsar") ;
put_V2 = dirV2 (regV "placar");
question_N = regN "question" ;
rain_N = regN "pluvia" ;
ready_A = regA "preste" ;
reason_N = regN "ration" ;
number_N = mkN "numero" ;
person_N = mkN "homine" ;
play_V = mkV "jocar" ;
pull_V2 = mkV2 (mkV "traher") ;
push_V2 = mkV2 (mkV "pulsar") ;
put_V2 = mkV2 (mkV "placar");
question_N = mkN "question" ;
rain_N = mkN "pluvia" ;
ready_A = mkA "preste" ;
reason_N = mkN "ration" ;
right_Ord = ss "dextra" ;
road_N = regN "via" ;
root_N = regN "radice" ;
rope_N = regN "corda" ;
rotten_A = (regA "corrupte") ;
round_A = regA "ronde" ;
rub_V2 = dirV2 (regV "fircar") ;
rule_N = regN "regula" ;
salt_N = regN "sal" ;
sand_N = regN "sablo" ;
scratch_V2 = dirV2 (regV "grattar") ;
seed_N = regN "semine" ;
sew_V = regV "suer";
sharp_A = regA "trenchante" ;
sing_V = regV "cantar";
sit_V = regV "seder";
skin_N = regN "pelle" ;
sky_N = regN "celo" ;
smell_V = regV "oler" ;
smoke_N = regN "fumar" ;
smooth_A = regA "lisie" ;
snow_N = regN "niva" ;
song_N = regN "canto" ;
spit_V = regV "sputar";
split_V2 = dirV2 (regV "finder");
squeeze_V2 = dirV2 (regV "comprimer") ;
stab_V2 = dirV2 (regV "dagar") ;
stand_V = regV "star";
stick_N = regN "baston" ;
stop_V = regV "stoppar" ;
straight_A = regA "directe" ;
suck_V2 = dirV2 (regV "suger") ;
swell_V = (regV "turger");
swim_V = (regV "natada");
tail_N = regN "cauda" ;
think_V = regV "pensar";
throw_V2 = dirV2 (regV "jectar") ;
tie_V2 = dirV2 (regV "ligar") ;
road_N = mkN "via" ;
root_N = mkN "radice" ;
rope_N = mkN "corda" ;
rotten_A = (mkA "corrupte") ;
round_A = mkA "ronde" ;
rub_V2 = mkV2 (mkV "fircar") ;
rule_N = mkN "regula" ;
salt_N = mkN "sal" ;
sand_N = mkN "sablo" ;
scratch_V2 = mkV2 (mkV "grattar") ;
seed_N = mkN "semine" ;
sew_V = mkV "suer";
sharp_A = mkA "trenchante" ;
sing_V = mkV "cantar";
sit_V = mkV "seder";
skin_N = mkN "pelle" ;
sky_N = mkN "celo" ;
smell_V = mkV "oler" ;
smoke_N = mkN "fumar" ;
smooth_A = mkA "lisie" ;
snow_N = mkN "niva" ;
song_N = mkN "canto" ;
spit_V = mkV "sputar";
split_V2 = mkV2 (mkV "finder");
squeeze_V2 = mkV2 (mkV "comprimer") ;
stab_V2 = mkV2 (mkV "dagar") ;
stand_V = mkV "star";
stick_N = mkN "baston" ;
stop_V = mkV "stoppar" ;
straight_A = mkA "directe" ;
suck_V2 = mkV2 (mkV "suger") ;
swell_V = (mkV "turger");
swim_V = (mkV "natada");
tail_N = mkN "cauda" ;
think_V = mkV "pensar";
throw_V2 = mkV2 (mkV "jectar") ;
tie_V2 = mkV2 (mkV "ligar") ;
today_Adv = mkAdv "hodie" ;
tongue_N = regN "lingua" ;
tooth_N = regN "dente";
turn_V = regV "tornar" ;
uncertain_A = regA "incerte" ;
vomit_V = regV "vomir" ;
wash_V2 = dirV2 (regV "abluer") ;
wet_A = regA "humid" ; ----
wide_A = regA "large" ;
wife_N = regN "sposa";
wind_N = regN "vento" ;
wing_N = regN "ala" ;
wipe_V2 = dirV2 (regV "essugar") ;
worm_N = regN "verme" ;
year_N = regN "anno" ;
-- other_A = regA "altere" ;
tongue_N = mkN "lingua" ;
tooth_N = mkN "dente";
turn_V = mkV "tornar" ;
uncertain_A = mkA "incerte" ;
vomit_V = mkV "vomir" ;
wash_V2 = mkV2 (mkV "abluer") ;
wet_A = mkA "humid" ; ----
wide_A = mkA "large" ;
wife_N = mkN "sposa";
wind_N = mkN "vento" ;
wing_N = mkN "ala" ;
wipe_V2 = mkV2 (mkV "essugar") ;
worm_N = mkN "verme" ;
year_N = mkN "anno" ;
-- other_A = mkA "altere" ;
---- added 4/6/2007
--
oper

View File

@@ -29,23 +29,17 @@ resource ParadigmsIna = open
(Predef=Predef),
Prelude,
MorphoIna,
CatIna
CatIna,
CommonX
in {
--2 Parameters
--
-- To abstract over gender names, we define the following identifiers.
oper
male : Sex = Male ;
female : Sex = Female ;
oper
-- Gender : Type ;
-- There is no grammatical gender in interlingua.
---- To abstract over number names, we define the following.
--
-- Number : Type ;
--
-- singular : Number ;
-- plural : Number ;
-- To abstract over case names, we define the following.
nominative : Case ;
@@ -63,7 +57,7 @@ oper
--2 Nouns
--
-- All nouns are regular, so one should use $regN$ to construct them.
-- All nouns are regular, so one should use $mkN$ to construct them.
--3 Relational nouns
--
@@ -96,6 +90,7 @@ oper
-- Adverbs modifying adjectives and sentences can also be formed.
mkAdA : Str -> AdA ;
mkAdN : Str -> AdA ;
--2 Prepositions
--
@@ -124,20 +119,22 @@ oper
-- I decided to provide the following combinators for forming verbs with
-- complex grammar rules:
prepV2 : Prep -> V -> V2 ;
prepV3 : Prep -> V2 -> V3 ;
dirV2 : V -> V2 ;
mkV2 = overload {
mkV2 : V -> Prep -> V2 = prepV2 ;
mkV2 : V -> V2 = dirV2 ;
} ;
mkV3 : V -> Prep -> Prep -> V3 ;
mkV0 : V -> V0 ;
mkVS : V -> VS ;
-- mkV2S : V -> Prep -> V2S ;
-- mkVV : V -> VV ;
mkV2V : Prep -> Prep -> V -> V2V ;
mkV2S : V -> Prep -> V2S ;
mkVV : V -> VV ;
mkV2V : V -> Prep -> Prep -> V2V ;
mkVA : V -> VA ;
mkV2A : Prep -> Prep -> V -> V2A ;
mkV2A : V -> Prep -> Prep -> V2A ;
mkVQ : V -> VQ ;
mkV2Q : Prep -> V -> V2Q ;
mkV2Q : V -> Prep -> V2Q ;
mkAS : A -> AS ;
-- mkA2S : A -> Prep -> A2S ;
@@ -163,7 +160,7 @@ oper
dative = Dat ;
ablative = Abl ;
regN s = nounReg s ** {lock_N = <>};
mkN s = nounReg s ** {lock_N = <>};
compN : N -> Str -> N;
compN n s = {s = \\x => n.s ! x ++ s; lock_N = <>} ;
@@ -173,7 +170,7 @@ oper
prepN3 : Prep -> N2 -> N3;
prepN2 = \p,n -> n ** {lock_N2 = <> ; p2 = p.s; c2 = p.c} ;
prepN3 = \p,n -> n ** {lock_N3 = <> ; p3 = p.s; c3 = p.c} ;
regN2 n = prepN2 (mkPrep [] genitive) (regN n) ** {lock_N2 = <>};
regN2 n = prepN2 (mkPrep [] genitive) (mkN n) ** {lock_N2 = <>};
----3 Relational common noun phrases
----
@@ -187,12 +184,20 @@ oper
-- cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
-- cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
--
regPN n = regGenPN n;
regGenPN n = {s = n; lock_PN = <>} ;
-- nounPN n = {s = n.s ! singular ; g = n.g ; lock_PN = <>} ;
--
-- mk2A a b = mkAdjective a a a b ** {lock_A = <>} ;
regA a = regAdjective a ** {lock_A = <>} ;
mkPN : Str -> PN = regGenPN;
mkLN : Str -> LN = \s -> lin LN {s=s};
mkGN : Str -> Sex -> GN = \s,g -> lin GN {s=s; g=g};
mkSN = overload {
mkSN : Str -> SN = \s -> lin SN {s=\\_ => s; pl=s};
mkSN : Str -> Str -> Str -> SN = \m,f,pl -> lin SN {s=table {Male=>m; Female=>f}; pl=pl};
} ;
regGenPN : Str -> PN ;
regGenPN s = {s = s; lock_PN = <>} ;
mkA : Str -> A ;
mkA a = regAdjective a ** {lock_A = <>} ;
mkA2 a p = a ** {c2 = casePrep p.s p.c ; lock_A2 = <>} ;
@@ -201,114 +206,49 @@ oper
mkAdv x = ss x ** {lock_Adv = <>} ;
mkAdV x = ss x ** {lock_AdV = <>} ;
mkAdA x = ss x ** {lock_AdA = <>} ;
mkAdN x = ss x ** {lock_AdA = <>} ;
mkPrep p c = ss p ** {c = c; lock_Prep = <>} ;
noPrep = mkPrep [] accusative ;
-- Verb-formation combinators.
regV : Str -> V;
regV s = mkVerb s ** {lock_V = <>};
mkV : Str -> V;
mkV s = mkVerb s ** {lock_V = <>};
prepV2 p v = v ** {c2 = p.c; p2 = p.s ; lock_V2 = <>} ;
prepV3 p v = v ** {c3 = p.c; p3 = p.s ; lock_V3 = <>} ;
dirV2 = prepV2 noPrep ;
prepV2 : V -> Prep -> V2 ;
prepV2 v p = v ** {c2 = p.c; p2 = p.s ; lock_V2 = <>} ;
mkVS v = v ** {lock_VS = <>} ;
-- mkVV v = {
-- s = table {VVF vf => v.s ! vf ; _ => variants {}} ;
-- isAux = False ; lock_VV = <>
-- } ;
mkVQ v = v ** {lock_VQ = <>} ;
dirV2 : V -> V2 ;
dirV2 v = prepV2 v noPrep ;
mkV3 v p1 p2 = v ** {c2 = p1.c; p2 = p1.s ; c3 = p2.c; p3 = p2.s ; lock_V3 = <>} ;
mkVS v = v ** {lock_VS = <>} ;
mkVV v = v ** {lock_VV = <>} ;
mkVQ v = v ** {lock_VQ = <>} ;
V0 : Type = V ;
--- V2S, V2V, V2Q : Type = V2 ;
AS, A2S, AV : Type = A ;
A2V : Type = A2 ;
--
mkV0 v = v ** {lock_V = <>} ;
-- mkV2S v p = prepV2 v p ** {lock_V2 = <>} ;
mkV2V p t v = prepV2 p v ** {s4 = t ; lock_V2V = <>} ;
mkVA v = v ** {lock_VA = <>} ;
mkV2A p2 p3 v = (prepV3 p3 (prepV2 p2 v)) ** {lock_V2A = <>} ;
mkV2Q p v = prepV2 p v ** {lock_V2Q = <>} ;
mkAS v = v ** {lock_A = <>} ;
-- mkA2S v p = mkA2 v p ** {lock_A = <>} ;
mkAV v = v ** {lock_A = <>} ;
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
mkV0 v = v ** {lock_V = <>} ;
mkV2S v p = prepV2 v p ** {lock_V2S = <>} ;
mkV2V v p t = prepV2 v p ** {s4 = t ; lock_V2V = <>} ;
mkVA v = v ** {lock_VA = <>} ;
mkV2A v p2 p3 = mkV3 v p2 p3 ** {lock_V2A = <>} ;
mkV2Q p v = prepV2 p v ** {lock_V2Q = <>} ;
mkAS v = v ** {lock_A = <>} ;
mkAV v = v ** {lock_A = <>} ;
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
-- pre-overload API and overload definitions
regN : Str -> N ;
-- mk2N : (man,men : Str) -> N ;
-- genderN : Gender -> N -> N ;
-- compN : Str -> N -> N ;
--
--
--
-- mk2A : (free,freely : Str) -> A ;
regA : Str -> A ;
--
-- mkA = overload {
-- mkA : Str -> A = regA ;
-- mkA : (fat,fatter : Str) -> A = \fat,fatter ->
-- mkAdjective fat fatter (init fatter + "st") (fat + "ly") ** {lock_A = <>} ;
-- mkA : (good,better,best,well : Str) -> A = \a,b,c,d ->
-- mkAdjective a b c d ** {lock_A = <>}
-- } ;
--
-- compoundA = compoundADeg ;
--
--
-- mk5V : (go, goes, went, gone, going : Str) -> V ;
-- regV : (cry : Str) -> V ;
-- reg2V : (stop, stopped : Str) -> V;
-- irregV : (drink, drank, drunk : Str) -> V ;
-- irreg4V : (run, ran, run, running : Str) -> V ;
--
-- -- Use reg2V instead
-- regDuplV : Str -> V ;
-- -- Use irreg4V instead
-- irregDuplV : (get, got, gotten : Str) -> V ;
--
mkN : Str -> N ;
------ obsolete
--
---- Comparison adjectives may two more forms.
--
-- ADeg : Type ;
--
-- mkADeg : (good,better,best,well : Str) -> ADeg ;
--
---- The regular pattern recognizes two common variations:
---- "-e" ("rude" - "ruder" - "rudest") and
---- "-y" ("happy - happier - happiest - happily")
--
-- regADeg : Str -> ADeg ; -- long, longer, longest
--
---- However, the duplication of the final consonant is nor predicted,
---- but a separate pattern is used:
--
-- duplADeg : Str -> ADeg ; -- fat, fatter, fattest
--
---- If comparison is formed by "more", "most", as in general for
---- long adjective, the following pattern is used:
--
-- compoundADeg : A -> ADeg ; -- -/more/most ridiculous
--
---- From a given $ADeg$, it is possible to get back to $A$.
--
-- adegA : ADeg -> A ;
--
--
regPN : Str -> PN ;
regGenPN : Str -> PN ; -- John, John's
--
---- Sometimes you can reuse a common noun as a proper name, e.g. "Bank".
--
-- nounPN : N -> PN ;
mkInterj : Str -> Interj = \s -> lin Interj {s=s};
mkVoc : Str -> Voc = variants {} ;
} ;

View File

@@ -4,7 +4,6 @@ concrete StructuralIna of Structural = CatIna **
flags optimize=all ;
oper
--- mkPrep = P.mkPrep;
pp : Str -> Prep = \s-> P.mkPrep s Acc;
lin
above_Prep = pp "supra";
@@ -22,8 +21,8 @@ concrete StructuralIna of Structural = CatIna **
but_PConj = ss "sed" ;
by8agent_Prep = pp "per" ;
by8means_Prep = pp "per" ;
can_VV = P.regV "poter";
can8know_VV = P.regV "saper";
can_VV = P.mkVV (P.mkV "poter");
can8know_VV = P.mkVV (P.mkV "saper");
during_Prep = pp "durante" ;
either7or_DConj = sd2 "o" "o" ** {n = Sg} ;
everybody_NP = regNP "totos" ;
@@ -49,7 +48,7 @@ concrete StructuralIna of Structural = CatIna **
more_CAdv = {s = "plus" ; p = "que"} ;
most_Predet = ss ("le"++"plus");
much_Det = mkDeterminer Sg "tanto" ;
must_VV = P.regV "deber";
must_VV = P.mkV "deber";
no_Utt = ss "no" ;
on_Prep = P.mkPrep "super" Acc;
only_Predet = ss "unic" ;
@@ -81,8 +80,8 @@ concrete StructuralIna of Structural = CatIna **
too_AdA = ss "alsi" ;
to_Prep = P.mkPrep "" Dat;
under_Prep = pp "infra" ;
very_AdA = ss "multo" ;
want_VV = P.regV "want" ;
very_AdA = P.mkAdA "multo" ;
want_VV = P.mkVV (P.mkV "want") ;
we_Pron = mkPron "nos" "nos" "nostre" Pp1;
whatPl_IP = mkIP "que" Pl ;
whatSg_IP = mkIP "que" Sg ;