mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-19 16:12:52 -06:00
French Swadesh, some bugs remain
This commit is contained in:
242
examples/stoneage/StoneageFre.gf
Normal file
242
examples/stoneage/StoneageFre.gf
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
--# -path=.:../../lib/resource/romance:../../lib/resource/abstract:../../lib/resource/french:../../lib/prelude
|
||||||
|
|
||||||
|
concrete StoneageFre of Stoneage
|
||||||
|
= open SyntaxFre, RulesFre, StructuralFre, ParadigmsFre, SwadeshLexFre,
|
||||||
|
StoneageResFre in {
|
||||||
|
|
||||||
|
flags
|
||||||
|
startcat=S; optimize=share;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
S = Phr ;
|
||||||
|
NP = NP ;
|
||||||
|
N = N;
|
||||||
|
CN = CN ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
-- Sentence conjunction
|
||||||
|
|
||||||
|
-- AndS s1 s2 = { s = s1.s ++ and_Conj.s ++ s2.s } ** { lock_Phr = <> } ;
|
||||||
|
|
||||||
|
-- NP conjunction
|
||||||
|
|
||||||
|
-- AndNP n1 n2 = ConjNP and_Conj (TwoNP n1 n2);
|
||||||
|
|
||||||
|
|
||||||
|
Drink = PresV2 (dirV2 drink_V) ;
|
||||||
|
Eat = PresV2 (dirV2 eat_V) ;
|
||||||
|
Bite = PresV2 (dirV2 bite_V) ;
|
||||||
|
Suck = PresV2 (dirV2 suck_V) ;
|
||||||
|
See = PresV2 (dirV2 see_V) ;
|
||||||
|
Hear = PresV2 (dirV2 hear_V) ;
|
||||||
|
Know = PresV2 (dirV2 know_V) ;
|
||||||
|
Think = PresV2 (dirV2 think_V) ;
|
||||||
|
Smell = PresV2 (dirV2 smell_V) ;
|
||||||
|
Fear = PresV2 (dirV2 fear_V) ;
|
||||||
|
Kill = PresV2 (dirV2 kill_V) ;
|
||||||
|
Fight = PresV2 (dirV2 fight_V) ;
|
||||||
|
Hunt = PresV2 (dirV2 hunt_V) ;
|
||||||
|
Hit = PresV2 (dirV2 hit_V) ;
|
||||||
|
Cut = PresV2 (dirV2 cut_V) ;
|
||||||
|
Split = PresV2 (dirV2 split_V) ;
|
||||||
|
Stab = PresV2 (dirV2 stab_V) ;
|
||||||
|
Scratch = PresV2 (dirV2 scratch_V) ;
|
||||||
|
Hold = PresV2 (dirV2 hold_V) ;
|
||||||
|
Squeeze = PresV2 (dirV2 squeeze_V) ;
|
||||||
|
Rub = PresV2 (dirV2 rub_V) ;
|
||||||
|
Wash = PresV2 (dirV2 wash_V) ;
|
||||||
|
Wipe = PresV2 (dirV2 wipe_V) ;
|
||||||
|
Pull = PresV2 (dirV2 pull_V) ;
|
||||||
|
Push = PresV2 (dirV2 push_V) ;
|
||||||
|
Throw = PresV2 (dirV2 throw_V) ;
|
||||||
|
Tie = PresV2 (dirV2 tie_V) ;
|
||||||
|
Count = PresV2 (dirV2 count_V) ;
|
||||||
|
|
||||||
|
Spit = PresV spit_V ;
|
||||||
|
Vomit = PresV vomit_V ;
|
||||||
|
Blow = PresV blow_V ;
|
||||||
|
Breathe = PresV breathe_V ;
|
||||||
|
Laugh = PresV laugh_V ;
|
||||||
|
Sleep = PresV sleep_V ;
|
||||||
|
Live = PresV live_V ;
|
||||||
|
Die = PresV die_V ;
|
||||||
|
Dig = PresV dig_V ;
|
||||||
|
Swim = PresV swim_V ;
|
||||||
|
Fly = PresV fly_V ;
|
||||||
|
Walk = PresV walk_V ;
|
||||||
|
Come = PresV come_V ;
|
||||||
|
Lie = PresV lie_V ;
|
||||||
|
Sit = PresV sit_V ;
|
||||||
|
Stand = PresV stand_V ;
|
||||||
|
Turn = PresV turn_V ;
|
||||||
|
Fall = PresV fall_V ;
|
||||||
|
Sing = PresV sing_V ;
|
||||||
|
Sew = PresV sew_V ;
|
||||||
|
Play = PresV play_V ;
|
||||||
|
Float = PresV float_V ;
|
||||||
|
Flow = PresV flow_V ;
|
||||||
|
Freeze = PresV freeze_V ;
|
||||||
|
Swell = PresV swell_V ;
|
||||||
|
Burn = PresV burn_V ;
|
||||||
|
|
||||||
|
Give = PresV3 (dirV3 give_V dative) ;
|
||||||
|
|
||||||
|
-- Say = ;
|
||||||
|
|
||||||
|
The_One = DefOneNP ;
|
||||||
|
The_Many = DefNumNP NoNum ;
|
||||||
|
A = IndefOneNP ;
|
||||||
|
This = DetNP this_Det ;
|
||||||
|
That = DetNP that_Det ;
|
||||||
|
All = NDetNP all_NDet NoNum ;
|
||||||
|
Many = DetNP many_Det ;
|
||||||
|
Some_One = DetNP some_Det ;
|
||||||
|
Some_Many = NDetNP some_NDet NoNum ;
|
||||||
|
Few = DetNP few_Det ;
|
||||||
|
Other = DetNP other_Det ;
|
||||||
|
|
||||||
|
One = IndefNumNP one_Num ;
|
||||||
|
Two = IndefNumNP two_Num ;
|
||||||
|
Three = IndefNumNP three_Num ;
|
||||||
|
Four = IndefNumNP four_Num ;
|
||||||
|
Five = IndefNumNP five_Num ;
|
||||||
|
|
||||||
|
-- Pronouns
|
||||||
|
|
||||||
|
I = i_NP ;
|
||||||
|
You_One = thou_NP ;
|
||||||
|
He = he_NP ;
|
||||||
|
We = we_NP ;
|
||||||
|
You_Many = you_NP ;
|
||||||
|
They = they_NP ;
|
||||||
|
|
||||||
|
-- Nouns
|
||||||
|
|
||||||
|
Woman = UseN woman_N ;
|
||||||
|
Man = UseN man_N ;
|
||||||
|
Person = UseN person_N ;
|
||||||
|
Child = UseN child_N ;
|
||||||
|
Wife = UseN wife_N ;
|
||||||
|
Husband = UseN husband_N ;
|
||||||
|
Mother = UseN mother_N ;
|
||||||
|
Father = UseN father_N ;
|
||||||
|
Animal = UseN animal_N ;
|
||||||
|
Fish = UseN fish_N ;
|
||||||
|
Bird = UseN bird_N ;
|
||||||
|
Dog = UseN dog_N ;
|
||||||
|
Louse = UseN louse_N ;
|
||||||
|
Snake = UseN snake_N ;
|
||||||
|
Worm = UseN worm_N ;
|
||||||
|
Tree = UseN tree_N ;
|
||||||
|
Forest = UseN forest_N ;
|
||||||
|
Stick = UseN stick_N ;
|
||||||
|
Fruit = UseN fruit_N ;
|
||||||
|
Seed = UseN seed_N ;
|
||||||
|
Leaf = UseN leaf_N ;
|
||||||
|
Root = UseN root_N ;
|
||||||
|
Bark = UseN bark_N ;
|
||||||
|
Flower = UseN flower_N ;
|
||||||
|
Grass = UseN grass_N ;
|
||||||
|
Rope = UseN rope_N ;
|
||||||
|
Skin = UseN skin_N ;
|
||||||
|
Meat = UseN meat_N ;
|
||||||
|
Blood = UseN blood_N ;
|
||||||
|
Bone = UseN bone_N ;
|
||||||
|
Fat = UseN fat_N ;
|
||||||
|
Egg = UseN egg_N ;
|
||||||
|
Horn = UseN horn_N ;
|
||||||
|
Tail = UseN tail_N ;
|
||||||
|
Feather = UseN feather_N ;
|
||||||
|
Hair = UseN hair_N ;
|
||||||
|
Head = UseN head_N ;
|
||||||
|
Ear = UseN ear_N ;
|
||||||
|
Eye = UseN eye_N ;
|
||||||
|
Nose = UseN nose_N ;
|
||||||
|
Mouth = UseN mouth_N ;
|
||||||
|
Tooth = UseN tooth_N ;
|
||||||
|
Tongue = UseN tongue_N ;
|
||||||
|
Fingernail = UseN fingernail_N ;
|
||||||
|
Foot = UseN foot_N ;
|
||||||
|
Leg = UseN leg_N ;
|
||||||
|
Knee = UseN knee_N ;
|
||||||
|
Hand = UseN hand_N ;
|
||||||
|
Wing = UseN wing_N ;
|
||||||
|
Belly = UseN belly_N ;
|
||||||
|
Guts = UseN guts_N ;
|
||||||
|
Neck = UseN neck_N ;
|
||||||
|
Back = UseN back_N ;
|
||||||
|
Breast = UseN breast_N ;
|
||||||
|
Heart = UseN heart_N ;
|
||||||
|
Liver = UseN liver_N ;
|
||||||
|
Sun = UseN sun_N ;
|
||||||
|
Moon = UseN moon_N ;
|
||||||
|
Star = UseN star_N ;
|
||||||
|
Water = UseN water_N ;
|
||||||
|
Rain = UseN rain_N ;
|
||||||
|
River = UseN river_N ;
|
||||||
|
Lake = UseN lake_N ;
|
||||||
|
Sea = UseN sea_N ;
|
||||||
|
Salt = UseN salt_N ;
|
||||||
|
Stone = UseN stone_N ;
|
||||||
|
Sand = UseN sand_N ;
|
||||||
|
Dust = UseN dust_N ;
|
||||||
|
Earth = UseN earth_N ;
|
||||||
|
Cloud = UseN cloud_N ;
|
||||||
|
Fog = UseN fog_N ;
|
||||||
|
Sky = UseN sky_N ;
|
||||||
|
Wind = UseN wind_N ;
|
||||||
|
Snow = UseN snow_N ;
|
||||||
|
Ice = UseN ice_N ;
|
||||||
|
Smoke = UseN smoke_N ;
|
||||||
|
Fire = UseN fire_N ;
|
||||||
|
Ashes = UseN ashes_N ;
|
||||||
|
Road = UseN road_N ;
|
||||||
|
Mountain = UseN mountain_N ;
|
||||||
|
Night = UseN night_N ;
|
||||||
|
Day = UseN day_N ;
|
||||||
|
Year = UseN year_N ;
|
||||||
|
Name = UseN name_N ;
|
||||||
|
|
||||||
|
-- NameOf = AppN2 name_N2 ;
|
||||||
|
MotherOf = AppN2 (mkN2 mother_N genitive) ;
|
||||||
|
FatherOf = AppN2 (mkN2 father_N genitive) ;
|
||||||
|
|
||||||
|
Big = ModPosA big_ADeg ;
|
||||||
|
Long = ModPosA long_ADeg ;
|
||||||
|
Wide = ModPosA wide_ADeg ;
|
||||||
|
Thick = ModPosA thick_ADeg ;
|
||||||
|
Heavy = ModPosA heavy_ADeg ;
|
||||||
|
Small = ModPosA small_ADeg ;
|
||||||
|
Short = ModPosA short_ADeg ;
|
||||||
|
Narrow = ModPosA narrow_ADeg ;
|
||||||
|
Thin = ModPosA thin_ADeg ;
|
||||||
|
Red = ModPosA red_ADeg ;
|
||||||
|
Green = ModPosA green_ADeg ;
|
||||||
|
Yellow = ModPosA yellow_ADeg ;
|
||||||
|
White = ModPosA white_ADeg ;
|
||||||
|
Black = ModPosA black_ADeg ;
|
||||||
|
Warm = ModPosA warm_ADeg ;
|
||||||
|
Cold = ModPosA cold_ADeg ;
|
||||||
|
Full = ModPosA full_ADeg ;
|
||||||
|
New = ModPosA new_ADeg ;
|
||||||
|
Old = ModPosA old_ADeg ;
|
||||||
|
Good = ModPosA good_ADeg ;
|
||||||
|
Bad = ModPosA bad_ADeg ;
|
||||||
|
Rotten = ModPosA rotten_ADeg ;
|
||||||
|
Dirty = ModPosA dirty_ADeg ;
|
||||||
|
Straight = ModPosA straight_ADeg ;
|
||||||
|
Round = ModPosA round_ADeg ;
|
||||||
|
Sharp = ModPosA sharp_ADeg ;
|
||||||
|
Dull = ModPosA dull_ADeg ;
|
||||||
|
Smooth = ModPosA smooth_ADeg ;
|
||||||
|
Wet = ModPosA wet_ADeg ;
|
||||||
|
Dry = ModPosA dry_ADeg ;
|
||||||
|
Correct = ModPosA correct_ADeg ;
|
||||||
|
Near = ModPosA near_ADeg ;
|
||||||
|
-- Far = ModPosA far_ADeg ;
|
||||||
|
|
||||||
|
Right = ModAP (UseA right_A) ;
|
||||||
|
Left = ModAP (UseA left_A) ;
|
||||||
|
|
||||||
|
}
|
||||||
21
examples/stoneage/StoneageResFre.gf
Normal file
21
examples/stoneage/StoneageResFre.gf
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
resource StoneageResFre = open RulesFre, SyntaxFre, ParadigmsFre in {
|
||||||
|
|
||||||
|
oper
|
||||||
|
PresV : V -> NP -> Phr = \v,s -> PresCl (mkSats s v) ;
|
||||||
|
PresV2 : V2 -> NP -> NP -> Phr = \v,s,o ->
|
||||||
|
PresCl (mkSatsObject s v o) ;
|
||||||
|
PresV3 : V3 -> NP -> NP -> NP -> Phr = \v,s,o,r ->
|
||||||
|
PresCl (insertObject (mkSatsObject s v o) v.c3 v.s3 r) ;
|
||||||
|
PresVasV2 : V -> NP -> NP -> Phr = \ v -> PresV2 (dirV2 v) ;
|
||||||
|
|
||||||
|
PresCl : Sats -> Phr = \c ->
|
||||||
|
{s = (UseCl (PosTP TPresent ASimul)
|
||||||
|
(sats2clause c ** {lock_Cl = <>})
|
||||||
|
).s ! Ind ;
|
||||||
|
lock_Phr = <>
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ModPosA : ADeg -> CN -> CN = \a -> ModAP (PositADeg a) ;
|
||||||
|
ModA : A -> CN -> CN = \a -> ModAP (UseA a) ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -15,13 +15,13 @@ lin
|
|||||||
art_N = regN "art" feminine ;
|
art_N = regN "art" feminine ;
|
||||||
ask_V2Q = mkV2Q (regV "demander") dative ;
|
ask_V2Q = mkV2Q (regV "demander") dative ;
|
||||||
baby_N = regN "bébé" masculine ;
|
baby_N = regN "bébé" masculine ;
|
||||||
bad_ADeg = mkADeg (regA "mauvaise") (regA "pire") ;
|
bad_ADeg = prefADeg (mkADeg (regA "mauvais") (regA "pire")) ;
|
||||||
bank_N = regN "banque" feminine ;
|
bank_N = regN "banque" feminine ;
|
||||||
beautiful_ADeg = regADeg "joli" ; ---- beau
|
beautiful_ADeg = prefADeg (regADeg "joli") ; ---- beau
|
||||||
become_VA = mkVA devenir_V ;
|
become_VA = mkVA devenir_V ;
|
||||||
beer_N = regN "bière" feminine ;
|
beer_N = regN "bière" feminine ;
|
||||||
beg_V2V = mkV2V (regV "demander") accusative dative ;
|
beg_V2V = mkV2V (regV "demander") accusative dative ;
|
||||||
big_ADeg = regADeg "grand" ;
|
big_ADeg = prefADeg (regADeg "grand") ;
|
||||||
bike_N = regN "vélo" masculine ;
|
bike_N = regN "vélo" masculine ;
|
||||||
bird_N = regN "oiseau" masculine ;
|
bird_N = regN "oiseau" masculine ;
|
||||||
black_ADeg = regADeg "noir" ;
|
black_ADeg = regADeg "noir" ;
|
||||||
@@ -83,8 +83,8 @@ lin
|
|||||||
girl_N = regN "fille" feminine ;
|
girl_N = regN "fille" feminine ;
|
||||||
glove_N = regN "gant" masculine ;
|
glove_N = regN "gant" masculine ;
|
||||||
gold_N = regN "or" masculine ;
|
gold_N = regN "or" masculine ;
|
||||||
good_ADeg = mkADeg (mkA "bon" "bonne" "bons" "bien")
|
good_ADeg = prefADeg (mkADeg (mkA "bon" "bonne" "bons" "bien")
|
||||||
(mkA "meilleur" "meilleure" "meilleurs" "mieux") ;
|
(mkA "meilleur" "meilleure" "meilleurs" "mieux")) ;
|
||||||
go_V = aller_V ;
|
go_V = aller_V ;
|
||||||
green_ADeg = regADeg "vert" ;
|
green_ADeg = regADeg "vert" ;
|
||||||
harbour_N = regN "port" masculine ;
|
harbour_N = regN "port" masculine ;
|
||||||
@@ -123,10 +123,11 @@ lin
|
|||||||
mountain_N = regN "montagne" feminine ;
|
mountain_N = regN "montagne" feminine ;
|
||||||
music_N = regN "musique" feminine ;
|
music_N = regN "musique" feminine ;
|
||||||
narrow_ADeg = regADeg "étroit" ;
|
narrow_ADeg = regADeg "étroit" ;
|
||||||
new_ADeg = compADeg (mkA "nouveau" "nouvelle" "nouveaux" "nouvellement") ;
|
new_ADeg = prefADeg (compADeg (mkA "nouveau" "nouvelle" "nouveaux" "nouvellement")) ;
|
||||||
newspaper_N = regN "journal" masculine ;
|
newspaper_N = regN "journal" masculine ;
|
||||||
oil_N = regN "huile" feminine ;
|
oil_N = regN "huile" feminine ;
|
||||||
old_ADeg = compADeg (mkA "vieux" "vieille" "vieux" "vieillement") ; ---- vieil
|
old_ADeg =
|
||||||
|
prefADeg (compADeg (mkA "vieux" "vieille" "vieux" "vieillement")) ; ---- vieil
|
||||||
open_V2 = ouvrir_V2 ;
|
open_V2 = ouvrir_V2 ;
|
||||||
paint_V2A = mkV2A (v2V peindre_V2) accusative ;
|
paint_V2A = mkV2A (v2V peindre_V2) accusative ;
|
||||||
paper_N = regN "papier" masculine ;
|
paper_N = regN "papier" masculine ;
|
||||||
@@ -167,7 +168,7 @@ lin
|
|||||||
silver_N = regN "argent" masculine ;
|
silver_N = regN "argent" masculine ;
|
||||||
sister_N = regN "soeur" feminine ;
|
sister_N = regN "soeur" feminine ;
|
||||||
sleep_V = v2V dormir_V2 ;
|
sleep_V = v2V dormir_V2 ;
|
||||||
small_ADeg = regADeg "petit" ;
|
small_ADeg = prefADeg (regADeg "petit") ;
|
||||||
snake_N = regN "serpent" masculine ;
|
snake_N = regN "serpent" masculine ;
|
||||||
sock_N = regN "chaussette" feminine ;
|
sock_N = regN "chaussette" feminine ;
|
||||||
speak_V2 = dirV2 (regV "parler") ;
|
speak_V2 = dirV2 (regV "parler") ;
|
||||||
@@ -201,7 +202,7 @@ lin
|
|||||||
war_N = regN "guerre" masculine ;
|
war_N = regN "guerre" masculine ;
|
||||||
watch_V2 = dirV2 (regV "regarder") ;
|
watch_V2 = dirV2 (regV "regarder") ;
|
||||||
water_N = regN "eau" feminine ;
|
water_N = regN "eau" feminine ;
|
||||||
white_ADeg = compADeg (mkA "blanc" "blance" "blancs" "blanchement") ;
|
white_ADeg = compADeg (mkA "blanc" "blanche" "blancs" "blanchement") ;
|
||||||
window_N = regN "fenêtre" feminine ;
|
window_N = regN "fenêtre" feminine ;
|
||||||
wine_N = regN "vin" masculine ;
|
wine_N = regN "vin" masculine ;
|
||||||
win_V2 = dirV2 (regV "gagner") ; ---- vaincre
|
win_V2 = dirV2 (regV "gagner") ; ---- vaincre
|
||||||
@@ -210,7 +211,7 @@ lin
|
|||||||
wood_N = regN "bois" masculine ;
|
wood_N = regN "bois" masculine ;
|
||||||
write_V2 = écrire_V2 ;
|
write_V2 = écrire_V2 ;
|
||||||
yellow_ADeg = regADeg "jaune" ;
|
yellow_ADeg = regADeg "jaune" ;
|
||||||
young_ADeg = regADeg "jeune" ;
|
young_ADeg = prefADeg (regADeg "jeune") ;
|
||||||
|
|
||||||
do_V2 = faire_V2 ;
|
do_V2 = faire_V2 ;
|
||||||
now_Adv = mkAdv "maintenant" ;
|
now_Adv = mkAdv "maintenant" ;
|
||||||
|
|||||||
@@ -106,8 +106,11 @@ oper
|
|||||||
-- Then the regular and invariant patterns.
|
-- Then the regular and invariant patterns.
|
||||||
|
|
||||||
adjReg : Str -> Gender => Number => Str = \bu -> table {
|
adjReg : Str -> Gender => Number => Str = \bu -> table {
|
||||||
Masc => nomReg bu ;
|
Masc => (mkNomReg bu Masc).s ;
|
||||||
Fem => nomReg (bu + "e")
|
Fem => nomReg (case last bu of {
|
||||||
|
"e" => bu ;
|
||||||
|
_ => bu + "e"
|
||||||
|
})
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
adjInvar : Str -> Gender => Number => Str = \bien ->
|
adjInvar : Str -> Gender => Number => Str = \bien ->
|
||||||
@@ -116,7 +119,12 @@ oper
|
|||||||
-- Adjectives themselves are records. Here the most common cases:
|
-- Adjectives themselves are records. Here the most common cases:
|
||||||
|
|
||||||
adjGrand : Str -> Adj = \grand ->
|
adjGrand : Str -> Adj = \grand ->
|
||||||
mkAdj grand (grand + "s") (grand + "e") (grand + "ement") ;
|
let grande = case last grand of {
|
||||||
|
"e" => grand ;
|
||||||
|
_ => grand + "e"
|
||||||
|
}
|
||||||
|
in
|
||||||
|
mkAdj grand (grand + "s") grande (grande + "ment") ;
|
||||||
|
|
||||||
-- Masculine form used for adverbial; also covers "carré".
|
-- Masculine form used for adverbial; also covers "carré".
|
||||||
|
|
||||||
@@ -154,6 +162,7 @@ oper
|
|||||||
"er" => adjCher creux ;
|
"er" => adjCher creux ;
|
||||||
_ => case Predef.dp 1 creux of {
|
_ => case Predef.dp 1 creux of {
|
||||||
"s" => adjFrancais creux ;
|
"s" => adjFrancais creux ;
|
||||||
|
"x" => adjFrancais creux ;
|
||||||
"e" => adjJeune creux ;
|
"e" => adjJeune creux ;
|
||||||
"é" => adjJoli creux ;
|
"é" => adjJoli creux ;
|
||||||
"i" => adjJoli creux ;
|
"i" => adjJoli creux ;
|
||||||
|
|||||||
@@ -170,6 +170,10 @@ oper
|
|||||||
|
|
||||||
adegA : ADeg -> A ;
|
adegA : ADeg -> A ;
|
||||||
|
|
||||||
|
-- For prefixed adjectives, the following function is
|
||||||
|
-- provided.
|
||||||
|
|
||||||
|
prefADeg : ADeg -> ADeg ;
|
||||||
|
|
||||||
--2 Adverbs
|
--2 Adverbs
|
||||||
|
|
||||||
@@ -284,7 +288,7 @@ oper
|
|||||||
mkNP x g n = let np = mkNameNounPhrase x g in
|
mkNP x g n = let np = mkNameNounPhrase x g in
|
||||||
{s = np.s ; g = np.g ; p = np.p ; c = np.c ; n = n ; lock_NP = <>} ;
|
{s = np.s ; g = np.g ; p = np.p ; c = np.c ; n = n ; lock_NP = <>} ;
|
||||||
|
|
||||||
mkA a b c d = mkAdj a b c d ** {p = False ; lock_A = <>} ;
|
mkA a b c d = mkAdj a c b d ** {p = False ; lock_A = <>} ;
|
||||||
regA a = mkAdjReg a False ** {p = False ; lock_A = <>} ;
|
regA a = mkAdjReg a False ** {p = False ; lock_A = <>} ;
|
||||||
prefA a = {s = a.s ; p = True ; lock_A = <>} ;
|
prefA a = {s = a.s ; p = True ; lock_A = <>} ;
|
||||||
|
|
||||||
@@ -294,6 +298,7 @@ oper
|
|||||||
compADeg a = {s = table {Pos => a.s ; _ => \\f => "plus" ++ a.s ! f} ; p = a.p ;
|
compADeg a = {s = table {Pos => a.s ; _ => \\f => "plus" ++ a.s ! f} ; p = a.p ;
|
||||||
lock_ADeg = <>} ;
|
lock_ADeg = <>} ;
|
||||||
regADeg a = compADeg (regA a) ;
|
regADeg a = compADeg (regA a) ;
|
||||||
|
prefADeg a = {s = a.s ; p = True ; lock_ADeg = <>} ;
|
||||||
|
|
||||||
adegA a = {s = a.s ! Pos ; p = a.p ; lock_A = <>} ;
|
adegA a = {s = a.s ! Pos ; p = a.p ; lock_A = <>} ;
|
||||||
|
|
||||||
|
|||||||
246
lib/resource/french/SwadeshLexFre.gf
Normal file
246
lib/resource/french/SwadeshLexFre.gf
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
--# -path=.:../abstract:../../prelude:../romance
|
||||||
|
|
||||||
|
concrete SwadeshLexFre of SwadeshLex = CategoriesFre
|
||||||
|
** open StructuralFre, RulesFre, SyntaxFre, ParadigmsFre, VerbsFre,
|
||||||
|
BasicFre, Prelude in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
-- Pronouns
|
||||||
|
|
||||||
|
i_NP = i_NP ;
|
||||||
|
thou_NP = thou_NP ;
|
||||||
|
he_NP = he_NP ;
|
||||||
|
we_NP = we_NP ;
|
||||||
|
you_NP = you_NP ;
|
||||||
|
they_NP = they_NP ;
|
||||||
|
who8many_IP = who8many_IP ;
|
||||||
|
who8one_IP = who8one_IP ;
|
||||||
|
what8many_IP = what8many_IP ;
|
||||||
|
what8one_IP = what8one_IP ;
|
||||||
|
|
||||||
|
-- Determiners
|
||||||
|
|
||||||
|
this_Det = this_Det ;
|
||||||
|
that_Det = that_Det ;
|
||||||
|
all_NDet = all_NDet ;
|
||||||
|
many_Det = many_Det ;
|
||||||
|
some_Det = some_Det ;
|
||||||
|
few_Det = mkDeterminer1 Pl ("peu" ++ elisDe) ;
|
||||||
|
other_Det = mkDeterminer1 Pl ["d'autres"] ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Adverbs
|
||||||
|
|
||||||
|
here_Adv = here_Adv;
|
||||||
|
there_Adv = there_Adv;
|
||||||
|
where_IAdv = where_IAdv;
|
||||||
|
when_IAdv = when_IAdv;
|
||||||
|
how_IAdv = how_IAdv;
|
||||||
|
|
||||||
|
-- not : Adv ; -- ?
|
||||||
|
|
||||||
|
-- Conjunctions
|
||||||
|
|
||||||
|
and_Conj = and_Conj ;
|
||||||
|
|
||||||
|
-- Prepositions
|
||||||
|
|
||||||
|
at_Prep = justCase dative.p1 ;
|
||||||
|
in_Prep = StructuralFre.in_Prep ;
|
||||||
|
with_Prep = StructuralFre.with_Prep ;
|
||||||
|
|
||||||
|
-- Numerals
|
||||||
|
|
||||||
|
one_Num = UseNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))) ;
|
||||||
|
two_Num = UseNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2))))) ;
|
||||||
|
three_Num = UseNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))) ;
|
||||||
|
four_Num = UseNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n4))))) ;
|
||||||
|
five_Num = UseNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))) ;
|
||||||
|
|
||||||
|
-- Adjectives
|
||||||
|
|
||||||
|
bad_ADeg = bad_ADeg ;
|
||||||
|
big_ADeg = big_ADeg ;
|
||||||
|
black_ADeg = black_ADeg ;
|
||||||
|
cold_ADeg = cold_ADeg ;
|
||||||
|
correct_ADeg = regADeg "correct" ;
|
||||||
|
dirty_ADeg = dirty_ADeg ;
|
||||||
|
dry_ADeg = compADeg (mkA "sec" "sèche" "secs" "sèches") ;
|
||||||
|
dull_ADeg = regADeg "émoussé" ;
|
||||||
|
far_ADeg = regADeg "lointain" ;
|
||||||
|
full_ADeg = regADeg "plein" ;
|
||||||
|
good_ADeg = good_ADeg ;
|
||||||
|
green_ADeg = green_ADeg ;
|
||||||
|
heavy_ADeg = regADeg "lourd" ;
|
||||||
|
long_ADeg = long_ADeg ;
|
||||||
|
narrow_ADeg = narrow_ADeg ;
|
||||||
|
near_ADeg = regADeg "proche" ;
|
||||||
|
new_ADeg = new_ADeg ;
|
||||||
|
old_ADeg = old_ADeg ;
|
||||||
|
red_ADeg = red_ADeg ;
|
||||||
|
rotten_ADeg = regADeg "pourri" ;
|
||||||
|
round_ADeg = regADeg "rond" ;
|
||||||
|
sharp_ADeg = regADeg "tranchant" ;
|
||||||
|
short_ADeg = short_ADeg ;
|
||||||
|
small_ADeg = small_ADeg ;
|
||||||
|
smooth_ADeg = regADeg "lisse" ;
|
||||||
|
straight_ADeg = regADeg "droite" ;
|
||||||
|
thick_ADeg = thick_ADeg ;
|
||||||
|
thin_ADeg = thin_ADeg ;
|
||||||
|
warm_ADeg = warm_ADeg ;
|
||||||
|
wet_ADeg = regADeg "mouillé" ;
|
||||||
|
white_ADeg = white_ADeg ;
|
||||||
|
wide_ADeg = regADeg "large" ;
|
||||||
|
yellow_ADeg = yellow_ADeg ;
|
||||||
|
|
||||||
|
left_A = regA "gauche" ;
|
||||||
|
right_A = regA "droite" ;
|
||||||
|
|
||||||
|
-- Nouns
|
||||||
|
|
||||||
|
animal_N = regN "animal" masculine ;
|
||||||
|
ashes_N = regN "cendre" masculine ;
|
||||||
|
back_N = regN "dos" masculine ;
|
||||||
|
bark_N = regN "écorce" feminine ;
|
||||||
|
belly_N = regN "ventre" masculine ;
|
||||||
|
bird_N = bird_N;
|
||||||
|
blood_N = regN "sang" masculine ;
|
||||||
|
bone_N = regN "os" masculine ;
|
||||||
|
breast_N = regN "sein" masculine ; --- poitrine
|
||||||
|
child_N = child_N ;
|
||||||
|
cloud_N = regN "nuage" masculine ;
|
||||||
|
day_N = regN "jour" masculine ;
|
||||||
|
dog_N = dog_N ;
|
||||||
|
dust_N = regN "poussière" feminine ;
|
||||||
|
ear_N = regN "oreille" feminine ;
|
||||||
|
earth_N = regN "terre" feminine ;
|
||||||
|
egg_N = regN "oeuf" masculine ;
|
||||||
|
eye_N = mkN "oeil" "yeux" masculine ;
|
||||||
|
fat_N = regN "graisse" feminine ;
|
||||||
|
father_N = UseN2 father_N2 ;
|
||||||
|
feather_N = regN "plume" feminine ;
|
||||||
|
fingernail_N = regN "ongle" masculine ;
|
||||||
|
fire_N = regN "feu" masculine ;
|
||||||
|
fish_N = fish_N ;
|
||||||
|
flower_N = regN "fleur" feminine ;
|
||||||
|
fog_N = regN "brouillard" masculine ;
|
||||||
|
foot_N = regN "pied" masculine ;
|
||||||
|
forest_N = regN "forêt" feminine ;
|
||||||
|
fruit_N = fruit_N ;
|
||||||
|
grass_N = regN "herbe" feminine ;
|
||||||
|
guts_N = regN "entraille" feminine ;
|
||||||
|
hair_N = regN "cheveu" masculine ;
|
||||||
|
hand_N = regN "main" masculine ;
|
||||||
|
head_N = regN "tête" feminine ;
|
||||||
|
heart_N = regN "coeur" masculine ;
|
||||||
|
horn_N = regN "corne" masculine ;
|
||||||
|
husband_N = regN "mari" masculine ;
|
||||||
|
ice_N = regN "glace" feminine ;
|
||||||
|
knee_N = regN "genou" masculine ;
|
||||||
|
lake_N = lake_N ;
|
||||||
|
leaf_N = regN "feuille" feminine ;
|
||||||
|
leg_N = regN "jambe" feminine ;
|
||||||
|
liver_N = regN "foie" masculine ;
|
||||||
|
louse_N = regN "pou" masculine ;
|
||||||
|
man_N = man_N ;
|
||||||
|
meat_N = meat_N ;
|
||||||
|
moon_N = moon_N ;
|
||||||
|
mother_N = UseN2 mother_N2 ;
|
||||||
|
mountain_N = mountain_N ;
|
||||||
|
mouth_N = regN "bouche" masculine ;
|
||||||
|
name_N = regN "nom" masculine ;
|
||||||
|
neck_N = mkN "cou" "cous" masculine ;
|
||||||
|
night_N = regN "nuit" feminine ;
|
||||||
|
nose_N = regN "nez" masculine ;
|
||||||
|
person_N = regN "personne" feminine ;
|
||||||
|
rain_N = regN "pluie" feminine ;
|
||||||
|
river_N = river_N ;
|
||||||
|
road_N = regN "route" feminine ;
|
||||||
|
root_N = regN "racine" feminine ;
|
||||||
|
rope_N = regN "corde" feminine ;
|
||||||
|
salt_N = regN "sel" masculine ;
|
||||||
|
sand_N = regN "sable" masculine ;
|
||||||
|
sea_N = sea_N ;
|
||||||
|
seed_N = regN "graine" masculine ;
|
||||||
|
skin_N = regN "peau" masculine ;
|
||||||
|
sky_N = mkN "ciel" "cieux" masculine ;
|
||||||
|
smoke_N = regN "fumée" feminine ;
|
||||||
|
snake_N = snake_N ;
|
||||||
|
snow_N = regN "neige" feminine ;
|
||||||
|
star_N = star_N ;
|
||||||
|
stick_N = regN "bâton" masculine ;
|
||||||
|
stone_N = stone_N ;
|
||||||
|
sun_N = sun_N ;
|
||||||
|
tail_N = regN "queue" feminine ;
|
||||||
|
tongue_N = regN "langue" feminine ;
|
||||||
|
tooth_N = regN "dent" feminine ;
|
||||||
|
tree_N = tree_N ;
|
||||||
|
water_N = water_N ;
|
||||||
|
wife_N = regN "femme" feminine ;
|
||||||
|
wind_N = regN "vent" masculine ;
|
||||||
|
wing_N = regN "aile" feminine ;
|
||||||
|
woman_N = woman_N ;
|
||||||
|
worm_N = regN "ver" masculine ;
|
||||||
|
year_N = regN "an" masculine ; --- année
|
||||||
|
|
||||||
|
-- Verbs
|
||||||
|
|
||||||
|
bite_V = UseV2 mordre_V2 ;
|
||||||
|
blow_V = regV "souffler" ;
|
||||||
|
breathe_V = regV "respirer" ;
|
||||||
|
burn_V = regV "brûler" ;
|
||||||
|
come_V = venir_V ;
|
||||||
|
count_V = regV "conter" ;
|
||||||
|
cut_V = regV "tailler" ;
|
||||||
|
die_V = mourir_V ;
|
||||||
|
dig_V = regV "creuser" ;
|
||||||
|
drink_V = UseV2 boire_V2 ;
|
||||||
|
eat_V = regV "manger" ;
|
||||||
|
fall_V = regV "tomber" ;
|
||||||
|
fear_V = UseV2 craindre_V2 ;
|
||||||
|
fight_V = regV "lutter" ;
|
||||||
|
float_V = regV "flotter" ;
|
||||||
|
flow_V = regV "couler" ;
|
||||||
|
fly_V = regV "voler" ;
|
||||||
|
freeze_V = regV "geler" ; ---- check conjugation
|
||||||
|
give_V = regV "donner" ;
|
||||||
|
hear_V = UseV2 entendre_V2 ;
|
||||||
|
hit_V = regV "frapper" ;
|
||||||
|
hold_V = UseV2 tenir_V2 ;
|
||||||
|
hunt_V = regV "chasser" ;
|
||||||
|
kill_V = regV "tuer" ;
|
||||||
|
know_V = UseV2 savoir_V2 ; --- connaître
|
||||||
|
laugh_V = UseV2 rire_V2 ;
|
||||||
|
lie_V = UseV2 étendre_V2 ; ---- reflexive
|
||||||
|
live_V = UseV2 vivre_V2 ;
|
||||||
|
play_V = regV "jouer" ;
|
||||||
|
pull_V = regV "tirer" ;
|
||||||
|
push_V = regV "pousser" ;
|
||||||
|
rub_V = regV "frotter" ;
|
||||||
|
say_V = UseV2 dire_V2 ;
|
||||||
|
scratch_V = regV "gratter" ;
|
||||||
|
see_V = UseV2 voir_V2 ;
|
||||||
|
sew_V = regV "semer"; ---- conjug
|
||||||
|
sing_V = regV "chanter" ;
|
||||||
|
sit_V = UseV2 asseoir_V2 ; --- refl
|
||||||
|
sleep_V = UseV2 dormir_V2 ;
|
||||||
|
smell_V = UseV2 sentir_V2 ;
|
||||||
|
spit_V = regV "cracher" ;
|
||||||
|
split_V = UseV2 fendre_V2 ;
|
||||||
|
squeeze_V = regV "squeeze" ;
|
||||||
|
stab_V = regV "serrer" ;
|
||||||
|
stand_V = regV "lever" ; ---- refl ----
|
||||||
|
suck_V = regV "sucer" ;
|
||||||
|
swell_V = regV "gonfler" ;
|
||||||
|
swim_V = regV "nager" ;
|
||||||
|
think_V = regV "penser" ;
|
||||||
|
throw_V = regV "jeter" ;
|
||||||
|
tie_V = regV "lier" ;
|
||||||
|
turn_V = regV "tourner" ;
|
||||||
|
vomit_V = regV "vomir" ;
|
||||||
|
walk_V = regV "marcher" ;
|
||||||
|
wash_V = regV "laver" ;
|
||||||
|
wipe_V = regV "essuyer" ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -85,7 +85,7 @@ lin
|
|||||||
-- Adverbs.
|
-- Adverbs.
|
||||||
|
|
||||||
AdjAdv a = {s = a.s ! AA} ;
|
AdjAdv a = {s = a.s ! AA} ;
|
||||||
AdvVP = adVerbPhrase ;
|
---- AdvVP = adVerbPhrase ;
|
||||||
AdvPP p = p ;
|
AdvPP p = p ;
|
||||||
|
|
||||||
PrepNP = prepNounPhrase ;
|
PrepNP = prepNounPhrase ;
|
||||||
|
|||||||
@@ -1411,4 +1411,125 @@ oper
|
|||||||
siSubj, quandSubj : Subjunction ;
|
siSubj, quandSubj : Subjunction ;
|
||||||
|
|
||||||
ouiPhr, noPhr : Utterance ;
|
ouiPhr, noPhr : Utterance ;
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
---- for Sats; to be moved earlier
|
||||||
|
|
||||||
|
Sats : Type = {
|
||||||
|
s1 : Str ; -- je je
|
||||||
|
s3 : Str ; -- (ne) le lui (ne)
|
||||||
|
s4 : VF => Str ; -- ai ai
|
||||||
|
s5 : Str ; -- toujours (pas) toujours (pas)
|
||||||
|
s6 : Str ; -- (dit) directement (voulu) le lui dire directement
|
||||||
|
aux : VAux ;
|
||||||
|
g,g2 : Gender ; -- features for main verb and participle
|
||||||
|
n,n2 : Number ;
|
||||||
|
p : Person -- feature of subject
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
verbClForm :
|
||||||
|
Verb -> ClForm -> Gender -> Number -> Person -> Gender -> Number -> (Str * Str) =
|
||||||
|
\verb,cl,g,n,p,g2,n2 ->
|
||||||
|
let
|
||||||
|
aimee = verb.s ! VPart g2 n2 ;
|
||||||
|
auxv = (auxVerb verb).s ;
|
||||||
|
aime : TMode -> Str = \t -> verb.s ! (VFin t n p) ;
|
||||||
|
avoir : TMode -> Str = \t -> auxv ! (VFin t n p) ;
|
||||||
|
aimer = verb.s ! VInfin ;
|
||||||
|
avoirr = auxv ! VInfin
|
||||||
|
in
|
||||||
|
case cl of {
|
||||||
|
ClPres Simul m => <aime (VPres m), []> ;
|
||||||
|
ClPres a m => <avoir (VPres m), aimee> ;
|
||||||
|
ClImperf Simul m => <aime (VImperf m), []> ;
|
||||||
|
ClImperf a m => <avoir (VImperf m), aimee> ;
|
||||||
|
ClPasse Simul => <aime VPasse, []> ;
|
||||||
|
ClPasse a => <avoir VPasse, aimee> ;
|
||||||
|
ClFut Simul => <aime VFut, []> ;
|
||||||
|
ClFut a => <avoir VFut, aimee> ;
|
||||||
|
ClCondit Simul => <aime VCondit, []> ;
|
||||||
|
ClCondit a => <avoir VCondit, aimee> ;
|
||||||
|
ClInfinit Simul => <aimer, []> ;
|
||||||
|
ClInfinit a => <avoirr, aimee>
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkSats : NounPhrase -> Verb -> Sats = \subj,verb ->
|
||||||
|
let ifEsse : (T : Type) -> T -> T -> T = \T,e,h ->
|
||||||
|
case verb.aux of {
|
||||||
|
AEsse => e ;
|
||||||
|
AHabere => h
|
||||||
|
}
|
||||||
|
in
|
||||||
|
{s1 = subj.s ! unstressed nominative ;
|
||||||
|
s3 = [] ;
|
||||||
|
s4 = verb.s ;
|
||||||
|
s5, s6 = [] ;
|
||||||
|
aux = verb.aux ;
|
||||||
|
g = pgen2gen subj.g ;
|
||||||
|
n = subj.n ;
|
||||||
|
p = subj.p ;
|
||||||
|
g2 = ifEsse Gender (pgen2gen subj.g) Masc ;
|
||||||
|
n2 = ifEsse Number subj.n Sg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
insertObject : Sats -> CaseA -> Str -> NounPhrase -> Sats = \sats, c, prep, obj ->
|
||||||
|
let
|
||||||
|
ifClit : (T : Type) -> T -> T -> T =
|
||||||
|
\T -> if_then_else T (andB (isNounPhraseClit obj) (isClitCase c)) ;
|
||||||
|
object = obj.s ! (case2pformClit c) ;
|
||||||
|
clit = ifClit Str object [] ;
|
||||||
|
np = ifClit Str [] object
|
||||||
|
in
|
||||||
|
{s1 = sats.s1 ;
|
||||||
|
s3 = sats.s3 ++ clit ; ---- or clit ++ s3, dep. on clits
|
||||||
|
s4 = sats.s4 ;
|
||||||
|
s5 = sats.s5 ;
|
||||||
|
s6 = sats.s6 ++ prep ++ np ;
|
||||||
|
aux = sats.aux ;
|
||||||
|
g = sats.g ;
|
||||||
|
n = sats.n ;
|
||||||
|
g2 = ifClit Gender (pgen2gen obj.g) sats.g2 ; ---- only for clit acc
|
||||||
|
n2 = ifClit Number obj.n sats.n2 ;
|
||||||
|
p = sats.p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
insertExtrapos : Sats -> Str -> Sats = \sats,obj ->
|
||||||
|
{s1 = sats.s1 ;
|
||||||
|
s3 = sats.s3 ;
|
||||||
|
s4 = sats.s4 ;
|
||||||
|
s5 = sats.s5 ;
|
||||||
|
s6 = sats.s6 ++ obj ;
|
||||||
|
aux = sats.aux ;
|
||||||
|
g = sats.g ;
|
||||||
|
n = sats.n ;
|
||||||
|
g2 = sats.g2 ;
|
||||||
|
n2 = sats.n2 ;
|
||||||
|
p = sats.p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkSatsObject : NounPhrase -> TransVerb -> NounPhrase -> Sats = \subj,verb,obj ->
|
||||||
|
insertObject (mkSats subj verb) verb.c verb.s2 obj ;
|
||||||
|
|
||||||
|
mkSatsCopula : NounPhrase -> Str -> Sats = \subj,obj ->
|
||||||
|
mkSatsObject subj
|
||||||
|
(mkTransVerbDir copula) --- hack to reuse
|
||||||
|
(nameNounPhrase (mkProperName obj Masc)) ; --- this function
|
||||||
|
|
||||||
|
sats2clause : Sats -> Clause =
|
||||||
|
\sats -> {s = \\b,cf =>
|
||||||
|
let
|
||||||
|
je = sats.s1 ;
|
||||||
|
lui = sats.s3 ;
|
||||||
|
dire = verbClForm {s = sats.s4 ; aux = sats.aux}
|
||||||
|
cf sats.g sats.n sats.p sats.g2 sats.n2 ;
|
||||||
|
ai = dire.p1 ;
|
||||||
|
dit = dire.p2 ;
|
||||||
|
toujours = sats.s5 ;
|
||||||
|
directement = sats.s6
|
||||||
|
in
|
||||||
|
je ++ lui ++ ai ++ toujours ++ dit ++ directement
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user