diff --git a/grammars/database/DatabaseFre.gf b/grammars/database/DatabaseFre.gf new file mode 100644 index 000000000..1fdf4a802 --- /dev/null +++ b/grammars/database/DatabaseFre.gf @@ -0,0 +1,3 @@ +--# -path=.:../newresource/abstract:../newresource/french:../prelude:../newresource/romance + +concrete DatabaseFre of Database = DatabaseI with (Resource=ResourceFre) ; diff --git a/grammars/database/RestaurantFre.gf b/grammars/database/RestaurantFre.gf new file mode 100644 index 000000000..0400bde29 --- /dev/null +++ b/grammars/database/RestaurantFre.gf @@ -0,0 +1,33 @@ +--# -path=.:../newresource/abstract:../newresource/french:../newresource/romance:../prelude +--- path names: resource in release, newresource in cvs + +concrete RestaurantFre of Restaurant = + DatabaseFre ** open Prelude, ResourceFre, ParadigmsFre in { + +lin + Restaurant = UseN (nReg "restaurant" masculine) ; + Bar = UseN (nReg "bar" masculine) ; + French = AdjP1 (adj1Anglais "français" postpos) ; + Italian = AdjP1 (adj1Italien "italien" postpos) ; + Indian = AdjP1 (adj1Italien "indien" postpos) ; + Japanese = AdjP1 (adj1Anglais "japonais" postpos) ; + + address = funDe (nReg "adresse" feminine) ; + phone = funCNCase (AdvCN (UseN (nReg "numéro" masculine)) + (PrepNP PossessPrep (MassNP (UseN (nReg "téléphone" masculine))))) genitive ; + priceLevel = funCNCase (AdvCN (UseN (nEau "niveau" masculine)) + (PrepNP PossessPrep (MassNP (UseN (nCas "prix" masculine))))) genitive ; + + Cheap = aReg "cher" postpos ; ---- + Expensive = aReg ["pas cher"] postpos ; ---- + + WhoRecommend rest = + ss2 ["qui a recommandé"] rest.s ** {lock_Phr = <>} ; + WhoHellRecommend rest = + ss2 ["qui enfer a recommandé"] rest.s ** {lock_Phr = <>} ; + + LucasCarton = mkPN ["Lucas Carton"] masculine ; + LaCoupole = mkPN ["La Coupole"] feminine ; + BurgerKing =mkPN ["Burger King"] masculine ; + +} diff --git a/lib/resource-0.6/french/ParadigmsFre.gf b/lib/resource-0.6/french/ParadigmsFre.gf index d804754fb..d3fdd4258 100644 --- a/lib/resource-0.6/french/ParadigmsFre.gf +++ b/lib/resource-0.6/french/ParadigmsFre.gf @@ -74,6 +74,10 @@ oper funCase : N -> Case -> Fun ; funDe : N -> Fun ; +-- Functions can also be built from compunt nouns ("le numéro téléphonique de") + + funCNCase : CN -> Case -> Fun ; + -- Proper names, with their gender. mkPN : Str -> Gender -> PN ; -- Jean, masculine @@ -100,6 +104,9 @@ oper -- only need the masculine singular form. adj1Reg : Str -> Position -> Adj1 ; + adj1Sale : Str -> Position -> Adj1 ; + adj1Anglais : Str -> Position -> Adj1 ; + adj1Italien : Str -> Position -> Adj1 ; adj1Cher : (cher, chère : Str) -> Position -> Adj1 ; -- Two-place adjectives need a preposition and a case as extra arguments. @@ -183,7 +190,8 @@ oper nCheval = \cheval -> mkN cheval (Predef.tk 1 cheval + "ux") masculine ; funPrep = \n,p -> n ** complement p ** {lock_Fun = <>} ; - funCase = \n,p -> n ** complementCas p ** {lock_Fun = <>} ; + funCase = \n,p -> n ** complementCas p ** {lock_Fun = <>} ; + funCNCase = \n,p -> n ** complementCas p ** {lock_Fun = <>} ; funDe x = funCase x genitive ; mkPN s g = mkProperName s g ** {lock_PN = <>} ; mkCN = UseN ; @@ -192,8 +200,11 @@ oper Position = Prelude.Bool ; prepos = adjPre ; postpos = adjPost ; - mkAdj1 = \x,y,z,u,p -> mkAdjective (mkAdj x y z u) p ** {lock_Adj1 = <>} ; + mkAdj1 = \x,y,z,u,p -> mkAdjective (mkAdj x z y u) p ** {lock_Adj1 = <>} ; adj1Reg = \lent -> mkAdj1 lent (lent+"e") (lent+"s") (lent+"ement") ; + adj1Sale = \sale -> mkAdj1 sale sale (sale+"s") (sale+"ment") ; + adj1Anglais = \anglais -> mkAdj1 anglais (anglais+"e") anglais (anglais+"ement") ; + adj1Italien = \italien -> mkAdj1 italien (italien+"ne") (italien+"s") (italien+"nement") ; adj1Cher = \cher,chere -> mkAdj1 cher chere (cher+"s") (chere + "ment") ; mkAdj2 = \a,p,c -> mkAdjCompl a postpos {s2 = p ; c = c} ** {lock_Adj2 = <>} ;