diff --git a/lib/resource/french/SyntaxFre.gf b/lib/resource/french/SyntaxFre.gf index 0fbdcaf4a..f1c98d8cb 100644 --- a/lib/resource/french/SyntaxFre.gf +++ b/lib/resource/french/SyntaxFre.gf @@ -335,4 +335,6 @@ oper ouiPhr = ss ["Oui ."] ; nonPhr = ss ["Non ."] ; --- and also Si! + negNe = elisNe ; negPas = "pas" ; + } diff --git a/lib/resource/french/TimeFre.gf b/lib/resource/french/TimeFre.gf index a7ab16256..c0915ff37 100644 --- a/lib/resource/french/TimeFre.gf +++ b/lib/resource/french/TimeFre.gf @@ -13,7 +13,7 @@ DayDate day = ss (day.s ! singular) ; DayTimeDate day time = ss (day.s ! singular ++ "à" ++ time.s) ; FormalTime = infixSS "heures" ; -PastTime h m = ss (m.s ++ "et" ++ h.s) ; +PastTime h m = ss (h.s ++ "et" ++ m.s) ; ToTime h m = ss (h.s ++ "moins" ++ m.s) ; ExactTime h = ss (h.s ++ "exactement") ; diff --git a/lib/resource/italian/BasicIta.gf b/lib/resource/italian/BasicIta.gf index 96387dc35..f06af0b28 100644 --- a/lib/resource/italian/BasicIta.gf +++ b/lib/resource/italian/BasicIta.gf @@ -33,30 +33,30 @@ lin bread_N = regN "pane" ; --V break_V2 = dirV2 (regV "casser") ; broad_ADeg = regADeg "largo" ; - brother_N2 = deN2 (regN "fratello") ; + brother_N2 = diN2 (regN "fratello") ; brown_ADeg = regADeg "marrone" ; butter_N = regN "burro" ; buy_V2 = dirV2 (regV "comprare") ; ----- camera_N = compN (regN "appareil" masculine) ["de photo"] ; ----- cap_N = regN "casquette" ; + camera_N = mkN ["macchina fotografica"]["macchine fotografiche"] feminine ; --- + cap_N = regN "berretta" ; car_N = regN "macchina" ; ----- carpet_N = regN "tapis" ; + carpet_N = regN "tappeto" ; cat_N = regN "gatto" ; ----- ceiling_N = regN "plafond" ; ----- chair_N = regN "chaise" ; + ceiling_N = regN "soffitto" ; + chair_N = regN "sedia" ; cheese_N = regN "formaggio" ; child_N = regN "bambino" ; church_N = regN "chiesa" ; city_N = regN "città" ; clean_ADeg = regADeg "proprio" ; - clever_ADeg = regADeg "sapiente" ; ---- + clever_ADeg = regADeg "saggio" ; --V close_V2 = dirV2 (regV "") ; --V coat_N = regN "manteau" ; cold_ADeg = regADeg "freddo" ; --V come_V = venir_V ; computer_N = regN "computer" ; country_N = regN "paese" ; - cousin_N = regN "cugino" ; ---- cousine + cousin_N = regN "cugino" ; --- cousine cow_N = regN "vacca" ; --V die_V = mourir_V ; dirty_ADeg = regADeg "sporco" ; @@ -68,11 +68,11 @@ lin eat_V2 = dirV2 (regV "mangiare") ; --V enemy_N = regN "ennemi" ; factory_N = regN "stabilimento" ; - father_N2 = deN2 (regN "padre" masculine) ; + father_N2 = diN2 (regN "padre") ; --V fear_VS = mkVS (v2V craindre_V2) ; find_V2 = dirV2 (regV "trovare") ; fish_N = regN "pesca" ; ----- floor_N = regN "plancher" ; + floor_N = regN "pavimento" ; forget_V2 = dirV2 (regV "dimenticare") ; fridge_N = regN "frigorifero" ; friend_N = regN "amico" ; @@ -80,7 +80,7 @@ lin fun_AV = mkAV (regA "divertente") genitive ; garden_N = regN "giardino" ; girl_N = regN "ragazza" ; ----- glove_N = regN "gant" ; + glove_N = regN "guanto" ; gold_N = regN "oro" ; good_ADeg = prefADeg (mkADeg (regA "buono") (mkA "migliore" "migliore" "migliori" "migliori" "meglio")) ; @@ -100,7 +100,7 @@ lin industry_N = regN "industria" ; iron_N = regN "ferro" ; king_N = regN "ré" ; ---V know_V2 = connaître_V2 ; ---- savoir_V2 : VS +--V know_V2 = connaître_V2 ; --- savoir_V2 : VS lake_N = regN "lago" ; lamp_N = regN "lampa" ; --V learn_V2 = apprendre_V2 ; @@ -118,7 +118,7 @@ lin meat_N = femN (regN "carne") ; milk_N = regN "latte" ; moon_N = regN "luna" ; - mother_N2 = deN2 (femN (regN "madre")) ; + mother_N2 = diN2 (femN (regN "madre")) ; mountain_N = regN "montagna" ; music_N = regN "musica" ; narrow_ADeg = regADeg "stretto" ; @@ -126,105 +126,105 @@ lin newspaper_N = regN "giornale" ; oil_N = regN "olio" ; old_ADeg = - prefADeg (regADeg "veccio") ; ---- vieil + prefADeg (regADeg "vecchio") ; ---- vieil --V open_V2 = ouvrir_V2 ; --V paint_V2A = mkV2A (v2V peindre_V2) accusative ; paper_N = regN "carta" ; peace_N = femN (regN "pace") ; - pen_N = regN "stylo" ; - planet_N = regN "planète" ; - plastic_N = regN "plastic" ; - play_V2 = dirV2 (regV "jouer") ; - policeman_N = regN "policier" ; - priest_N = regN "prêtre" ; - probable_AS = mkAS (regA "probable") ; - queen_N = regN "reine" ; - radio_N = regN "radio" ; - rain_V0 = mkV0 (pleuvoir_V) ; - read_V2 = lire_V2 ; - red_ADeg = regADeg "rouge" ; - religion_N = regN "religion" ; - restaurant_N = regN "restaurant" ; - river_N = regN "rivière" ; - rock_N = regN "rocher" ; - roof_N = regN "toit" ; - rubber_N = regN "caoutchuc" ; - run_V = v2V courir_V2 ; - say_VS = mkVS (v2V dire_V2) ; - school_N = regN "école" ; - science_N = regN "science" ; - sea_N = regN "mer" ; - seek_V2 = dirV2 (regV "chercher") ; - see_V2 = voir_V2 ; - sell_V3 = dirV3 (v2V vendre_V2) dative ; - send_V3 = dirV3 (v2V envoyer_V2) dative ; - sheep_N = regN "mouton" ; - ship_N = regN "bateau" ; - shirt_N = regN "chemise" ; - shoe_N = regN "chaussure" ; - shop_N = regN "magasin" ; - short_ADeg = regADeg "court" ; ---- bref - silver_N = regN "argent" ; - sister_N = regN "soeur" ; - sleep_V = v2V dormir_V2 ; - small_ADeg = prefADeg (regADeg "petit") ; - snake_N = regN "serpent" ; - sock_N = regN "chaussette" ; - speak_V2 = dirV2 (regV "parler") ; - star_N = regN "étoile" ; - steel_N = regN "acier" ; - stone_N = regN "pierre" ; - stove_N = regN "four" ; - student_N = regN "étudiant" ; - stupid_ADeg = regADeg "stupide" ; - sun_N = regN "soleil" ; - switch8off_V2 = éteindre_V2 ; - switch8on_V2 = dirV2 (regV "allumer") ; ---- - table_N = regN "table" ; - talk_V3 = mkV3 (regV "parler") dative genitive ; - teacher_N = regN "professeur" ; - teach_V2 = dirV2 (regV "enseigner") ; - television_N = regN "télévision" ; - thick_ADeg = compADeg (mkA "épais" "épaisse" "épais" "épaissement") ; - thin_ADeg = regADeg "fin" ; - train_N = regN "train" ; - travel_V = regV "voyager" ; - tree_N = regN "arbre" ; - ---- trousers_N = regN "pantalon" ; - ugly_ADeg = regADeg "laide" ; - understand_V2 = comprendre_V2 ; - university_N = regN "université" ; - village_N = regN "village" ; - wait_V2 = attendre_V2 ; ---- dative? - walk_V = regV "marcher" ; - warm_ADeg = regADeg "chaud" ; - war_N = regN "guerre" ; - watch_V2 = dirV2 (regV "regarder") ; - water_N = regN "eau" ; - white_ADeg = compADeg (mkA "blanc" "blanche" "blancs" "blanchement") ; - window_N = regN "fenêtre" ; - wine_N = regN "vin" ; - win_V2 = dirV2 (regV "gagner") ; ---- vaincre - woman_N = regN "femme" ; - wonder_VQ = mkVQ (regV "étonner") ; ----- s'étonner - wood_N = regN "bois" ; - write_V2 = écrire_V2 ; - yellow_ADeg = regADeg "jaune" ; - young_ADeg = prefADeg (regADeg "jeune") ; + pen_N = regN "penna" ; + planet_N = regN "pianeta" ; + plastic_N = regN "plastica" ; + play_V2 = dirV2 (regV "giocare") ; + policeman_N = regN "carabiniere" ; + priest_N = regN "prete" ; + probable_AS = mkAS (regA "probabile") ; + queen_N = regN "regina" ; + radio_N = mkN "radio" "radio" feminine ; +--V rain_V0 = mkV0 (pleuvoir_V) ; +--V read_V2 = lire_V2 ; + red_ADeg = regADeg "rosso" ; + religion_N = femN (regN "religione") ; + restaurant_N = regN "ristorante" ; + river_N = regN "fiume" ; + rock_N = regN "roccia" ; + roof_N = regN "tetto" ; + rubber_N = regN "gomma" ; +--V run_V = v2V courir_V2 ; +--V say_VS = mkVS (v2V dire_V2) ; + school_N = regN "scuola" ; + science_N = regN "scienza" ; + sea_N = regN "mare" ; + seek_V2 = dirV2 (regV "cercare") ; +--V see_V2 = voir_V2 ; +--V sell_V3 = dirV3 (v2V vendre_V2) dative ; + send_V3 = dirV3 (regV "mandare") dative ; +--V sheep_N = regN "mouton" ; + ship_N = femN (regN "nave") ; + shirt_N = regN "camicia" ; + shoe_N = regN "scarpa" ; + shop_N = regN "magazzino" ; + short_ADeg = regADeg "corto" ; --- breve + silver_N = regN "argento" ; + sister_N = regN "sorella" ; +--V sleep_V = v2V dormir_V2 ; + small_ADeg = prefADeg (regADeg "piccolo") ; +--V snake_N = regN "serpent" ; +--V sock_N = regN "chaussette" ; + speak_V2 = dirV2 (regV "parlare") ; + star_N = regN "stella" ; + steel_N = regN "acciaio" ; + stone_N = regN "sasso" ; + stove_N = regN "forno" ; + student_N = regN "studente" ; + stupid_ADeg = regADeg "stupido" ; + sun_N = regN "sole" ; +--V switch8off_V2 = éteindre_V2 ; + switch8on_V2 = dirV2 (regV "allumare") ; ---- + table_N = regN "tavola" ; --- tavolo + talk_V3 = mkV3 (regV "parlare") dative genitive ; + teacher_N = regN "professore" ; + teach_V2 = dirV2 (regV "insegnare") ; + television_N = femN (regN "televisione") ; + thick_ADeg = regADeg "grosso" ; + thin_ADeg = regADeg "sottile" ; + train_N = regN "treno" ; + travel_V = regV "viaggare" ; + tree_N = regN "albero" ; + --- trousers_N = regN "pantalon" ; + ugly_ADeg = regADeg "brutto" ; + understand_V2 = dirV2 (regV "capire") ; + university_N = regN "università" ; + village_N = regN "paese" ; + wait_V2 = mkV2 (regV "aspettare") dative ; + walk_V = regV "camminare" ; + warm_ADeg = regADeg "caldo" ; + war_N = regN "guerra" ; + watch_V2 = dirV2 (regV "guardare") ; + water_N = regN "acqua" ; + white_ADeg = compADeg (regA "bianco") ; + window_N = regN "finestra" ; + wine_N = regN "vino" ; +--V win_V2 = dirV2 (vincere) ; + woman_N = regN "donna" ; + wonder_VQ = mkVQ (regV "domandare") ; ---- domandarsi + wood_N = regN "legno" ; +--V write_V2 = écrire_V2 ; + yellow_ADeg = regADeg "giallo" ; + young_ADeg = prefADeg (regADeg "giovane") ; - do_V2 = faire_V2 ; - now_Adv = mkAdv "maintenant" ; - already_Adv = mkAdv "déjà" ; - song_N = regN "chanson" ; - add_V3 = dirV3 (regV "ajouter") dative ; - number_N = regN "nombre" ; ---- numéro - put_V2 = mettre_V2 ; - stop_V = regV "arrêter" ; ---- s'arrêter - jump_V = regV "sauter" ; - here_Adv = mkAdv "ici" ; - here7to_Adv = mkAdv "ici" ; - here7from_Adv = mkAdv ["d'ici"] ; - there_Adv = mkAdv "là" ; ---- y, là-bas - there7to_Adv = mkAdv "là" ; --- y - there7from_Adv = mkAdv ["de là"] ; ---- en +--V do_V2 = faire_V2 ; + now_Adv = mkAdv "adesso" ; + already_Adv = mkAdv "già" ; + song_N = femN (regN "canzone") ; +--V add_V3 = dirV3 (regV "ajouter") dative ; + number_N = regN "numero" ; +--V put_V2 = mettre_V2 ; + stop_V = regV "fermare" ; ---- fermarsi + jump_V = regV "saltare" ; + here_Adv = mkAdv "quì" ; + here7to_Adv = mkAdv "quì" ; + here7from_Adv = mkAdv ["da quì"] ; + there_Adv = mkAdv "lì" ; + there7to_Adv = mkAdv "lì" ; + there7from_Adv = mkAdv ["da lì"] ; } ; diff --git a/lib/resource/italian/CountryIta.gf b/lib/resource/italian/CountryIta.gf new file mode 100644 index 000000000..88aea9128 --- /dev/null +++ b/lib/resource/italian/CountryIta.gf @@ -0,0 +1,25 @@ +concrete CountryIta of Country = open CategoriesIta, ParadigmsIta in { + + lincat + Country = PN ; + Nationality = A ; + Language = N ; + + lin + Denmark = mkPN "Danimarca" feminine ; + England = mkPN "Inghilterra" feminine ; + Finland = mkPN "Finlandia" feminine ; + France = mkPN "Francia" feminine ; + Germany = mkPN "Germania" feminine ; + Italy = mkPN "Italie" feminine ; + Norway = mkPN "Norvegia" feminine ; + Russia = mkPN "Russia" feminine ; + Spain = mkPN "Spagna" feminine ; + Sweden = mkPN "Svezia" feminine ; + + Danish = regA "danese" ; + English = regA "inglese" ; + + DanishLang = regN "danese" ; + EnglishLang = regN "inglese" ; +} ; diff --git a/lib/resource/italian/LangIta.gf b/lib/resource/italian/LangIta.gf new file mode 100644 index 000000000..c36a426e5 --- /dev/null +++ b/lib/resource/italian/LangIta.gf @@ -0,0 +1,22 @@ +--# -path=.:../romance:../abstract:../../prelude + +concrete LangIta of Lang = + RulesIta, + ClauseIta, + StructuralIta, + BasicIta, + TimeIta, + CountryIta + + ** open Prelude, ParadigmsIta in { + +lin + AdvDate d = prefixSS "il" d ; + AdvTime t = prefixSS "alle" t ; + NWeekday w = w ; + PNWeekday w = mkPN (w.s ! singular) w.g ; + + PNCountry x = x ; + ANationality x = x ; + NLanguage x = x ; +} diff --git a/lib/resource/italian/MorphoIta.gf b/lib/resource/italian/MorphoIta.gf index 2dc772371..c4691fd2e 100644 --- a/lib/resource/italian/MorphoIta.gf +++ b/lib/resource/italian/MorphoIta.gf @@ -84,7 +84,7 @@ oper "e" => {s = numForms vino (vin + "i") ; g = Masc} ; "à" | "ù" => {s = numForms vino vino - ; g = Fem} + ; g = Fem} ; _ => {s = numForms vino vino ; g = Masc} } ; @@ -471,6 +471,7 @@ param Pred = pred | indip ; oper mkTal : Str -> Str -> Str -> {s : DForm => Str} = \två -> \tolv -> \tjugo -> {s = table {ental _ => två ; ton => tolv ; tiotal => tjugo}} ; -oper spl : Str -> {s : Str ; n : Number} = \s -> {s = s ; n = Pl} ; +oper spl : Str -> {s : Gender => Str ; n : Number} = \s -> {s = \\_ => + s ; n = Pl} ; oper mille : Number => Str = table {Sg => "mille" ; Pl => "mila"} ; } diff --git a/lib/resource/italian/NumeralsIta.gf b/lib/resource/italian/NumeralsIta.gf index e1d42df35..ea5f07c63 100644 --- a/lib/resource/italian/NumeralsIta.gf +++ b/lib/resource/italian/NumeralsIta.gf @@ -1,11 +1,18 @@ -concrete NumeralsIta of Numerals = open Prelude, TypesIta, MorphoIta in { +concrete NumeralsIta of Numerals = open Prelude, TypesIta, MorphoIta, SyntaxIta in { -lincat Digit = {s : DForm => Str} ; -lincat Sub10 = {s : DForm => Str ; n : Number} ; -lincat Sub100 = {s : Str ; n : Number} ; -lincat Sub1000 = {s : Str ; n : Number} ; -lincat Sub1000000 = {s : Str} ; +lincat +--Digit = {s : DForm => Str} ; +--lincat Sub10 = {s : DForm => Str ; n : Number} ; +--lincat Sub100 = {s : Str ; n : Number} ; +--lincat Sub1000 = {s : Str ; n : Number} ; +--lincat Sub1000000 = {s : Str} ; + Numeral = {s : Gender => Str ; n : Number} ; + Digit = {s : DForm => Str} ; + Sub10 = {s : DForm => Gender => Str ; n : Number} ; + Sub100 = {s : Gender => Str ; n : Number} ; + Sub1000 = {s : Gender => Str ; n : Number} ; + Sub1000000 = {s : Gender => Str ; n : Number} ; lin num x = x ; @@ -19,19 +26,20 @@ lin n7 = mkTal "sette" "diciassette" "settanta" ; lin n8 = mkTal "otto" "diciotto" "ottanta" ; lin n9 = mkTal "nove" "diciannove" "novanta" ; -lin pot01 = {s = table {ental pred => [] ; _ => "uno"} ; n = Sg} ; -lin pot0 d = {s = table {f => d.s ! f} ; n = Pl} ; +lin pot01 = {s = table { + ental pred => \\_ => [] ; _ => genForms "uno" "una"} ; n = Sg} ; +lin pot0 d = {s =\\f,g => d.s ! f ; n = Pl} ; lin pot110 = spl "dieci" ; lin pot111 = spl "undici" ; lin pot1to19 d = spl (d.s ! ton) ; lin pot0as1 n = {s = n.s ! ental indip ; n = n.n} ; lin pot1 d = spl (d.s ! tiotal) ; -lin pot1plus d e = spl (d.s ! tiotal ++ e.s ! ental indip) ; -lin pot1as2 n = {s = n.s ; n = n.n} ; -lin pot2 d = spl (d.s ! ental pred ++ "cento") ; -lin pot2plus d e = spl (d.s ! ental pred ++ "cento" ++ e.s) ; -lin pot2as3 n = {s = n.s ; n = n.n} ; -lin pot3 n = ss (n.s ++ mille ! n.n) ; -lin pot3plus n m = ss (n.s ++ mille ! n.n ++ m.s) ; +lin pot1plus d e = {s = \\g => d.s ! tiotal ++ e.s ! ental indip ! g ; n = Pl} ; +lin pot1as2 n = n ; +lin pot2 d = spl (d.s ! ental pred ! Masc ++ "cento") ; +lin pot2plus d e = {s = \\g => d.s ! ental pred ! Masc ++ "cento" ++ e.s ! g ; n = Pl} ; +lin pot2as3 n = n ; +lin pot3 n = spl (n.s ! Masc ++ mille ! n.n) ; +lin pot3plus n m = {s = \\g => n.s ! Masc ++ mille ! n.n ++ m.s ! g ; n = Pl} ; -} \ No newline at end of file +} diff --git a/lib/resource/italian/StructuralIta.gf b/lib/resource/italian/StructuralIta.gf index 898106566..c37abbf21 100644 --- a/lib/resource/italian/StructuralIta.gf +++ b/lib/resource/italian/StructuralIta.gf @@ -1,113 +1,92 @@ --# -path=.:../romance:../abstract:../../prelude concrete StructuralIta of Structural = CategoriesIta, NumeralsIta ** - open SyntaxIta, MorphoIta, Prelude in { + open SyntaxIta, MorphoIta, BeschIta, Prelude in { lin - INP = pronNounPhrase pronJe ; - ThouNP = pronNounPhrase pronTu ; - HeNP = pronNounPhrase pronIl ; - SheNP = pronNounPhrase pronElle ; - WeNumNP n = pronNounPhrase (pronWithNum pronNous n) ; - YeNumNP n = pronNounPhrase (pronWithNum pronVous n) ; - YouNP = pronNounPhrase pronVous ; - TheyNP = pronNounPhrase pronIls ; --- Here is a point where the API is really inadequate for French, --- which distinguishes between masculine and feminine "they". --- The following solution is not attractive. - ---- TheyNP = pronNounPhrase (variants {pronIls ; pronElles}) ; - - ThisNP = mkNameNounPhrase ["questo"] Masc ; - ThatNP = mkNameNounPhrase ["quello"] Masc ; - TheseNumNP n = mkNameNounPhrase ("questi" ++ n.s ! Masc) Masc ; - ThoseNumNP n = mkNameNounPhrase ("quelli" ++ n.s ! Masc) Masc ; - - ItNP = pronNounPhrase pronIl ; - - EveryDet = chaqueDet ; - AllMassDet = mkDeterminer singular "tutto" "tutta" ; - AllNumDet = mkDeterminerNum plural ["tutti i"] ["tutte le"] ; --- gli - WhichDet = quelDet ; - WhichNumDet = mkDeterminerNum plural "quali" "quali" ; - MostsDet = plupartDet ; - MostDet = mkDeterminer1 singular (["la maggior parte"] ++ elisDe) ; --- de - SomeDet = mkDeterminer1 singular "qualche" ; - SomeNumDet = mkDeterminerNum plural "alcuni" "alcune" ; - NoDet = mkDeterminer singular "nessuno" "nessuna" ; --- non - NoNumDet = mkDeterminerNum plural "nessuni" "nessune" ; ---- ?? - AnyDet = mkDeterminer1 singular "qualche" ; --- - AnyNumDet = mkDeterminerNum plural "alcuni" "alcune" ; --- - ManyDet = mkDeterminer plural "molti" "molte" ; - MuchDet = mkDeterminer1 singular "molto" ; - ThisDet = mkDeterminer singular "questo" "questa" ; - ThatDet = mkDeterminer singular "quello" "quella" ; - TheseNumDet = mkDeterminerNum plural "questi" "queste" ; --- ci - ThoseNumDet = mkDeterminerNum plural "quelli" "quelle" ; --- quegli - - UseNumeral n = {s = \\_ => n.s} ; ---- gender - - HowIAdv = commentAdv ; - WhenIAdv = quandAdv ; - WhereIAdv = ouAdv ; - WhyIAdv = pourquoiAdv ; - - AndConj = etConj ; - OrConj = ouConj ; - BothAnd = etetConj ; - EitherOr = ououConj ; - NeitherNor = niniConj ; --- requires ne ! - IfSubj = siSubj ; - WhenSubj = quandSubj ; - - PhrYes = ouiPhr ; - PhrNo = nonPhr ; --- and also Si! - - VeryAdv = ss "molto" ; - TooAdv = ss "troppo" ; - OtherwiseAdv = ss "altramente" ; - ThereforeAdv = ss "quindi" ; - - EverybodyNP = normalNounPhrase (\\c => prepCase c ++ "tutti") Masc Pl ; - SomebodyNP = mkNameNounPhrase ["qualcuno"] Masc ; - NobodyNP = mkNameNounPhrase ["nessuno"] Masc ; --- ne - EverythingNP = mkNameNounPhrase ["tutto"] Masc ; - SomethingNP = mkNameNounPhrase ["qualche cosa"] Masc ; - NothingNP = mkNameNounPhrase ["niente"] Masc ; --- ne - - CanVV = mkVerbVerbDir (verbPres (potere_72 "potere") AHabere) ; - CanKnowVV = mkVerbVerbDir (verbPres (sapere_81 "sapere") AHabere) ; - MustVV = mkVerbVerbDir (verbPres (dovere_50 "dovere") AHabere) ; - WantVV = mkVerbVerbDir (verbPres (volere_99 "volere") AHabere) ; - - EverywhereNP = ss "dappertutto" ; - SomewhereNP = ss ["qualche parte"] ; --- ne - pas - NowhereNP = ss ["nessun parte"] ; - - AlthoughSubj = ss "benché" ** {m = Con} ; - - AlmostAdv = ss "quasi" ; - QuiteAdv = ss "assai" ; - - InPrep = justCase (CPrep P_in) ; - OnPrep = justCase (CPrep P_su) ; - ToPrep = justCase dative ; --- - ThroughPrep = justPrep "per" ; - AbovePrep = justPrep "sopra" ; - UnderPrep = justPrep "sotto" ; - InFrontPrep = justPrep "davanti" ; - BehindPrep = justPrep "dietro" ; - BetweenPrep = justPrep "tra" ; - FromPrep = justCase (CPrep P_da) ; - BeforePrep = justPrep "prima" ; - DuringPrep = justPrep "durante" ; - AfterPrep = justPrep "dopo" ; - WithPrep = justCase (CPrep P_con) ; - WithoutPrep = justPrep "senza" ; - ByMeansPrep = justPrep "per" ; - PossessPrep = justCase genitive ; - PartPrep = justCase genitive ; --- - AgentPrep = justCase (CPrep P_da) ; + UseNumeral n = {s = \\g => n.s !g ; n = n.n} ; + above_Prep = justPrep "sopra" ; + after_Prep = justPrep "dopo" ; + all8mass_Det = mkDeterminer singular "tutto" "tutta" ; + all_NDet = mkDeterminerNum ["tutti i"] ["tutte le"] ; --- gli + almost_Adv = ss "quasi" ; + although_Subj = ss "benché" ** {m = Con} ; + and_Conj = etConj ; + because_Subj = ss "perché" ** {m = Ind} ; + before_Prep = justPrep "prima" ; + behind_Prep = justPrep "dietro" ; + between_Prep = justPrep "tra" ; + both_AndConjD = etetConj ; + by8agent_Prep = justCase (CPrep P_da) ; + by8means_Prep = justPrep "per" ; + can8know_VV = mkVerbVerbDir (verbPres (sapere_78 "sapere") AHabere) ; + can_VV = mkVerbVerbDir (verbPres (potere_69 "potere") AHabere) ; + during_Prep = justPrep "durante" ; + either8or_ConjD = ououConj ; + everybody_NP = normalNounPhrase (\\c => prepCase c ++ "tutti") Masc Pl ; + every_Det = chaqueDet ; + everything_NP = mkNameNounPhrase ["tutto"] Masc ; + everywhere_Adv = ss "dappertutto" ; + from_Prep = justCase (CPrep P_da) ; + he_NP = pronNounPhrase pronIl ; + how_IAdv = commentAdv ; + how8many_IDet = {s = genForms "quanti" "quante" ; n = Pl} ; + if_Subj = siSubj ; + in8front_Prep = justPrep "davanti" ; + i_NP = pronNounPhrase pronJe ; + in_Prep = justCase (CPrep P_in) ; + it_NP = pronNounPhrase pronIl ; + many_Det = mkDeterminer plural "molti" "molte" ; + most8many_Det = plupartDet ; + most_Det = mkDeterminer1 singular (["la maggior parte"] ++ elisDe) ; --- de + much_Det = mkDeterminer1 singular "molto" ; + must_VV = mkVerbVerbDir (verbPres (dovere_47 "dovere") AHabere) ; + no_Phr = nonPhr ; --- and also Si! + on_Prep = justCase (CPrep P_su) ; + or_Conj = ouConj ; + otherwise_Adv = ss "altramente" ; + part_Prep = justCase genitive ; --- + possess_Prep = justCase genitive ; + quite_Adv = ss "assai" ; + she_NP = pronNounPhrase pronElle ; + so_Adv = ss "così" ; + somebody_NP = mkNameNounPhrase ["qualcuno"] Masc ; + some_Det = mkDeterminer1 singular "qualche" ; + some_NDet = mkDeterminerNum "alcuni" "alcune" ; + something_NP = mkNameNounPhrase ["qualche cosa"] Masc ; + somewhere_Adv = ss ["qualche parte"] ; --- ne - pas + that_Det = mkDeterminer singular "quello" "quella" ; + that_NP = mkNameNounPhrase ["quello"] Masc ; + therefore_Adv = ss "quindi" ; + these_NDet = mkDeterminerNum "questi" "queste" ; --- ci + they_NP = pronNounPhrase pronIls ; + they8fem_NP = pronNounPhrase pronIls ; + this_Det = mkDeterminer singular "questo" "questa" ; + this_NP = mkNameNounPhrase ["questo"] Masc ; + those_NDet = mkDeterminerNum "quelli" "quelle" ; --- quegli + thou_NP = pronNounPhrase pronTu ; + through_Prep = justPrep "per" ; + too_Adv = ss "troppo" ; + to_Prep = justCase dative ; --- + under_Prep = justPrep "sotto" ; + very_Adv = ss "molto" ; + want_VV = mkVerbVerbDir (verbPres (volere_96 "volere") AHabere) ; + we_NP = pronNounPhrase pronNous ; + what8one_IP = intPronWhat singular ; + what8many_IP = intPronWhat plural ; + when_IAdv = quandAdv ; + when_Subj = quandSubj ; + where_IAdv = ouAdv ; + which8many_IDet = mkDeterminerNum "quali" "quali" ** {n = Pl} ; + which8one_IDet = quelDet ; + who8one_IP = intPronWho singular ; + who8many_IP = intPronWho plural ; + why_IAdv = pourquoiAdv ; + without_Prep = justPrep "senza" ; + with_Prep = justCase (CPrep P_con) ; + ye_NP = pronNounPhrase pronVous ; + yes_Phr = ouiPhr ; + you_NP = pronNounPhrase pronVous ; } diff --git a/lib/resource/italian/SyntaxIta.gf b/lib/resource/italian/SyntaxIta.gf index 447341a12..8538badd9 100644 --- a/lib/resource/italian/SyntaxIta.gf +++ b/lib/resource/italian/SyntaxIta.gf @@ -145,6 +145,8 @@ oper lequel.s ! RComplex g n c } ; + pronIl = MorphoIta.pronIl ; + -- Interrogative pronouns nounIntPron = \n, mec -> @@ -263,5 +265,7 @@ oper ouiPhr = ss ["Sì ."] ; nonPhr = ss ["No ."] ; + negNe = "non" ; negPas = [] ; + } diff --git a/lib/resource/italian/TimeIta.gf b/lib/resource/italian/TimeIta.gf new file mode 100644 index 000000000..3629b7964 --- /dev/null +++ b/lib/resource/italian/TimeIta.gf @@ -0,0 +1,32 @@ +concrete TimeIta of Time = NumeralsIta ** + open Prelude, MorphoIta, CategoriesIta, ParadigmsIta in { + +lincat +Date = SS ; +Weekday = N ; +Hour = SS ; +Minute = SS ; +Time = SS ; + +lin +DayDate day = ss (day.s ! singular) ; +DayTimeDate day time = ss (day.s ! singular ++ "alle" ++ time.s) ; + +FormalTime h m = ss ("alle" ++ h.s ++ "e" ++ m.s) ; +PastTime h m = ss ("alle" ++ h.s ++ "e" ++ h.s) ; +ToTime h m = ss ("alle" ++ h.s ++ "meno" ++ m.s) ; +ExactTime h = ss (h.s ++ "esattamento") ; + +NumHour n = ss (n.s ! feminine) ; +NumMinute n = ss (n.s ! feminine) ; + +monday = regN "lunedì" ; +tuesday = regN "martedì" ; +wednesday = regN "mercoledì" ; +thursday = regN "giovedì" ; +friday = regN "venerdì" ; +saturday = regN "sabato" ; +sunday = regN "domenica" ; + + +} ; diff --git a/lib/resource/romance/SyntaxRomance.gf b/lib/resource/romance/SyntaxRomance.gf index 78b33a05d..b924424f3 100644 --- a/lib/resource/romance/SyntaxRomance.gf +++ b/lib/resource/romance/SyntaxRomance.gf @@ -1547,11 +1547,13 @@ oper dit = dire.p2 ; toujours = sats.s5 ; directement = sats.s6 ; - ne = if_then_Str b [] "ne" ; ---- negNe ; - pas = if_then_Str b [] "pas" ; ---- negPas ; + ne = if_then_Str b [] negNe ; + pas = if_then_Str b [] negPas ; oui = sats.s7 ! b in je ++ ne ++ lui ++ ai ++ toujours ++ pas ++ dit ++ directement ++ oui } ; +negNe, negPas : Str ; + }