mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -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 ;
|
||||
ask_V2Q = mkV2Q (regV "demander") dative ;
|
||||
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 ;
|
||||
beautiful_ADeg = regADeg "joli" ; ---- beau
|
||||
beautiful_ADeg = prefADeg (regADeg "joli") ; ---- beau
|
||||
become_VA = mkVA devenir_V ;
|
||||
beer_N = regN "bière" feminine ;
|
||||
beg_V2V = mkV2V (regV "demander") accusative dative ;
|
||||
big_ADeg = regADeg "grand" ;
|
||||
big_ADeg = prefADeg (regADeg "grand") ;
|
||||
bike_N = regN "vélo" masculine ;
|
||||
bird_N = regN "oiseau" masculine ;
|
||||
black_ADeg = regADeg "noir" ;
|
||||
@@ -83,8 +83,8 @@ lin
|
||||
girl_N = regN "fille" feminine ;
|
||||
glove_N = regN "gant" masculine ;
|
||||
gold_N = regN "or" masculine ;
|
||||
good_ADeg = mkADeg (mkA "bon" "bonne" "bons" "bien")
|
||||
(mkA "meilleur" "meilleure" "meilleurs" "mieux") ;
|
||||
good_ADeg = prefADeg (mkADeg (mkA "bon" "bonne" "bons" "bien")
|
||||
(mkA "meilleur" "meilleure" "meilleurs" "mieux")) ;
|
||||
go_V = aller_V ;
|
||||
green_ADeg = regADeg "vert" ;
|
||||
harbour_N = regN "port" masculine ;
|
||||
@@ -123,10 +123,11 @@ lin
|
||||
mountain_N = regN "montagne" feminine ;
|
||||
music_N = regN "musique" feminine ;
|
||||
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 ;
|
||||
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 ;
|
||||
paint_V2A = mkV2A (v2V peindre_V2) accusative ;
|
||||
paper_N = regN "papier" masculine ;
|
||||
@@ -167,7 +168,7 @@ lin
|
||||
silver_N = regN "argent" masculine ;
|
||||
sister_N = regN "soeur" feminine ;
|
||||
sleep_V = v2V dormir_V2 ;
|
||||
small_ADeg = regADeg "petit" ;
|
||||
small_ADeg = prefADeg (regADeg "petit") ;
|
||||
snake_N = regN "serpent" masculine ;
|
||||
sock_N = regN "chaussette" feminine ;
|
||||
speak_V2 = dirV2 (regV "parler") ;
|
||||
@@ -201,7 +202,7 @@ lin
|
||||
war_N = regN "guerre" masculine ;
|
||||
watch_V2 = dirV2 (regV "regarder") ;
|
||||
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 ;
|
||||
wine_N = regN "vin" masculine ;
|
||||
win_V2 = dirV2 (regV "gagner") ; ---- vaincre
|
||||
@@ -210,7 +211,7 @@ lin
|
||||
wood_N = regN "bois" masculine ;
|
||||
write_V2 = écrire_V2 ;
|
||||
yellow_ADeg = regADeg "jaune" ;
|
||||
young_ADeg = regADeg "jeune" ;
|
||||
young_ADeg = prefADeg (regADeg "jeune") ;
|
||||
|
||||
do_V2 = faire_V2 ;
|
||||
now_Adv = mkAdv "maintenant" ;
|
||||
|
||||
@@ -106,8 +106,11 @@ oper
|
||||
-- Then the regular and invariant patterns.
|
||||
|
||||
adjReg : Str -> Gender => Number => Str = \bu -> table {
|
||||
Masc => nomReg bu ;
|
||||
Fem => nomReg (bu + "e")
|
||||
Masc => (mkNomReg bu Masc).s ;
|
||||
Fem => nomReg (case last bu of {
|
||||
"e" => bu ;
|
||||
_ => bu + "e"
|
||||
})
|
||||
} ;
|
||||
|
||||
adjInvar : Str -> Gender => Number => Str = \bien ->
|
||||
@@ -116,7 +119,12 @@ oper
|
||||
-- Adjectives themselves are records. Here the most common cases:
|
||||
|
||||
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é".
|
||||
|
||||
@@ -154,6 +162,7 @@ oper
|
||||
"er" => adjCher creux ;
|
||||
_ => case Predef.dp 1 creux of {
|
||||
"s" => adjFrancais creux ;
|
||||
"x" => adjFrancais creux ;
|
||||
"e" => adjJeune creux ;
|
||||
"é" => adjJoli creux ;
|
||||
"i" => adjJoli creux ;
|
||||
|
||||
@@ -170,6 +170,10 @@ oper
|
||||
|
||||
adegA : ADeg -> A ;
|
||||
|
||||
-- For prefixed adjectives, the following function is
|
||||
-- provided.
|
||||
|
||||
prefADeg : ADeg -> ADeg ;
|
||||
|
||||
--2 Adverbs
|
||||
|
||||
@@ -284,7 +288,7 @@ oper
|
||||
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 = <>} ;
|
||||
|
||||
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 = <>} ;
|
||||
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 ;
|
||||
lock_ADeg = <>} ;
|
||||
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 = <>} ;
|
||||
|
||||
|
||||
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.
|
||||
|
||||
AdjAdv a = {s = a.s ! AA} ;
|
||||
AdvVP = adVerbPhrase ;
|
||||
---- AdvVP = adVerbPhrase ;
|
||||
AdvPP p = p ;
|
||||
|
||||
PrepNP = prepNounPhrase ;
|
||||
|
||||
@@ -1411,4 +1411,125 @@ oper
|
||||
siSubj, quandSubj : Subjunction ;
|
||||
|
||||
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