From 65a25ad1814d87162b247a6fcefe878e839d326b Mon Sep 17 00:00:00 2001 From: aarne Date: Sat, 16 Aug 2008 18:55:28 +0000 Subject: [PATCH] bronzeage grammar restored except for three ones with issues ; arabic transliteration added --- examples/bronzeage/Bronzeage.gf | 38 +++++ examples/bronzeage/BronzeageDan.gf | 7 + examples/bronzeage/BronzeageEng.gf | 7 + examples/bronzeage/BronzeageFin.gf | 8 + examples/bronzeage/BronzeageGer.gf | 8 + examples/bronzeage/BronzeageI.gf | 59 +++++++ examples/bronzeage/BronzeageNor.gf | 6 + examples/bronzeage/BronzeageRus.gf | 7 + examples/bronzeage/BronzeageSpa.gf | 7 + examples/bronzeage/BronzeageSwe.gf | 8 + examples/bronzeage/Swadesh.gf | 245 +++++++++++++++++++++++++++++ examples/bronzeage/SwadeshAra.gf | 5 + examples/bronzeage/SwadeshDan.gf | 5 + examples/bronzeage/SwadeshEng.gf | 5 + examples/bronzeage/SwadeshFin.gf | 5 + examples/bronzeage/SwadeshFre.gf | 5 + examples/bronzeage/SwadeshGer.gf | 5 + examples/bronzeage/SwadeshI.gf | 226 ++++++++++++++++++++++++++ examples/bronzeage/SwadeshIta.gf | 5 + examples/bronzeage/SwadeshNor.gf | 5 + examples/bronzeage/SwadeshRus.gf | 5 + examples/bronzeage/SwadeshSpa.gf | 5 + examples/bronzeage/SwadeshSwe.gf | 5 + src/GF/Command/Commands.hs | 3 + src/GF/Text/Transliterations.hs | 15 +- 25 files changed, 697 insertions(+), 2 deletions(-) create mode 100644 examples/bronzeage/Bronzeage.gf create mode 100644 examples/bronzeage/BronzeageDan.gf create mode 100644 examples/bronzeage/BronzeageEng.gf create mode 100644 examples/bronzeage/BronzeageFin.gf create mode 100644 examples/bronzeage/BronzeageGer.gf create mode 100644 examples/bronzeage/BronzeageI.gf create mode 100644 examples/bronzeage/BronzeageNor.gf create mode 100644 examples/bronzeage/BronzeageRus.gf create mode 100644 examples/bronzeage/BronzeageSpa.gf create mode 100644 examples/bronzeage/BronzeageSwe.gf create mode 100644 examples/bronzeage/Swadesh.gf create mode 100644 examples/bronzeage/SwadeshAra.gf create mode 100644 examples/bronzeage/SwadeshDan.gf create mode 100644 examples/bronzeage/SwadeshEng.gf create mode 100644 examples/bronzeage/SwadeshFin.gf create mode 100644 examples/bronzeage/SwadeshFre.gf create mode 100644 examples/bronzeage/SwadeshGer.gf create mode 100644 examples/bronzeage/SwadeshI.gf create mode 100644 examples/bronzeage/SwadeshIta.gf create mode 100644 examples/bronzeage/SwadeshNor.gf create mode 100644 examples/bronzeage/SwadeshRus.gf create mode 100644 examples/bronzeage/SwadeshSpa.gf create mode 100644 examples/bronzeage/SwadeshSwe.gf diff --git a/examples/bronzeage/Bronzeage.gf b/examples/bronzeage/Bronzeage.gf new file mode 100644 index 000000000..c918c3241 --- /dev/null +++ b/examples/bronzeage/Bronzeage.gf @@ -0,0 +1,38 @@ +abstract Bronzeage = Cat, Swadesh ** { + + flags startcat = Phr ; + + cat + Sent ; MassCN ; + + fun + PhrPos : Sent -> Phr ; + PhrNeg : Sent -> Phr ; + PhrQuest : Sent -> Phr ; + PhrImp : Imp -> Phr ; + PhrImpNeg : Imp -> Phr ; + + SentV : V -> NP -> Sent ; + SentV2 : V2 -> NP -> NP -> Sent ; + SentV2Mass : V2 -> NP -> MassCN -> Sent ; + SentV3 : V3 -> NP -> NP -> NP -> Sent ; + SentA : A -> NP -> Sent ; + SentNP : NP -> NP -> Sent ; + + SentAdvV : V -> NP -> Adv -> Sent ; + SentAdvV2 : V2 -> NP -> NP -> Adv -> Sent ; + + ImpV : V -> Imp ; + ImpV2 : V2 -> NP -> Imp ; + + UsePron : Pron -> NP ; + DetCN : Det -> CN -> NP ; + NumCN : Card -> CN -> NP ; + + UseN : N -> CN ; + ModCN : A -> CN -> CN ; + + UseMassN : MassN -> MassCN ; + ModMass : A -> MassCN -> MassCN ; + +} diff --git a/examples/bronzeage/BronzeageDan.gf b/examples/bronzeage/BronzeageDan.gf new file mode 100644 index 000000000..e8328e721 --- /dev/null +++ b/examples/bronzeage/BronzeageDan.gf @@ -0,0 +1,7 @@ +--# -path=.:present:prelude + +concrete BronzeageDan of Bronzeage = CatDan, SwadeshDan ** BronzeageI with + (Lang = LangDan) ** { + flags language = da_DK; +} + diff --git a/examples/bronzeage/BronzeageEng.gf b/examples/bronzeage/BronzeageEng.gf new file mode 100644 index 000000000..04ff53a3c --- /dev/null +++ b/examples/bronzeage/BronzeageEng.gf @@ -0,0 +1,7 @@ +--# -path=.:present:prelude + +concrete BronzeageEng of Bronzeage = CatEng, SwadeshEng ** BronzeageI with + (Lang = LangEng) ** { + flags language = en_US; +} + diff --git a/examples/bronzeage/BronzeageFin.gf b/examples/bronzeage/BronzeageFin.gf new file mode 100644 index 000000000..cc5940d4e --- /dev/null +++ b/examples/bronzeage/BronzeageFin.gf @@ -0,0 +1,8 @@ +--# -path=.:present:prelude + +concrete BronzeageFin of Bronzeage = CatFin, SwadeshFin ** BronzeageI with + (Lang = LangFin) ** { + flags language = fi_FI; +} + + diff --git a/examples/bronzeage/BronzeageGer.gf b/examples/bronzeage/BronzeageGer.gf new file mode 100644 index 000000000..dec77d187 --- /dev/null +++ b/examples/bronzeage/BronzeageGer.gf @@ -0,0 +1,8 @@ +--# -path=.:present:prelude + +concrete BronzeageGer of Bronzeage = CatGer, SwadeshGer ** BronzeageI with + (Lang = LangGer) ** { + flags language = de_DE; +} + + diff --git a/examples/bronzeage/BronzeageI.gf b/examples/bronzeage/BronzeageI.gf new file mode 100644 index 000000000..8e4d7abee --- /dev/null +++ b/examples/bronzeage/BronzeageI.gf @@ -0,0 +1,59 @@ +incomplete concrete BronzeageI of Bronzeage = open Lang in { + + flags + optimize = all_subs ; --optimize = share_subs ; + unlexer = text ; lexer = text ; + + lincat + Sent = {s : SForm => Str} ; MassCN = CN ; + + lin + PhrPos sent = {s = sent.s ! SPos ++ "."} ; + PhrNeg sent = {s = sent.s ! SNeg ++ "."} ; + PhrQuest sent = {s = sent.s ! SQuest ++ "?"} ; + PhrImp imp = {s = (PhrUtt NoPConj (UttImpSg PPos imp) NoVoc).s ++ "!"} ; + PhrImpNeg imp = {s = (PhrUtt NoPConj (UttImpSg PNeg imp) NoVoc).s ++ "!"} ; + + SentV v np = mkSent np (UseV v) ; + + SentV2 v x y = mkSent x (ComplSlash (SlashV2a v) y) ; + SentV2Mass v x y = mkSent x (ComplSlash (SlashV2a v) (massNP y)) ; + SentV3 v x y z = mkSent x (ComplSlash (Slash2V3 v y) z) ; + SentA a x = mkSent x (UseComp (CompAP (PositA a))) ; + SentNP a x = mkSent x (UseComp (CompNP a)) ; + + SentAdvV v np adv = mkSent np (AdvVP (UseV v) adv) ; + SentAdvV2 v x y adv = mkSent x (AdvVP (ComplSlash (SlashV2a v) y) adv) ; + + ImpV v = ImpVP (UseV v) ; + ImpV2 v x = ImpVP (ComplSlash (SlashV2a v) x) ; + + UsePron p = Lang.UsePron p ; + DetCN d n = Lang.DetCN d n ; + NumCN k cn = Lang.DetCN (DetArtCard (IndefArt) k) cn ; + + UseN n = Lang.UseN n ; + ModCN a cn = AdjCN (PositA a) cn ; + + UseMassN mn = Lang.UseN mn ; + ModMass a cn = AdjCN (PositA a) cn ; + + param + SForm = SPos | SNeg | SQuest ; + + oper + mkSent : NP -> VP -> Sent ; + mkSent np vp = + let cl = PredVP np vp + in { + s = table { + SPos => Predef.toStr S (UseCl Lang.TPres ASimul PPos cl) ; + SNeg => Predef.toStr S (UseCl Lang.TPres ASimul PNeg cl) ; + SQuest => Predef.toStr QS (UseQCl Lang.TPres ASimul PPos (QuestCl cl)) + } ; + lock_Sent = <> + } ; + + massNP : CN -> NP = MassNP ; + +} diff --git a/examples/bronzeage/BronzeageNor.gf b/examples/bronzeage/BronzeageNor.gf new file mode 100644 index 000000000..75b469cee --- /dev/null +++ b/examples/bronzeage/BronzeageNor.gf @@ -0,0 +1,6 @@ +--# -path=.:present:prelude + +concrete BronzeageNor of Bronzeage = CatNor, SwadeshNor ** BronzeageI with + (Lang = LangNor) ** { + flags language = nb_NO; +} diff --git a/examples/bronzeage/BronzeageRus.gf b/examples/bronzeage/BronzeageRus.gf new file mode 100644 index 000000000..916c78e38 --- /dev/null +++ b/examples/bronzeage/BronzeageRus.gf @@ -0,0 +1,7 @@ +--# -path=.:present:prelude + +concrete BronzeageRus of Bronzeage = CatRus, SwadeshRus ** BronzeageI with + (Lang = LangRus) ** { + flags language = ru_RU; +} + diff --git a/examples/bronzeage/BronzeageSpa.gf b/examples/bronzeage/BronzeageSpa.gf new file mode 100644 index 000000000..db10f2885 --- /dev/null +++ b/examples/bronzeage/BronzeageSpa.gf @@ -0,0 +1,7 @@ +--# -path=.:present:prelude + +concrete BronzeageSpa of Bronzeage = CatSpa, SwadeshSpa ** BronzeageI with + (Lang = LangSpa) ** { + flags language = es_ES; +} + diff --git a/examples/bronzeage/BronzeageSwe.gf b/examples/bronzeage/BronzeageSwe.gf new file mode 100644 index 000000000..24a4cf759 --- /dev/null +++ b/examples/bronzeage/BronzeageSwe.gf @@ -0,0 +1,8 @@ +--# -path=.:present:prelude + +concrete BronzeageSwe of Bronzeage = CatSwe, SwadeshSwe ** BronzeageI with + (Lang = LangSwe) ** { + flags language = sv_SE; +} + + diff --git a/examples/bronzeage/Swadesh.gf b/examples/bronzeage/Swadesh.gf new file mode 100644 index 000000000..816c3a6b1 --- /dev/null +++ b/examples/bronzeage/Swadesh.gf @@ -0,0 +1,245 @@ +abstract Swadesh = Cat ** { + + cat + MassN ; + + fun + + -- Pronouns + + i_NP : Pron ; + youSg_NP : Pron ; + he_NP : Pron ; + we_NP : Pron ; + youPl_NP : Pron ; + they_NP : Pron ; + whoPl_IP : IP ; -- only one who in Swadesh 207 + whoSg_IP : IP ; + whatPl_IP : IP ; -- only one what in Swadesh 207 + whatSg_IP : IP ; + + -- Determiners + + that_Det : Det ; + this_Det : Det ; +---- all_Predet : Predet ; + many_Det : Det ; + some_Det : Det ; + + left_Ord : Ord ; + right_Ord : Ord ; + + -- Adverbs + + here_Adv : Adv ; + there_Adv : Adv ; + where_IAdv : IAdv ; + when_IAdv : IAdv ; + how_IAdv : IAdv ; + far_Adv : Adv ; + + -- Conjunctions + + and_Conj : Conj ; + + -- Prepositions + +-- at_Prep : Prep ; + in_Prep : Prep ; + with_Prep : Prep ; + + -- not -- ? + -- if -- ? + -- because -- ? + + -- Numerals + + one_Det : Card ; + two_Num : Card ; + three_Num : Card ; + four_Num : Card ; + five_Num : Card ; + + -- Adjectives + + bad_A : A ; + big_A : A ; + black_A : A ; + cold_A : A ; + correct_A : A ; + dirty_A : A ; + dry_A : A ; + dull_A : A ; + full_A : A ; + good_A : A ; + green_A : A ; + heavy_A : A ; + long_A : A ; + narrow_A : A ; + near_A : A ; + new_A : A ; + old_A : A ; +---- other_A : A ; + red_A : A ; + rotten_A : A ; + round_A : A ; + sharp_A : A ; + short_A : A ; + small_A : A ; + smooth_A : A ; + straight_A : A ; + thick_A : A ; + thin_A : A ; + warm_A : A ; + wet_A : A ; + white_A : A ; + wide_A : A ; + yellow_A : A ; + + -- Nouns + + animal_N : N ; + ashes_N : MassN ; + back_N : N ; + bark_N : MassN ; + belly_N : N ; + bird_N : N ; + blood_N : MassN ; + bone_N : N ; + breast_N : N ; + child_N : N ; + cloud_N : N ; + day_N : N ; + dog_N : N ; + dust_N : MassN ; + ear_N : N ; + earth_N : MassN ; + egg_N : N ; + eye_N : N ; + fat_N : MassN ; +---- father_N : N ; + feather_N : N ; + fingernail_N : N ; + fire_N : N ; + fish_N : N ; + flower_N : N ; + fog_N : MassN ; + foot_N : N ; + forest_N : N ; + fruit_N : N ; + grass_N : N ; + guts_N : N ; + hair_N : N ; + hand_N : N ; + head_N : N ; + heart_N : N ; + horn_N : N ; + husband_N : N ; + ice_N : MassN ; + knee_N : N ; + lake_N : N ; + leaf_N : N ; + leg_N : N ; + liver_N : N ; + louse_N : N ; + man_N : N ; + meat_N : MassN ; + moon_N : N ; +---- mother_N : N ; + mountain_N : N ; + mouth_N : N ; + name_N : N ; + neck_N : N ; + night_N : N ; + nose_N : N ; + person_N : N ; + rain_N : MassN ; + river_N : N ; + road_N : N ; + root_N : N ; + rope_N : N ; + salt_N : MassN ; + sand_N : MassN ; + sea_N : N ; + seed_N : N ; + skin_N : N ; + sky_N : N ; + smoke_N : MassN ; + snake_N : N ; + snow_N : MassN ; + star_N : N ; + stick_N : N ; + stone_N : N ; + sun_N : N ; + tail_N : N ; + tongue_N : N ; + tooth_N : N ; + tree_N : N ; + water_N : MassN ; + wife_N : N ; + wind_N : N ; + wing_N : N ; + woman_N : N ; + worm_N : N ; + year_N : N ; + + -- Verbs + + bite_V2 : V2 ; + blow_V : V ; + breathe_V : V ; + burn_V : V ; + come_V : V ; + count_V2 : V2 ; + cut_V2 : V2 ; + die_V : V ; + dig_V : V ; + drink_V2 : V2 ; + eat_V2 : V2 ; + fall_V : V ; + fear_V2 : V2 ; + fight_V2 : V2 ; + float_V : V ; + flow_V : V ; + fly_V : V ; + freeze_V : V ; + give_V3 : V3 ; + hear_V2 : V2 ; + hit_V2 : V2 ; + hold_V2 : V2 ; + hunt_V2 : V2 ; + kill_V2 : V2 ; + know_V2 : V2 ; + laugh_V : V ; + lie_V : V ; + live_V : V ; + play_V : V ; + pull_V2 : V2 ; + push_V2 : V2 ; + rub_V2 : V2 ; + say_V : V ; + scratch_V2 : V2 ; + see_V2 : V2 ; + sew_V : V ; + sing_V : V ; + sit_V : V ; + sleep_V : V ; + smell_V : V ; + spit_V : V ; + split_V2 : V2 ; + squeeze_V2 : V2 ; + stab_V2 : V2 ; + stand_V : V ; + suck_V2 : V2 ; + swell_V : V ; + swim_V : V ; + think_V : V ; + throw_V2 : V2 ; + tie_V2 : V2 ; + turn_V : V ; + vomit_V : V ; + walk_V : V ; + wash_V2 : V2 ; + wipe_V2 : V2 ; + +} diff --git a/examples/bronzeage/SwadeshAra.gf b/examples/bronzeage/SwadeshAra.gf new file mode 100644 index 000000000..cfe54d1b2 --- /dev/null +++ b/examples/bronzeage/SwadeshAra.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshAra of Swadesh = CatAra ** SwadeshI with + (Lang = LangAra) ; + diff --git a/examples/bronzeage/SwadeshDan.gf b/examples/bronzeage/SwadeshDan.gf new file mode 100644 index 000000000..e667609f3 --- /dev/null +++ b/examples/bronzeage/SwadeshDan.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshDan of Swadesh = CatDan ** SwadeshI with + (Lang = LangDan) ; + diff --git a/examples/bronzeage/SwadeshEng.gf b/examples/bronzeage/SwadeshEng.gf new file mode 100644 index 000000000..5b10141c5 --- /dev/null +++ b/examples/bronzeage/SwadeshEng.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshEng of Swadesh = CatEng ** SwadeshI with + (Lang = LangEng) ; + diff --git a/examples/bronzeage/SwadeshFin.gf b/examples/bronzeage/SwadeshFin.gf new file mode 100644 index 000000000..191874c05 --- /dev/null +++ b/examples/bronzeage/SwadeshFin.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshFin of Swadesh = CatFin ** SwadeshI with + (Lang = LangFin) ; + diff --git a/examples/bronzeage/SwadeshFre.gf b/examples/bronzeage/SwadeshFre.gf new file mode 100644 index 000000000..bffe9e36e --- /dev/null +++ b/examples/bronzeage/SwadeshFre.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshFre of Swadesh = CatFre ** SwadeshI with + (Lang = LangFre) ; + diff --git a/examples/bronzeage/SwadeshGer.gf b/examples/bronzeage/SwadeshGer.gf new file mode 100644 index 000000000..096d3496c --- /dev/null +++ b/examples/bronzeage/SwadeshGer.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshGer of Swadesh = CatGer ** SwadeshI with + (Lang = LangGer) ; + diff --git a/examples/bronzeage/SwadeshI.gf b/examples/bronzeage/SwadeshI.gf new file mode 100644 index 000000000..1825502cd --- /dev/null +++ b/examples/bronzeage/SwadeshI.gf @@ -0,0 +1,226 @@ +incomplete concrete SwadeshI of Swadesh = open Lang in { + + lincat + MassN = Lang.N ; + + lin + + -- Pronouns + + i_NP = Lang.i_Pron ; + youSg_NP = Lang.youSg_Pron ; + he_NP = Lang.he_Pron ; + we_NP = Lang.we_Pron ; + youPl_NP = Lang.youPl_Pron ; + they_NP = Lang.they_Pron ; + whoPl_IP = Lang.whoPl_IP ; + whoSg_IP = Lang.whoSg_IP ; + whatPl_IP = Lang.whatPl_IP ; + whatSg_IP = Lang.whatSg_IP ; + + -- Determiners + + this_Det = DetQuant (this_Quant) NumSg ; + that_Det = DetQuant (that_Quant) NumSg ; + many_Det = Lang.many_Det ; + some_Det = someSg_Det ; +---- few_Det = few_Det ; + + left_Ord = Lang.left_Ord ; + right_Ord = Lang.right_Ord ; + -- Adverbs + here_Adv = Lang.here_Adv; + there_Adv = Lang.there_Adv; + where_IAdv = Lang.where_IAdv; + when_IAdv = Lang.when_IAdv; + how_IAdv = Lang.how_IAdv; + far_Adv = Lang.far_Adv ; + -- not : Adv ; -- ? + -- Conjunctions + and_Conj = Lang.and_Conj ; + -- Prepositions + in_Prep = Lang.in_Prep ; + with_Prep = Lang.with_Prep ; + -- Numerals + one_Det = Lang.NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))) ; + two_Num = Lang.NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2))))) ; + three_Num = Lang.NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))) ; + four_Num = Lang.NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n4))))) ; + five_Num = Lang.NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))) ; + -- Adjectives + bad_A = Lang.bad_A ; + big_A = Lang.big_A ; + black_A = Lang.black_A ; + cold_A = Lang.cold_A ; + correct_A = Lang.correct_A ; + dirty_A = Lang.dirty_A ; + dry_A = Lang.dry_A ; + dull_A = Lang.dull_A ; + full_A = Lang.full_A ; + good_A = Lang.good_A ; + green_A = Lang.green_A ; + heavy_A = Lang.heavy_A ; + long_A = Lang.long_A ; + narrow_A = Lang.narrow_A ; + near_A = Lang.near_A ; + new_A = Lang.new_A ; + old_A = Lang.old_A ; +---- other_A = Lang.other_A ; + red_A = Lang.red_A ; + rotten_A = Lang.rotten_A ; + round_A = Lang.round_A ; + sharp_A = Lang.sharp_A ; + short_A = Lang.short_A ; + small_A = Lang.small_A ; + smooth_A = Lang.smooth_A ; + straight_A = Lang.straight_A ; + thick_A = Lang.thick_A ; + thin_A = Lang.thin_A ; + warm_A = Lang.warm_A ; + wet_A = Lang.wet_A ; + white_A = Lang.white_A ; + wide_A = Lang.wide_A ; + yellow_A = Lang.yellow_A ; + -- Nouns + animal_N = Lang.animal_N ; + ashes_N = Lang.ashes_N ; + back_N = Lang.back_N ; + bark_N = Lang.bark_N ; + belly_N = Lang.belly_N ; + bird_N = Lang.bird_N; + blood_N = Lang.blood_N ; + bone_N = Lang.bone_N ; + breast_N = Lang.breast_N ; + child_N = Lang.child_N ; + cloud_N = Lang.cloud_N ; + day_N = Lang.day_N ; + dog_N = Lang.dog_N ; + dust_N = Lang.dust_N ; + ear_N = Lang.ear_N ; + earth_N = Lang.earth_N ; + egg_N = Lang.egg_N ; + eye_N = Lang.eye_N ; + fat_N = Lang.fat_N ; + feather_N = Lang.feather_N ; + fingernail_N = Lang.fingernail_N ; + fire_N = Lang.fire_N ; + fish_N = Lang.fish_N ; + flower_N = Lang.flower_N ; + fog_N = Lang.fog_N ; + foot_N = Lang.foot_N ; + forest_N = Lang.forest_N ; + fruit_N = Lang.fruit_N ; + grass_N = Lang.grass_N ; + guts_N = Lang.guts_N ; + hair_N = Lang.hair_N ; + hand_N = Lang.hand_N ; + head_N = Lang.head_N ; + heart_N = Lang.heart_N ; + horn_N = Lang.horn_N ; + husband_N = Lang.man_N ; --- aviomies + ice_N = Lang.ice_N ; + knee_N = Lang.knee_N ; + lake_N = Lang.lake_N ; + leaf_N = Lang.leaf_N ; + leg_N = Lang.leg_N ; + liver_N = Lang.liver_N ; + louse_N = Lang.louse_N ; + man_N = Lang.man_N ; + meat_N = Lang.meat_N ; + moon_N = Lang.moon_N ; +---- mother_N = Lang.mother_N ; + mountain_N = Lang.mountain_N ; + mouth_N = Lang.mouth_N ; + name_N = Lang.name_N ; + neck_N = Lang.neck_N ; + night_N = Lang.night_N ; + nose_N = Lang.nose_N ; + person_N = Lang.person_N ; + rain_N = Lang.rain_N ; + river_N = Lang.river_N ; + road_N = Lang.road_N ; + root_N = Lang.root_N ; + rope_N = Lang.rope_N ; + salt_N = Lang.salt_N ; + sand_N = Lang.sand_N ; + sea_N = Lang.sea_N ; + seed_N = Lang.seed_N ; + skin_N = Lang.skin_N ; + sky_N = Lang.sky_N ; + smoke_N = Lang.smoke_N ; + snake_N = Lang.snake_N ; + snow_N = Lang.snow_N ; + star_N = Lang.star_N ; + stick_N = Lang.stick_N ; + stone_N = Lang.stone_N ; + sun_N = Lang.sun_N ; + tail_N = Lang.tail_N ; + tongue_N = Lang.tongue_N ; + tooth_N = Lang.tooth_N ; + tree_N = Lang.tree_N ; + water_N = Lang.water_N ; + wife_N = Lang.wife_N ; + wind_N = Lang.wind_N ; + wing_N = Lang.wing_N ; + woman_N = Lang.woman_N ; + worm_N = Lang.worm_N ; + year_N = Lang.year_N ; + -- Verbs + bite_V2 = Lang.bite_V2 ; + blow_V = Lang.blow_V ; + breathe_V = Lang.breathe_V ; + burn_V = Lang.burn_V ; + come_V = Lang.come_V ; + count_V2 = Lang.count_V2 ; + cut_V2 = Lang.cut_V2 ; + die_V = Lang.die_V ; + dig_V = Lang.dig_V ; + drink_V2 = Lang.drink_V2 ; + eat_V2 = Lang.eat_V2 ; + fall_V = Lang.fall_V ; + fear_V2 = Lang.fear_V2 ; + fight_V2 = Lang.fight_V2 ; + float_V = Lang.float_V ; + flow_V = Lang.flow_V ; + fly_V = Lang.fly_V ; + freeze_V = Lang.freeze_V ; + give_V3 = Lang.give_V3 ; + hear_V2 = Lang.hear_V2 ; + hit_V2 = Lang.hit_V2 ; + hold_V2 = Lang.hold_V2 ; + hunt_V2 = Lang.hunt_V2 ; + kill_V2 = Lang.kill_V2 ; + know_V2 = Lang.know_V2 ; + laugh_V = Lang.laugh_V ; + lie_V = Lang.lie_V ; + live_V = Lang.live_V ; + play_V = Lang. play_V2 ; + pull_V2 = Lang.pull_V2 ; + push_V2 = Lang.push_V2 ; + rub_V2 = Lang.rub_V2 ; + say_V = Lang.say_VS ; + scratch_V2 = Lang.scratch_V2 ; + see_V2 = Lang.see_V2 ; + sew_V = Lang.sew_V ; + sing_V = Lang.sing_V ; + sit_V = Lang.sit_V ; + sleep_V = Lang.sleep_V ; + smell_V = Lang.smell_V ; + spit_V = Lang.spit_V ; + split_V2 = Lang.split_V2 ; + squeeze_V2 = Lang.squeeze_V2 ; + stab_V2 = Lang.stab_V2 ; + stand_V = Lang.stand_V ; + suck_V2 = Lang.suck_V2 ; + swell_V = Lang.swell_V ; + swim_V = Lang.swim_V ; + think_V = Lang.think_V ; + throw_V2 = Lang.throw_V2 ; + tie_V2 = Lang.tie_V2 ; + turn_V = Lang.turn_V ; + vomit_V = Lang.vomit_V ; + walk_V = Lang.walk_V ; + wash_V2 = Lang.wash_V2 ; + wipe_V2 = Lang.wipe_V2 ; + +} diff --git a/examples/bronzeage/SwadeshIta.gf b/examples/bronzeage/SwadeshIta.gf new file mode 100644 index 000000000..b84295867 --- /dev/null +++ b/examples/bronzeage/SwadeshIta.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshIta of Swadesh = CatIta ** SwadeshI with + (Lang = LangIta) ; + diff --git a/examples/bronzeage/SwadeshNor.gf b/examples/bronzeage/SwadeshNor.gf new file mode 100644 index 000000000..5d392462d --- /dev/null +++ b/examples/bronzeage/SwadeshNor.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshNor of Swadesh = CatNor ** SwadeshI with + (Lang = LangNor) ; + diff --git a/examples/bronzeage/SwadeshRus.gf b/examples/bronzeage/SwadeshRus.gf new file mode 100644 index 000000000..263819f07 --- /dev/null +++ b/examples/bronzeage/SwadeshRus.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshRus of Swadesh = CatRus ** SwadeshI with + (Lang = LangRus) ; + diff --git a/examples/bronzeage/SwadeshSpa.gf b/examples/bronzeage/SwadeshSpa.gf new file mode 100644 index 000000000..48de83341 --- /dev/null +++ b/examples/bronzeage/SwadeshSpa.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshSpa of Swadesh = CatSpa ** SwadeshI with + (Lang = LangSpa) ; + diff --git a/examples/bronzeage/SwadeshSwe.gf b/examples/bronzeage/SwadeshSwe.gf new file mode 100644 index 000000000..2a82b2bc4 --- /dev/null +++ b/examples/bronzeage/SwadeshSwe.gf @@ -0,0 +1,5 @@ +--# -path=.:present:prelude + +concrete SwadeshSwe of Swadesh = CatSwe ** SwadeshI with + (Lang = LangSwe) ; + diff --git a/src/GF/Command/Commands.hs b/src/GF/Command/Commands.hs index 29f0bd61a..fe3532354 100644 --- a/src/GF/Command/Commands.hs +++ b/src/GF/Command/Commands.hs @@ -445,6 +445,7 @@ allCommands enc pgf = Map.fromList [ let out = maybe "no such transliteration" characterTable $ transliteration t return $ fromString out, options = [ + ("arabic", "Arabic"), ("devanagari","Devanagari"), ("thai", "Thai") ] @@ -584,6 +585,7 @@ stringOpOptions = [ ("bind","bind tokens separated by Prelude.BIND, i.e. &+"), ("chars","lexer that makes every non-space character a token"), ("from_cp1251","decode from cp1251 (Cyrillic used in Bulgarian resource)"), + ("from_arabic","from unicode to GF Arabic transliteration"), ("from_devanagari","from unicode to GF Devanagari transliteration"), ("from_thai","from unicode to GF Thai transliteration"), ("from_utf8","decode from utf8"), @@ -591,6 +593,7 @@ stringOpOptions = [ ("lexcode","code-like lexer"), ("lexmixed","mixture of text and code (code between $...$)"), ("to_cp1251","encode to cp1251 (Cyrillic used in Bulgarian resource)"), + ("to_arabic","from GF Arabic transliteration to unicode"), ("to_devanagari","from GF Devanagari transliteration to unicode"), ("to_html","wrap in a html file with linebreaks"), ("to_thai","from GF Thai transliteration to unicode"), diff --git a/src/GF/Text/Transliterations.hs b/src/GF/Text/Transliterations.hs index 19adf68fa..f780de773 100644 --- a/src/GF/Text/Transliterations.hs +++ b/src/GF/Text/Transliterations.hs @@ -25,9 +25,10 @@ transliterate s = case s of transliteration :: String -> Maybe Transliteration transliteration s = case s of + "arabic" -> Just transArabic "devanagari" -> Just transDevanagari "thai" -> Just transThai - "urdu" -> Just transUrdu +---- "urdu" -> Just transUrdu _ -> Nothing characterTable :: Transliteration -> String @@ -101,5 +102,15 @@ allTransUrduHindi = words $ transUrdu :: Transliteration transUrdu = (mkTransliteration allTransUrduHindi allCodes){invisible_chars = ["a"]} where - allCodes = [0x0901 .. 0x094c] + allCodes = [0x0901 .. 0x094c] ---- TODO: this is devanagari + +transArabic :: Transliteration +transArabic = mkTransliteration allTrans allCodes where + allTrans = words $ + " V A: A? w? A- y? A b t. t v g H K d " ++ -- 0621 - 062f + "W r z s C S D T Z c G " ++ -- 0630 - 063a + " f q k l m n h w y. y a. u. i. a u " ++ -- 0641 - 064f + "i v2 o a: V+ V- i: a+" -- 0650 - 0657 + allCodes = [0x0621..0x062f] ++ [0x0630..0x063a] ++ + [0x0641..0x064f] ++ [0x0650..0x0657]