From 394caa8fa8e4605246c148b861bbd617546b0164 Mon Sep 17 00:00:00 2001 From: aarne Date: Sun, 6 Nov 2011 21:13:09 +0000 Subject: [PATCH] Thai phrasebook started: Greetings OK --- examples/phrasebook/GreetingsTha.gf | 34 +++ examples/phrasebook/PhrasebookTha.gf | 11 + examples/phrasebook/SentencesTha.gf | 231 +++++++++++++++++++++ examples/phrasebook/WordsTha.gf | 262 ++++++++++++++++++++++++ examples/phrasebook/src/GreetingsTha.gf | 34 +++ examples/phrasebook/src/mkThai.gfs | 1 + 6 files changed, 573 insertions(+) create mode 100644 examples/phrasebook/GreetingsTha.gf create mode 100644 examples/phrasebook/PhrasebookTha.gf create mode 100644 examples/phrasebook/SentencesTha.gf create mode 100644 examples/phrasebook/WordsTha.gf create mode 100644 examples/phrasebook/src/GreetingsTha.gf create mode 100644 examples/phrasebook/src/mkThai.gfs diff --git a/examples/phrasebook/GreetingsTha.gf b/examples/phrasebook/GreetingsTha.gf new file mode 100644 index 000000000..8023f38f1 --- /dev/null +++ b/examples/phrasebook/GreetingsTha.gf @@ -0,0 +1,34 @@ +concrete GreetingsTha of Greetings = + SentencesTha [Greeting,mkGreeting] ** + open ResTha, Prelude in { + +-- สุคสันต์วันเกิด + +flags coding = utf8 ; + +lin + GBye = mkGreeting (thbind "เจอ" "กัน" "นะ") ; + GCheers = mkGreeting (thbind "ไช" "โย") ; + GDamn = mkGreeting (thbind "a'ช่ง") ; ---- google + GExcuse, GExcusePol = mkGreeting (thbind "ขอ" "โทษ") ; + GGoodDay = mkGreeting (thbind "สวัส" "ดี") ; + GGoodEvening = mkGreeting (thbind "สวัส" "ดี") ; + GGoodMorning = mkGreeting (thbind "สวัส" "ดี") ; + GGoodNight = mkGreeting (thbind "รา" "ตรี" "สวัส" "ดิ์") ; + GGoodbye = mkGreeting (thbind "ลา" "ก่อน") ; + GHello = mkGreeting (thbind "หวัส" "ดี") ; + GHelp = mkGreeting (thbind "ช่วย" "ด้วย") ; + GHowAreYou = mkGreeting (thbind "สบาย" "ดี" "ไหม") ; + GLookOut = mkGreeting (thbind "ระ" "วัง") ; ---- google + GNiceToMeetYou, GNiceToMeetYouPol = + mkGreeting (thbind "ยิน" "ดี" "ฑี่" "ได้" "รู้" "จัก") ; + GPleaseGive, GPleaseGivePol = mkGreeting (thbind "ช่วย") ; ---- + GSeeYouSoon = mkGreeting (thbind "เจอ" "กัน" "นะ") ; + GSorry, GSorryPol = mkGreeting (thbind "ขอ" "โทษ") ; + GThanks = mkGreeting (thbind "ขอบ" "คุณ") ; + GTheCheck = mkGreeting (thbind "เช็ค" "บิล") ; + GCongratulations = mkGreeting (thbind "ยิน" "ดี" "ด้วย") ; + GHappyBirthday = mkGreeting (thbind "สุค" "สันต์" "วัน" "เกิด") ; + GGoodLuck = mkGreeting (thbind "โจค" "ดี" "นะ") ; +} + diff --git a/examples/phrasebook/PhrasebookTha.gf b/examples/phrasebook/PhrasebookTha.gf new file mode 100644 index 000000000..956599009 --- /dev/null +++ b/examples/phrasebook/PhrasebookTha.gf @@ -0,0 +1,11 @@ +--# -path=.:alltenses + +concrete PhrasebookTha of Phrasebook = + GreetingsTha, + WordsTha + ** open +-- SyntaxTha, + Prelude in { + + +} diff --git a/examples/phrasebook/SentencesTha.gf b/examples/phrasebook/SentencesTha.gf new file mode 100644 index 000000000..0b6f84c5d --- /dev/null +++ b/examples/phrasebook/SentencesTha.gf @@ -0,0 +1,231 @@ +concrete SentencesTha of Sentences = NumeralTha ** open + ResTha, + Prelude + in { + lincat + Phrase = SS ; +-- Word = Text ; +-- Message = Text ; + Greeting = SS ; +{- + Sentence = S ; + Question = QS ; + Proposition = Cl ; + Item = NP ; + Kind = CN ; + MassKind = CN ; + Quality = AP ; + Property = A ; + Object = NP ; + PrimObject = NP ; + Place = NPPlace ; -- {name : NP ; at : Adv ; to : Adv} ; + PlaceKind = CNPlace ; -- {name : CN ; at : Prep ; to : Prep} ; + Currency = CN ; + Price = NP ; + Action = Cl ; + Person = NPPerson ; -- {name : NP ; isPron : Bool ; poss : Quant} ; + Nationality = NPNationality ; -- {lang : NP ; country : NP ; prop : A} ; + Language = NP ; + Citizenship = A ; + Country = NP ; + Day = NPDay ; -- {name : NP ; point : Adv ; habitual : Adv} ; + Date = Adv ; + Name = NP ; + Number = Card ; + ByTransport = Adv ; + Transport = {name : CN ; by : Adv} ; + Superlative = Det ; +-} + lin + MPhrase p = p ; +-- MContinue p m = mkText p m ; +{- + PSentence s = mkText s | lin Text (mkUtt s) ; -- optional '.' + PQuestion s = mkText s | lin Text (mkUtt s) ; -- optional '?' +-} + PGreeting g = g ; + + PWord w = w ; + + PNumber x = x ; +{- + PPrice x = mkSentence (mkUtt x) ; + + PObject x = mkPhrase (mkUtt x) ; + PKind x = mkPhrase (mkUtt x) ; + PMassKind x = mkPhrase (mkUtt x) ; + PQuality x = mkPhrase (mkUtt x) ; + PPlace x = mkPhrase (mkUtt x.name) ; + PPlaceKind x = mkPhrase (mkUtt x.name) ; + PCurrency x = mkPhrase (mkUtt x) ; + PLanguage x = mkPhrase (mkUtt x) ; + PCountry x = mkPhrase (mkUtt x) ; + PCitizenship x = mkPhrase (mkUtt (mkAP x)) ; + PDay d = mkPhrase (mkUtt d.name) ; + PTransport t = mkPhrase (mkUtt t.name) ; + PByTransport t = mkPhrase (mkUtt t) ; + + PYes = mkPhrase yes_Utt ; + PNo = mkPhrase no_Utt ; + PYesToNo = mkPhrase yes_Utt ; + + GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) please_Voc) ; + + Is = mkCl ; + IsMass m q = mkCl (mkNP m) q ; + + SProp = mkS ; + SPropNot = mkS negativePol ; + QProp p = mkQS (mkQCl p) ; + + WherePlace place = mkQS (mkQCl where_IAdv place.name) ; + WherePerson person = mkQS (mkQCl where_IAdv person.name) ; + + PropAction a = a ; + + AmountCurrency num curr = mkNP num curr ; + + ObjItem i = i ; + ObjNumber n k = mkNP n k ; + ObjIndef k = mkNP a_Quant k ; + ObjPlural k = mkNP aPl_Det k ; + ObjMass k = mkNP k ; + ObjAndObj = mkNP and_Conj ; + OneObj o = o ; + + This kind = mkNP this_Quant kind ; + That kind = mkNP that_Quant kind ; + These kind = mkNP this_Quant plNum kind ; + Those kind = mkNP that_Quant plNum kind ; + The kind = mkNP the_Quant kind ; + Thes kind = mkNP the_Quant plNum kind ; + ThisMass kind = mkNP this_Quant kind ; + ThatMass kind = mkNP that_Quant kind ; + TheMass kind = mkNP the_Quant kind ; + + SuchKind quality kind = mkCN quality kind ; + SuchMassKind quality kind = mkCN quality kind ; + Very property = mkAP very_AdA (mkAP property) ; + Too property = mkAP too_AdA (mkAP property) ; + PropQuality property = mkAP property ; + + ThePlace kind = let dd = if_then_else Det kind.isPl thePl_Det theSg_Det + in placeNP dd kind ; + APlace kind = let dd = if_then_else Det kind.isPl aPl_Det aSg_Det + in placeNP dd kind ; + + IMale, IFemale = mkPerson i_Pron ; + YouFamMale, YouFamFemale = mkPerson youSg_Pron ; + YouPolMale, YouPolFemale = mkPerson youPol_Pron ; + + LangNat n = n.lang ; + CitiNat n = n.prop ; + CountryNat n = n.country ; + PropCit c = c ; + + OnDay d = d.point ; + Today = today_Adv ; + + PersonName n = + {name = n ; isPron = False ; poss = mkQuant he_Pron} ; -- poss not used +---- NameString s = symb s ; --% + NameNN = symb "NN" ; + + NNumeral n = mkCard ; + + SHave p obj = mkS (mkCl p.name have_V2 obj) ; + SHaveNo p k = mkS negativePol (mkCl p.name have_V2 (mkNP aPl_Det k)) ; + SHaveNoMass p m = mkS negativePol (mkCl p.name have_V2 (mkNP m)) ; + QDoHave p obj = mkQS (mkQCl (mkCl p.name have_V2 obj)) ; + + AHaveCurr p curr = mkCl p.name have_V2 (mkNP aPl_Det curr) ; + ACitizen p n = mkCl p.name n ; + ABePlace p place = mkCl p.name place.at ; + ByTransp t = t.by ; + + AKnowSentence p s = mkCl p.name Lexicon.know_VS s ; + AKnowQuestion p s = mkCl p.name Lexicon.know_VQ s ; + AKnowPerson p q = mkCl p.name Lexicon.know_V2 q.name ; + +oper + +-- These operations are used internally in Sentences. + + mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation +-} +oper + mkGreeting : Str -> SS = ss ; +{- + mkSentence : Utt -> Text = \t -> lin Text (postfixSS "." t | t) ; -- optional . + + mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Quant} = \p -> + {name = mkNP p ; isPron = True ; poss = mkQuant p} ; + +-- These are used in Words for each language. + + NPNationality : Type = {lang : NP ; country : NP ; prop : A} ; + + mkNPNationality : NP -> NP -> A -> NPNationality = \la,co,pro -> + {lang = la ; + country = co ; + prop = pro + } ; + + NPDay : Type = {name : NP ; point : Adv ; habitual : Adv} ; + + mkNPDay : NP -> Adv -> Adv -> NPDay = \d,p,h -> + {name = d ; + point = p ; + habitual = h + } ; + + NPPlace : Type = {name : NP ; at : Adv ; to : Adv} ; + CNPlace : Type = {name : CN ; at : Prep ; to : Prep; isPl : Bool} ; + + mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> { + name = p ; + at = i ; + to = t ; + isPl = False + } ; + + mkCNPlacePl : CN -> Prep -> Prep -> CNPlace = \p,i,t -> { + name = p ; + at = i ; + to = t ; + isPl = True + } ; + + placeNP : Det -> CNPlace -> NPPlace = \det,kind -> + let name : NP = mkNP det kind.name in { + name = name ; + at = mkAdv kind.at name ; + to = mkAdv kind.to name + } ; + + NPPerson : Type = {name : NP ; isPron : Bool ; poss : Quant} ; + + relativePerson : GNumber -> CN -> (Num -> NP -> CN -> NP) -> NPPerson -> NPPerson = + \n,x,f,p -> + let num = if_then_else Num n plNum sgNum in { + name = case p.isPron of { + True => mkNP p.poss num x ; + _ => f num p.name x + } ; + isPron = False ; + poss = mkQuant he_Pron -- not used because not pron + } ; + + GNumber : PType = Bool ; + sing = False ; plur = True ; + +-- for languages without GenNP, use "the wife of p" + mkRelative : Bool -> CN -> NPPerson -> NPPerson = \n,x,p -> + relativePerson n x + (\a,b,c -> mkNP (mkNP the_Quant a c) (Syntax.mkAdv possess_Prep b)) p ; + +-- for languages with GenNP, use "p's wife" +-- relativePerson n x (\a,b,c -> mkNP (GenNP b) a c) p ; +-} + +} diff --git a/examples/phrasebook/WordsTha.gf b/examples/phrasebook/WordsTha.gf new file mode 100644 index 000000000..4831e104f --- /dev/null +++ b/examples/phrasebook/WordsTha.gf @@ -0,0 +1,262 @@ +--2 Implementations of Words, with English as example + +concrete WordsTha of Words = SentencesTha ** + open +-- SyntaxTha, +-- ParadigmsTha, +-- (L = LexiconTha), +-- (P = ParadigmsTha), +-- IrregTha, +-- ExtraTha, + Prelude in { +-- lin + +-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$. + +-- Apple = mkCN L.apple_N ; +-- Beer = mkCN L.beer_N ; +-- Bread = mkCN L.bread_N ; +-- Cheese = mkCN (mkN "cheese") ; +-- Chicken = mkCN (mkN "chicken") ; +-- Coffee = mkCN (mkN "coffee") ; +-- Fish = mkCN L.fish_N ; +-- Meat = mkCN (mkN "meat") ; +-- Milk = mkCN L.milk_N ; +-- Pizza = mkCN (mkN "pizza") ; +-- Salt = mkCN L.salt_N ; +-- Tea = mkCN (mkN "tea") ; +-- Water = mkCN L.water_N ; +-- Wine = mkCN L.wine_N ; + +-- Properties; many of them are in the resource lexicon, others can be built by $mkA$. + +-- Bad = L.bad_A ; +-- Boring = mkA "boring" ; +-- Cheap = mkA "cheap" ; +-- Cold = L.cold_A ; +-- Delicious = mkA "delicious" ; +-- Expensive = mkA "expensive" ; +-- Fresh = mkA "fresh" ; +-- Good = L.good_A ; +-- Suspect = mkA "suspect" ; +-- Warm = L.warm_A ; + +-- Places require different prepositions to express location; in some languages +-- also the directional preposition varies, but in English we use $to$, as +-- defined by $mkPlace$. + +-- Airport = mkPlace "airport" "at" ; +-- AmusementPark = mkCompoundPlace "amusement" "park" "at" ; +-- Bank = mkPlace "bank" "at" ; +-- Bar = mkPlace "bar" "in" ; +-- Cafeteria = mkPlace "canteen" "in" ; +-- Center = mkPlace "center" "in" ; +-- Cinema = mkPlace "cinema" "at" ; +-- Church = mkPlace "church" "in" ; +-- Disco = mkPlace "disco" "at" ; +-- Hospital = mkPlace "hospital" "in" ; +-- Hotel = mkPlace "hotel" "in" ; +-- Museum = mkPlace "museum" "at" ; +-- Park = mkPlace "park" "in" ; +-- Parking = mkCompoundPlace "car" "park" "in" ; +-- Pharmacy = mkPlace "pharmacy" "at" ; +-- PostOffice = mkCompoundPlace "post" "office" "at" ; +-- Pub = mkPlace "pub" "at" ; +-- Restaurant = mkPlace "restaurant" "in" ; +-- School = mkPlace "school" "at" ; +-- Shop = mkPlace "shop" "at" ; +-- Station = mkPlace "station" "at" ; +-- Supermarket = mkPlace "supermarket" "at" ; +-- Theatre = mkPlace "theatre" "at" ; +-- Toilet = mkPlace "toilet" "in" ; +-- University = mkPlace "university" "at" ; +-- Zoo = mkPlace "zoo" "at" ; + +-- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) in_Prep to_Prep ; + + +-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns. + +-- DanishCrown = mkCN (mkA "Danish") (mkN "crown") | mkCN (mkN "crown") ; +-- Dollar = mkCN (mkN "dollar") ; +-- Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes +-- Lei = mkCN (mkN "leu" "lei") ; +-- Leva = mkCN (mkN "lev") ; +-- NorwegianCrown = mkCN (mkA "Norwegian") (mkN "crown") | mkCN (mkN "crown") ; +-- Pound = mkCN (mkN "pound") ; +-- Rouble = mkCN (mkN "rouble") ; +-- SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ; +-- Zloty = mkCN (mkN "zloty" "zloty") ; + +-- Nationalities + +-- Belgian = mkA "Belgian" ; +-- Belgium = mkNP (mkPN "Belgium") ; +-- Bulgarian = mkNat "Bulgarian" "Bulgaria" ; +-- Catalan = mkNPNationality (mkNP (mkPN "Catalan")) (mkNP (mkPN "Catalonia")) (mkA "Catalonian") ; +-- Danish = mkNat "Danish" "Denmark" ; +-- Dutch = mkNPNationality (mkNP (mkPN "Dutch")) (mkNP the_Quant (mkN "Netherlands")) (mkA "Dutch") ; +-- English = mkNat "English" "England" ; +-- Finnish = mkNat "Finnish" "Finland" ; +-- Flemish = mkNP (mkPN "Flemish") ; +-- French = mkNat "French" "France" ; +-- German = mkNat "German" "Germany" ; +-- Italian = mkNat "Italian" "Italy" ; +-- Norwegian = mkNat "Norwegian" "Norway" ; +-- Polish = mkNat "Polish" "Poland" ; +-- Romanian = mkNat "Romanian" "Romania" ; +-- Russian = mkNat "Russian" "Russia" ; +-- Spanish = mkNat "Spanish" "Spain" ; +-- Swedish = mkNat "Swedish" "Sweden" ; + +-- Means of transportation + +-- Bike = mkTransport L.bike_N ; +-- Bus = mkTransport (mkN "bus") ; +-- Car = mkTransport L.car_N ; +-- Ferry = mkTransport (mkN "ferry") ; +-- Plane = mkTransport L.airplane_N ; +-- Subway = mkTransport (mkN "subway") ; +-- Taxi = mkTransport (mkN "taxi") ; +-- Train = mkTransport (mkN "train") ; +-- Tram = mkTransport (mkN "tram") ; + +-- ByFoot = P.mkAdv "by foot" ; + +-- Actions: the predication patterns are very often language-dependent. + +-- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsTha.mkAdv "old")); +-- AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ; +-- AHasRoom p num = mkCl p.name have_V2 +-- (mkNP (mkNP a_Det (mkN "room")) (SyntaxTha.mkAdv for_Prep (mkNP num (mkN "person")))) ; +-- AHasTable p num = mkCl p.name have_V2 +-- (mkNP (mkNP a_Det (mkN "table")) (SyntaxTha.mkAdv for_Prep (mkNP num (mkN "person")))) ; +-- AHasName p name = mkCl (nameOf p) name ; +-- AHungry p = mkCl p.name (mkA "hungry") ; +-- AIll p = mkCl p.name (mkA "ill") ; +-- AKnow p = mkCl p.name IrregTha.know_V ; +-- ALike p item = mkCl p.name (mkV2 (mkV "like")) item ; +-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxTha.mkAdv in_Prep co)) ; +-- ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ; +-- AMarried p = mkCl p.name (mkA "married") ; +-- AReady p = mkCl p.name (mkA "ready") ; +-- AScared p = mkCl p.name (mkA "scared") ; +-- ASpeak p lang = mkCl p.name (mkV2 IrregTha.speak_V) lang ; +-- AThirsty p = mkCl p.name (mkA "thirsty") ; +-- ATired p = mkCl p.name (mkA "tired") ; +-- AUnderstand p = mkCl p.name IrregTha.understand_V ; +-- AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ; +-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregTha.go_V) place.to) ; + +-- miscellaneous + +-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ; +-- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ; +-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregTha.cost_V)) ; +-- ItCost item price = mkCl item (mkV2 IrregTha.cost_V) price ; + +-- PropOpen p = mkCl p.name open_Adv ; +-- PropClosed p = mkCl p.name closed_Adv ; +-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ; +-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ; +-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ; +-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ; + +-- Building phrases from strings is complicated: the solution is to use +-- mkText : Text -> Text -> Text ; + +-- PSeeYouDate d = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt d)) ; +-- PSeeYouPlace p = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt p.at)) ; +-- PSeeYouPlaceDate p d = +-- mkText (lin Text (ss ("see you"))) +-- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ; + +-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$ +-- below. Languages without productive genitives must use an equivalent of +-- "the wife of my son" for non-pronouns. + +-- Wife = xOf sing (mkN "wife") ; +-- Husband = xOf sing (mkN "husband") ; +-- Son = xOf sing (mkN "son") ; +-- Daughter = xOf sing (mkN "daughter") ; +-- Children = xOf plur L.child_N ; + +-- week days + +-- Monday = mkDay "Monday" ; +-- Tuesday = mkDay "Tuesday" ; +-- Wednesday = mkDay "Wednesday" ; +-- Thursday = mkDay "Thursday" ; +-- Friday = mkDay "Friday" ; +-- Saturday = mkDay "Saturday" ; +-- Sunday = mkDay "Sunday" ; + +-- Tomorrow = P.mkAdv "tomorrow" ; + +-- modifiers of places + +-- TheBest = mkSuperl L.good_A ; +-- TheClosest = mkSuperl L.near_A ; +-- TheCheapest = mkSuperl (mkA "cheap") ; +-- TheMostExpensive = mkSuperl (mkA "expensive") ; +-- TheMostPopular = mkSuperl (mkA "popular") ; +-- TheWorst = mkSuperl L.bad_A ; + +-- SuperlPlace sup p = placeNP sup p ; + + +-- transports + +-- HowFar place = mkQS (mkQCl far_IAdv place.name) ; +-- HowFarFrom x y = +-- mkQS (mkQCl far_IAdv (mkCl y.name (SyntaxTha.mkAdv from_Prep x.name))) ; +-- HowFarFromBy x y t = +-- mkQS (mkQCl far_IAdv (mkCl y.name (SyntaxTha.mkAdv from_Prep (mkNP x.name t)))) ; +-- HowFarBy y t = mkQS (mkQCl far_IAdv (mkCl y.name t)) ; + +-- WhichTranspPlace trans place = +-- mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ; + +-- IsTranspPlace trans place = +-- mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ; + + + +-- auxiliaries + +-- oper + +-- mkNat : Str -> Str -> NPNationality = \nat,co -> +-- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ; + +-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d -> +-- let day = mkNP (mkPN d) in +-- mkNPDay day (SyntaxTha.mkAdv on_Prep day) +-- (SyntaxTha.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ; + +-- mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i -> +-- mkCNPlace (mkCN (P.mkN comp (mkN p))) (P.mkPrep i) to_Prep ; + +-- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i -> +-- mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ; + +-- open_Adv = P.mkAdv "open" ; +-- closed_Adv = P.mkAdv "closed" ; + +-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> +-- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ; + +-- nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ; + + +-- mkTransport : N -> {name : CN ; by : Adv} = \n -> { +-- name = mkCN n ; +-- by = SyntaxTha.mkAdv by8means_Prep (mkNP n) +-- } ; + +-- mkSuperl : A -> Det = \a -> SyntaxTha.mkDet the_Art (SyntaxTha.mkOrd a) ; + +-- far_IAdv = ExtraTha.IAdvAdv (ss "far") ; + +--} +} diff --git a/examples/phrasebook/src/GreetingsTha.gf b/examples/phrasebook/src/GreetingsTha.gf new file mode 100644 index 000000000..962fe78f9 --- /dev/null +++ b/examples/phrasebook/src/GreetingsTha.gf @@ -0,0 +1,34 @@ +concrete GreetingsTha of Greetings = + SentencesTha [Greeting,mkGreeting] ** + open ResTha, Prelude in { + +-- สุคสันต์วันเกิด + +flags coding = utf8 ; + +lin + GBye = mkGreeting (thbind "ecO" "kan" "na.") ; + GCheers = mkGreeting (thbind "a&c2" "o:y") ; + GDamn = mkGreeting (thbind "a'c2T1g") ; ---- google + GExcuse, GExcusePol = mkGreeting (thbind "k1O" "o:t5s.") ; + GGoodDay = mkGreeting (thbind "swas" "di:") ; + GGoodEvening = mkGreeting (thbind "swas" "di:") ; + GGoodMorning = mkGreeting (thbind "swas" "di:") ; + GGoodNight = mkGreeting (thbind "ra:" "tri:" "swas" "diK") ; + GGoodbye = mkGreeting (thbind "la:" "kT1On") ; + GHello = mkGreeting (thbind "hwas" "di:") ; + GHelp = mkGreeting (thbind "c2T1wy" "dT2wy") ; + GHowAreYou = mkGreeting (thbind "sba:y" "di:" "a&hm") ; + GLookOut = mkGreeting (thbind "ra." "wag") ; ---- google + GNiceToMeetYou, GNiceToMeetYouPol = + mkGreeting (thbind "yin" "di:" "t2i:T1" "a&dT2" "ru:T2" "cak") ; + GPleaseGive, GPleaseGivePol = mkGreeting (thbind "c2T1wy") ; ---- + GSeeYouSoon = mkGreeting (thbind "ecO" "kan" "na.") ; + GSorry, GSorryPol = mkGreeting (thbind "k1O" "o:t5s.") ; + GThanks = mkGreeting (thbind "k1Ob" "k2un'") ; + GTheCheck = mkGreeting (thbind "ec2Sk2" "bil") ; + GCongratulations = mkGreeting (thbind "yin" "di:" "dT2wy") ; + GHappyBirthday = mkGreeting (thbind "suk2" "santK" "wan" "ekid") ; + GGoodLuck = mkGreeting (thbind "o:ck2" "di:" "na.") ; +} + diff --git a/examples/phrasebook/src/mkThai.gfs b/examples/phrasebook/src/mkThai.gfs new file mode 100644 index 000000000..e1efbdcdf --- /dev/null +++ b/examples/phrasebook/src/mkThai.gfs @@ -0,0 +1 @@ +rf -file=src/GreetingsTha.gf | ps -env=quotes -to_thai | wf -file=GreetingsTha.gf