diff --git a/src/interlingua/CatIna.gf b/src/interlingua/CatIna.gf index b5bbdecfc..2c0033b24 100644 --- a/src/interlingua/CatIna.gf +++ b/src/interlingua/CatIna.gf @@ -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} ; } diff --git a/src/interlingua/DocumentationIna.gf b/src/interlingua/DocumentationIna.gf new file mode 100644 index 000000000..1a02a8cb2 --- /dev/null +++ b/src/interlingua/DocumentationIna.gf @@ -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="
Definición:"++t.s++d.s++"
"}; + MkDefinitionEx t d e = {s="Definición:"++t.s++d.s++"
Ejemplo:"++e.s++"
"}; + +lin + MkDocument b i e = ss (i.s1 ++ ""++b.s++"
" ++ 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 +-} + +} diff --git a/src/interlingua/LangIna.gf b/src/interlingua/LangIna.gf index 58fe6e92c..5db8de3c7 100644 --- a/src/interlingua/LangIna.gf +++ b/src/interlingua/LangIna.gf @@ -2,7 +2,8 @@ concrete LangIna of Lang = GrammarIna, - LexiconIna + LexiconIna, + DocumentationIna ** { flags startcat = Phr ; unlexer = text ; lexer = text ; diff --git a/src/interlingua/LexiconIna.gf b/src/interlingua/LexiconIna.gf index 7876b69da..60fdbcd03 100644 --- a/src/interlingua/LexiconIna.gf +++ b/src/interlingua/LexiconIna.gf @@ -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 diff --git a/src/interlingua/ParadigmsIna.gf b/src/interlingua/ParadigmsIna.gf index 89a5bd838..1bb117392 100644 --- a/src/interlingua/ParadigmsIna.gf +++ b/src/interlingua/ParadigmsIna.gf @@ -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 {} ; } ; diff --git a/src/interlingua/StructuralIna.gf b/src/interlingua/StructuralIna.gf index 9cd43e2dd..e574963e7 100644 --- a/src/interlingua/StructuralIna.gf +++ b/src/interlingua/StructuralIna.gf @@ -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 ;