mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 00:22:51 -06:00
Finnish works all the way through to Lang
This commit is contained in:
239
lib/resource/finnish/BasicFin.gf
Normal file
239
lib/resource/finnish/BasicFin.gf
Normal file
@@ -0,0 +1,239 @@
|
|||||||
|
--# -path=.:../abstract:../../prelude
|
||||||
|
--# -val
|
||||||
|
|
||||||
|
concrete BasicFin of Basic = CategoriesFin ** open ParadigmsFin in {
|
||||||
|
|
||||||
|
flags
|
||||||
|
startcat=Phr ; lexer=textlit ; unlexer=text ;
|
||||||
|
optimize=all ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
{-
|
||||||
|
airplane_N = regN "airplane" ;
|
||||||
|
answer_V2S = mkV2S (regV "answer") "to" ;
|
||||||
|
apartment_N = regN "apartment" ;
|
||||||
|
apple_N = regN "apple" ;
|
||||||
|
art_N = regN "art" ;
|
||||||
|
ask_V2Q = mkV2Q (regV "ask") [] ;
|
||||||
|
baby_N = regN "baby" ;
|
||||||
|
bad_ADeg = regADeg "bad" ;
|
||||||
|
bank_N = regN "bank" ;
|
||||||
|
beautiful_ADeg = regADeg "beautiful" ;
|
||||||
|
become_VA = mkVA (irregV "become" "became" "become") ;
|
||||||
|
beer_N = regN "beer" ;
|
||||||
|
beg_V2V = mkV2V (regDuplV "beg") [] "to" ;
|
||||||
|
big_ADeg = regADeg "big" ;
|
||||||
|
bike_N = regN "bike" ;
|
||||||
|
bird_N = regN "bird" ;
|
||||||
|
black_ADeg = regADeg "black" ;
|
||||||
|
blue_ADeg = regADeg "blue" ;
|
||||||
|
boat_N = regN "boat" ;
|
||||||
|
book_N = regN "book" ;
|
||||||
|
boot_N = regN "boot" ;
|
||||||
|
boss_N = regN "boss" ;
|
||||||
|
boy_N = regN "boy" ;
|
||||||
|
bread_N = regN "bread" ;
|
||||||
|
break_V2 = dirV2 (irregV "break" "broke" "broken") ;
|
||||||
|
broad_ADeg = regADeg "broad" ;
|
||||||
|
brother_N2 = regN2 "brother" ;
|
||||||
|
brown_ADeg = regADeg "brown" ;
|
||||||
|
butter_N = regN "butter" ;
|
||||||
|
buy_V2 = dirV2 (irregV "buy" "bought" "bought") ;
|
||||||
|
camera_N = regN "camera" ;
|
||||||
|
cap_N = regN "cap" ;
|
||||||
|
car_N = regN "car" ;
|
||||||
|
carpet_N = regN "carpet" ;
|
||||||
|
cat_N = regN "cat" ;
|
||||||
|
ceiling_N = regN "ceiling" ;
|
||||||
|
chair_N = regN "chair" ;
|
||||||
|
cheese_N = regN "cheese" ;
|
||||||
|
child_N = mk2N "child" "children" ;
|
||||||
|
church_N = regN "church" ;
|
||||||
|
city_N = regN "city" ;
|
||||||
|
clean_ADeg = regADeg "clean" ;
|
||||||
|
clever_ADeg = regADeg "clever" ;
|
||||||
|
close_V2 = dirV2 (regV "close") ;
|
||||||
|
coat_N = regN "coat" ;
|
||||||
|
cold_ADeg = regADeg "cold" ;
|
||||||
|
come_V = (irregV "come" "came" "come") ;
|
||||||
|
computer_N = regN "computer" ;
|
||||||
|
country_N = regN "country" ;
|
||||||
|
cousin_N = regN "cousin" ;
|
||||||
|
cow_N = regN "cow" ;
|
||||||
|
die_V = (regV "die") ;
|
||||||
|
dirty_ADeg = regADeg "dirty" ;
|
||||||
|
distance_N3 = mkN3 (regN "distance") "from" "to" ;
|
||||||
|
doctor_N = regN "doctor" ;
|
||||||
|
dog_N = regN "dog" ;
|
||||||
|
door_N = regN "door" ;
|
||||||
|
-}
|
||||||
|
drink_V2 = tvDir (regV "juoda") ;
|
||||||
|
{-
|
||||||
|
easy_A2V = mkA2V (regA "easy") "for" ;
|
||||||
|
eat_V2 = dirV2 (irregV "eat" "ate" "eaten") ;
|
||||||
|
empty_ADeg = regADeg "empty" ;
|
||||||
|
enemy_N = regN "enemy" ;
|
||||||
|
factory_N = regN "factory" ;
|
||||||
|
father_N2 = regN2 "father" ;
|
||||||
|
fear_VS = mkVS (regV "fear") ;
|
||||||
|
find_V2 = dirV2 (irregV "find" "found" "found") ;
|
||||||
|
fish_N = mk2N "fish" "fish" ;
|
||||||
|
floor_N = regN "floor" ;
|
||||||
|
forget_V2 = dirV2 (irregV "forget" "forgot" "forgotten") ;
|
||||||
|
fridge_N = regN "fridge" ;
|
||||||
|
friend_N = regN "friend" ;
|
||||||
|
fruit_N = regN "fruit" ;
|
||||||
|
fun_AV = mkAV (regA "fun") ;
|
||||||
|
garden_N = regN "garden" ;
|
||||||
|
girl_N = regN "girl" ;
|
||||||
|
glove_N = regN "glove" ;
|
||||||
|
gold_N = regN "gold" ;
|
||||||
|
good_ADeg = mkADeg "good" "better" "best" "well" ;
|
||||||
|
go_V = (mkV "go" "goes" "went" "gone" "going") ;
|
||||||
|
green_ADeg = regADeg "green" ;
|
||||||
|
harbour_N = regN "harbour" ;
|
||||||
|
hate_V2 = dirV2 (regV "hate") ;
|
||||||
|
hat_N = regN "hat" ;
|
||||||
|
have_V2 = dirV2 (mkV "have" "has" "had" "had" "having") ;
|
||||||
|
hear_V2 = dirV2 (irregV "hear" "heard" "heard") ;
|
||||||
|
hill_N = regN "hill" ;
|
||||||
|
hope_VS = mkVS (regV "hope") ;
|
||||||
|
horse_N = regN "horse" ;
|
||||||
|
hot_ADeg = regADeg "hot" ;
|
||||||
|
house_N = regN "house" ;
|
||||||
|
important_ADeg = compoundADeg (regA "important") ;
|
||||||
|
industry_N = regN "industry" ;
|
||||||
|
iron_N = regN "iron" ;
|
||||||
|
king_N = regN "king" ;
|
||||||
|
know_V2 = dirV2 (irregV "know" "knew" "known") ;
|
||||||
|
lake_N = regN "lake" ;
|
||||||
|
lamp_N = regN "lamp" ;
|
||||||
|
learn_V2 = dirV2 (regV "learn") ;
|
||||||
|
leather_N = regN "leather" ;
|
||||||
|
leave_V2 = dirV2 (irregV "leave" "left" "left") ;
|
||||||
|
like_V2 = dirV2 (regV "like") ;
|
||||||
|
listen_V2 = dirV2 (regV "listen") ;
|
||||||
|
live_V = (regV "live") ;
|
||||||
|
long_ADeg = regADeg "long" ;
|
||||||
|
lose_V2 = dirV2 (irregV "lose" "lost" "lost") ;
|
||||||
|
love_N = regN "love" ;
|
||||||
|
love_V2 = dirV2 (regV "love") ;
|
||||||
|
man_N = mk2N "man" "men" ;
|
||||||
|
married_A2 = mkA2 (regA "married") "to" ;
|
||||||
|
meat_N = regN "meat" ;
|
||||||
|
milk_N = regN "milk" ;
|
||||||
|
moon_N = regN "moon" ;
|
||||||
|
mother_N2 = regN2 "mother" ;
|
||||||
|
mountain_N = regN "mountain" ;
|
||||||
|
music_N = regN "music" ;
|
||||||
|
narrow_ADeg = regADeg "narrow" ;
|
||||||
|
new_ADeg = regADeg "new" ;
|
||||||
|
newspaper_N = regN "newspaper" ;
|
||||||
|
oil_N = regN "oil" ;
|
||||||
|
old_ADeg = regADeg "old" ;
|
||||||
|
open_V2 = dirV2 (regV "open") ;
|
||||||
|
paint_V2A = mkV2A (regV "paint") [] ;
|
||||||
|
paper_N = regN "paper" ;
|
||||||
|
peace_N = regN "peace" ;
|
||||||
|
pen_N = regN "pen" ;
|
||||||
|
planet_N = regN "planet" ;
|
||||||
|
plastic_N = regN "plastic" ;
|
||||||
|
play_V2 = dirV2 (regV "play") ;
|
||||||
|
policeman_N = regN "policeman" ;
|
||||||
|
priest_N = regN "priest" ;
|
||||||
|
probable_AS = mkAS (regA "probable") ;
|
||||||
|
queen_N = regN "queen" ;
|
||||||
|
radio_N = regN "radio" ;
|
||||||
|
rain_V0 = mkV0 (regV "rain") ;
|
||||||
|
read_V2 = dirV2 (irregV "read" "read" "read") ;
|
||||||
|
red_ADeg = regADeg "red" ;
|
||||||
|
religion_N = regN "religion" ;
|
||||||
|
restaurant_N = regN "restaurant" ;
|
||||||
|
river_N = regN "river" ;
|
||||||
|
rock_N = regN "rock" ;
|
||||||
|
roof_N = regN "roof" ;
|
||||||
|
rubber_N = regN "rubber" ;
|
||||||
|
run_V = (irregDuplV "run" "ran" "run") ;
|
||||||
|
say_VS = mkVS (irregV "say" "said" "said") ;
|
||||||
|
school_N = regN "school" ;
|
||||||
|
science_N = regN "science" ;
|
||||||
|
sea_N = regN "sea" ;
|
||||||
|
seek_V2 = dirV2 (irregV "seek" "sought" "sought") ;
|
||||||
|
see_V2 = dirV2 (irregV "see" "saw" "seen") ;
|
||||||
|
sell_V3 = dirV3 (irregV "sell" "sold" "sold") "to" ;
|
||||||
|
send_V3 = dirV3 (irregV "send" "sent" "sent") "to" ;
|
||||||
|
sheep_N = mk2N "sheep" "sheep" ;
|
||||||
|
ship_N = regN "ship" ;
|
||||||
|
shirt_N = regN "shirt" ;
|
||||||
|
shoe_N = regN "shoe" ;
|
||||||
|
shop_N = regN "shop" ;
|
||||||
|
short_ADeg = regADeg "short" ;
|
||||||
|
silver_N = regN "silver" ;
|
||||||
|
sister_N = regN "sister" ;
|
||||||
|
-}
|
||||||
|
sleep_V = regV "uinua" ;
|
||||||
|
{-
|
||||||
|
small_ADeg = regADeg "small" ;
|
||||||
|
snake_N = regN "snake" ;
|
||||||
|
sock_N = regN "sock" ;
|
||||||
|
speak_V2 = dirV2 (irregV "speak" "spoke" "spoken") ;
|
||||||
|
star_N = regN "star" ;
|
||||||
|
steel_N = regN "steel" ;
|
||||||
|
stone_N = regN "stone" ;
|
||||||
|
stove_N = regN "stove" ;
|
||||||
|
student_N = regN "student" ;
|
||||||
|
stupid_ADeg = regADeg "stupid" ;
|
||||||
|
sun_N = regN "sun" ;
|
||||||
|
switch8off_V2 = dirV2 (partV (regV "switch") "off") ;
|
||||||
|
switch8on_V2 = dirV2 (partV (regV "switch") "on") ;
|
||||||
|
table_N = regN "table" ;
|
||||||
|
talk_V3 = mkV3 (regV "talk") "to" "about" ;
|
||||||
|
teacher_N = regN "teacher" ;
|
||||||
|
teach_V2 = dirV2 (irregV "teach" "taught" "taught") ;
|
||||||
|
television_N = regN "television" ;
|
||||||
|
thick_ADeg = regADeg "thick" ;
|
||||||
|
thin_ADeg = regADeg "thin" ;
|
||||||
|
train_N = regN "train" ;
|
||||||
|
travel_V = (regDuplV "travel") ;
|
||||||
|
tree_N = regN "tree" ;
|
||||||
|
---- trousers_N = regN "trousers" ;
|
||||||
|
ugly_ADeg = regADeg "ugly" ;
|
||||||
|
understand_V2 = dirV2 (irregV "understand" "understood" "understood") ;
|
||||||
|
university_N = regN "university" ;
|
||||||
|
village_N = regN "village" ;
|
||||||
|
wait_V2 = mkV2 (regV "wait") "for" ;
|
||||||
|
walk_V = (regV "walk") ;
|
||||||
|
warm_ADeg = regADeg "warm" ;
|
||||||
|
war_N = regN "war" ;
|
||||||
|
watch_V2 = dirV2 (regV "watch") ;
|
||||||
|
water_N = regN "water" ;
|
||||||
|
white_ADeg = regADeg "white" ;
|
||||||
|
window_N = regN "window" ;
|
||||||
|
wine_N = regN "wine" ;
|
||||||
|
win_V2 = dirV2 (irregV "win" "won" "won") ;
|
||||||
|
woman_N = mk2N "woman" "women" ;
|
||||||
|
wonder_VQ = mkVQ (regV "wonder") ;
|
||||||
|
wood_N = regN "wood" ;
|
||||||
|
write_V2 = dirV2 (irregV "write" "wrote" "written") ;
|
||||||
|
yellow_ADeg = regADeg "yellow" ;
|
||||||
|
young_ADeg = regADeg "young" ;
|
||||||
|
|
||||||
|
do_V2 = dirV2 (mkV "do" "does" "did" "done" "doing") ;
|
||||||
|
now_Adv = mkAdv "now" ;
|
||||||
|
already_Adv = mkAdv "already" ;
|
||||||
|
song_N = regN "song" ;
|
||||||
|
add_V3 = dirV3 (regV "add") "to" ;
|
||||||
|
number_N = regN "number" ;
|
||||||
|
put_V2 = mkV2 (irregDuplV "put" "put" "put") [] ;
|
||||||
|
stop_V = regDuplV "stop" ;
|
||||||
|
jump_V = regV "jump" ;
|
||||||
|
here_Adv = mkAdv "here" ;
|
||||||
|
here7to_Adv = mkAdv "here" ;
|
||||||
|
here7from_Adv = mkAdv ["from here"] ;
|
||||||
|
there_Adv = mkAdv "there" ;
|
||||||
|
there7to_Adv = mkAdv "there" ;
|
||||||
|
there7from_Adv = mkAdv ["from there"] ;
|
||||||
|
-}
|
||||||
|
|
||||||
|
} ;
|
||||||
255
lib/resource/finnish/ClauseFin.gf
Normal file
255
lib/resource/finnish/ClauseFin.gf
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
--# -path=.:../abstract:../../prelude
|
||||||
|
|
||||||
|
concrete ClauseFin of Clause = CategoriesFin **
|
||||||
|
open Prelude, SyntaxFin in {
|
||||||
|
|
||||||
|
flags optimize=all ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
SPredV np v =
|
||||||
|
sats2clause (mkSats np v) ;
|
||||||
|
{-
|
||||||
|
SPredPassV subj v =
|
||||||
|
sats2clause (mkSatsCopula subj (v.s ! VPart (pgen2gen subj.g) subj.n)) ;
|
||||||
|
SPredV2 np v y =
|
||||||
|
sats2clause (mkSatsObject np v y) ;
|
||||||
|
SPredV3 subj verb obj1 obj2 =
|
||||||
|
sats2clause (insertObject (mkSatsObject subj verb obj1) verb.c3 verb.s3 obj2) ;
|
||||||
|
SPredReflV2 subj verb =
|
||||||
|
sats2clause (
|
||||||
|
mkSatsObject subj
|
||||||
|
{s = verb.s ; s2 = [] ; c = accusative ; aux = AEsse}
|
||||||
|
---- {s = verb.s ; s2 = verb.s2 ; c = verb.c ; aux = AEsse}
|
||||||
|
---- this produces huge cf - find out why! AR 16/3/2005
|
||||||
|
(reflPronNounPhrase (pgen2gen subj.g) subj.n subj.p)) ;
|
||||||
|
SPredVS subj verb sent =
|
||||||
|
sats2clause (
|
||||||
|
insertExtrapos (mkSats subj verb)
|
||||||
|
(\\b => embedConj ++ sent.s ! subordMode verb b)) ; ---- mn
|
||||||
|
SPredVQ subj verb quest =
|
||||||
|
sats2clause (
|
||||||
|
insertExtrapos (mkSats subj verb) (\\_ => quest.s ! IndirQ)) ;
|
||||||
|
SPredV2S subj verb obj sent =
|
||||||
|
sats2clause (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject subj verb obj)
|
||||||
|
(\\b => embedConj ++ sent.s ! subordMode verb b)
|
||||||
|
) ; ---- mn ;
|
||||||
|
SPredV2Q subj verb obj quest =
|
||||||
|
sats2clause (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject subj verb obj)
|
||||||
|
(\\_ => quest.s ! IndirQ)) ;
|
||||||
|
SPredVA subj verb adj =
|
||||||
|
sats2clause (
|
||||||
|
insertExtrapos (mkSats subj verb) (\\_ => adj.s ! AF (pgen2gen subj.g) subj.n)) ;
|
||||||
|
SPredV2A subj verb obj adj =
|
||||||
|
sats2clause (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject subj verb obj)
|
||||||
|
(\\_ => adj.s ! AF (pgen2gen obj.g) obj.n)) ;
|
||||||
|
SPredVV subj verb vp =
|
||||||
|
sats2clause (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSats subj verb)
|
||||||
|
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen subj.g ! subj.n ! subj.p)
|
||||||
|
) ;
|
||||||
|
|
||||||
|
SPredObjV2V subj verb obj vp =
|
||||||
|
sats2clause (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject subj verb obj)
|
||||||
|
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen obj.g ! obj.n ! obj.p)
|
||||||
|
) ;
|
||||||
|
SPredSubjV2V subj verb obj vp =
|
||||||
|
sats2clause (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject subj verb obj)
|
||||||
|
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen subj.g ! subj.n ! subj.p)
|
||||||
|
) ;
|
||||||
|
|
||||||
|
SPredProgVP np vp = sats2clause (progressiveSats np vp) ;
|
||||||
|
|
||||||
|
|
||||||
|
SPredAP subj adj =
|
||||||
|
sats2clause (mkSatsCopula subj (adj.s ! AF (pgen2gen subj.g) subj.n)) ;
|
||||||
|
SPredCN subj cn =
|
||||||
|
sats2clause (mkSatsCopula subj (indefNoun subj.n cn)) ;
|
||||||
|
SPredNP subj np =
|
||||||
|
sats2clause (mkSatsCopula subj (np.s ! stressed nominative)) ;
|
||||||
|
SPredAdv subj adv =
|
||||||
|
sats2clause (mkSatsCopula subj adv.s) ;
|
||||||
|
|
||||||
|
--------
|
||||||
|
|
||||||
|
QPredV np v =
|
||||||
|
sats2quest (mkSats (intNounPhrase np) v) ;
|
||||||
|
QPredPassV subj v =
|
||||||
|
sats2quest (mkSatsCopula (intNounPhrase subj) (v.s ! VPart subj.g subj.n)) ;
|
||||||
|
QPredV2 np v y =
|
||||||
|
sats2quest (mkSatsObject (intNounPhrase np) v y) ;
|
||||||
|
QPredV3 subj verb obj1 obj2 =
|
||||||
|
sats2quest (
|
||||||
|
insertObject (mkSatsObject (intNounPhrase subj) verb obj1) verb.c3 verb.s3 obj2
|
||||||
|
) ;
|
||||||
|
QPredReflV2 subj verb =
|
||||||
|
sats2quest (
|
||||||
|
mkSatsObject (intNounPhrase subj)
|
||||||
|
{s = verb.s ; s2 = [] ; c = accusative ; aux = AEsse}
|
||||||
|
(reflPronNounPhrase subj.g subj.n P3)) ;
|
||||||
|
QPredVS subj verb sent =
|
||||||
|
sats2quest (
|
||||||
|
insertExtrapos (mkSats (intNounPhrase subj) verb)
|
||||||
|
(\\b => embedConj ++ sent.s ! subordMode verb b)) ; ---- mn
|
||||||
|
QPredVQ subj verb quest =
|
||||||
|
sats2quest (
|
||||||
|
insertExtrapos (mkSats (intNounPhrase subj) verb) (\\_ => quest.s ! IndirQ)) ;
|
||||||
|
QPredV2S subj verb obj sent =
|
||||||
|
sats2quest (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject (intNounPhrase subj) verb obj)
|
||||||
|
(\\b => embedConj ++ sent.s ! subordMode verb b)
|
||||||
|
) ; ---- mn ;
|
||||||
|
QPredV2Q subj verb obj quest =
|
||||||
|
sats2quest (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject (intNounPhrase subj) verb obj)
|
||||||
|
(\\_ => quest.s ! IndirQ)) ;
|
||||||
|
QPredVA subj verb adj =
|
||||||
|
sats2quest (
|
||||||
|
insertExtrapos (mkSats (intNounPhrase subj) verb)
|
||||||
|
(\\_ => adj.s ! AF subj.g subj.n)) ;
|
||||||
|
QPredV2A subj verb obj adj =
|
||||||
|
sats2quest (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject (intNounPhrase subj) verb obj)
|
||||||
|
(\\_ => adj.s ! AF (pgen2gen obj.g) obj.n)) ;
|
||||||
|
QPredVV subj verb vp =
|
||||||
|
sats2quest (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSats (intNounPhrase subj) verb)
|
||||||
|
(\\_ => prepCase verb.c ++
|
||||||
|
vp.s ! VIInfinit ! subj.g ! (intNounPhrase subj).n ! P3)
|
||||||
|
) ;
|
||||||
|
QPredObjV2V subj verb obj vp =
|
||||||
|
sats2quest (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject (intNounPhrase subj) verb obj)
|
||||||
|
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen obj.g ! obj.n ! obj.p)
|
||||||
|
) ;
|
||||||
|
QPredSubjV2V subj verb obj vp =
|
||||||
|
sats2quest (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject (intNounPhrase subj) verb obj)
|
||||||
|
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! subj.g ! subj.n ! P3)
|
||||||
|
) ;
|
||||||
|
|
||||||
|
-- QPredProgVP
|
||||||
|
|
||||||
|
QPredAP subj adj =
|
||||||
|
sats2quest (mkSatsCopula (intNounPhrase subj) (adj.s ! AF subj.g subj.n)) ;
|
||||||
|
QPredCN subj cn =
|
||||||
|
sats2quest (mkSatsCopula (intNounPhrase subj) (indefNoun subj.n cn)) ;
|
||||||
|
QPredNP subj np =
|
||||||
|
sats2quest (mkSatsCopula (intNounPhrase subj) (np.s ! stressed nominative)) ;
|
||||||
|
QPredAdv subj adv =
|
||||||
|
sats2quest (mkSatsCopula (intNounPhrase subj) adv.s) ;
|
||||||
|
|
||||||
|
QPredProgVP np vp = sats2quest (progressiveSats (intNounPhrase np) vp) ;
|
||||||
|
|
||||||
|
|
||||||
|
----- gender and number of Adj
|
||||||
|
|
||||||
|
IPredV a v =
|
||||||
|
sats2verbPhrase a (mkSats pronImpers v) ;
|
||||||
|
IPredV2 a v y =
|
||||||
|
sats2verbPhrase a (mkSatsObject pronImpers v y) ;
|
||||||
|
IPredAP a adj =
|
||||||
|
sats2verbPhrase a (mkSatsCopula pronImpers (adj.s ! AF Masc Sg)) ;
|
||||||
|
IPredPassV a v =
|
||||||
|
sats2verbPhrase a (mkSatsCopula pronImpers (v.s ! VPart (pgen2gen pronImpers.g) pronImpers.n)) ;
|
||||||
|
IPredV3 a verb obj1 obj2 =
|
||||||
|
sats2verbPhrase a (insertObject (mkSatsObject pronImpers verb obj1) verb.c3 verb.s3 obj2) ;
|
||||||
|
IPredReflV2 a verb =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
mkSatsObject pronImpers
|
||||||
|
{s = verb.s ; s2 = [] ; c = accusative ; aux = AEsse}
|
||||||
|
---- {s = verb.s ; s2 = verb.s2 ; c = verb.c ; aux = AEsse}
|
||||||
|
---- this produces huge cf - find out why! AR 16/3/2005
|
||||||
|
(reflPronNounPhrase (pgen2gen pronImpers.g) pronImpers.n pronImpers.p)) ;
|
||||||
|
IPredVS a verb sent =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
insertExtrapos (mkSats pronImpers verb)
|
||||||
|
(\\b => embedConj ++ sent.s ! subordMode verb b)) ; ---- mn
|
||||||
|
IPredVQ a verb quest =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
insertExtrapos (mkSats pronImpers verb) (\\_ => quest.s ! IndirQ)) ;
|
||||||
|
IPredV2S a verb obj sent =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject pronImpers verb obj)
|
||||||
|
(\\b => embedConj ++ sent.s ! subordMode verb b)
|
||||||
|
) ; ---- mn ;
|
||||||
|
IPredV2Q a verb obj quest =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject pronImpers verb obj)
|
||||||
|
(\\_ => quest.s ! IndirQ)) ;
|
||||||
|
IPredVA a verb adj =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
insertExtrapos (mkSats pronImpers verb) (\\_ => adj.s ! AF (pgen2gen pronImpers.g) pronImpers.n)) ;
|
||||||
|
IPredV2A a verb obj adj =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject pronImpers verb obj)
|
||||||
|
(\\_ => adj.s ! AF (pgen2gen obj.g) obj.n)) ;
|
||||||
|
IPredVV a verb vp =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSats pronImpers verb)
|
||||||
|
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen pronImpers.g ! pronImpers.n ! pronImpers.p)
|
||||||
|
) ;
|
||||||
|
|
||||||
|
IPredObjV2V a verb obj vp =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject pronImpers verb obj)
|
||||||
|
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen obj.g ! obj.n ! obj.p)
|
||||||
|
) ;
|
||||||
|
IPredSubjV2V a verb obj vp =
|
||||||
|
sats2verbPhrase a (
|
||||||
|
insertExtrapos
|
||||||
|
(mkSatsObject pronImpers verb obj)
|
||||||
|
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen pronImpers.g ! pronImpers.n ! pronImpers.p)
|
||||||
|
) ;
|
||||||
|
|
||||||
|
|
||||||
|
IPredCN a cn =
|
||||||
|
sats2verbPhrase a (mkSatsCopula pronImpers (indefNoun pronImpers.n cn)) ;
|
||||||
|
IPredNP a np =
|
||||||
|
sats2verbPhrase a (mkSatsCopula pronImpers (np.s ! stressed nominative)) ;
|
||||||
|
IPredAdv a adv =
|
||||||
|
sats2verbPhrase a (mkSatsCopula pronImpers adv.s) ;
|
||||||
|
|
||||||
|
IPredProgVP a vp = sats2verbPhrase a (progressiveSats pronImpers vp) ;
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
{-
|
||||||
|
-- Use VPs
|
||||||
|
|
||||||
|
PredVP = predVerbGroupClause ;
|
||||||
|
IntVP = intVerbPhrase ;
|
||||||
|
RelVP = relVerbPhrase ;
|
||||||
|
|
||||||
|
|
||||||
|
PosVP tp = predVerbGroup True tp.a ;
|
||||||
|
NegVP tp = predVerbGroup False tp.a ;
|
||||||
|
|
||||||
|
AdvVP = adVerbPhrase ;
|
||||||
|
SubjVP = subjunctVerbPhrase ;
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
23
lib/resource/finnish/LangFin.gf
Normal file
23
lib/resource/finnish/LangFin.gf
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
--# -path=.:../abstract:../../prelude
|
||||||
|
|
||||||
|
concrete LangFin of Lang =
|
||||||
|
RulesFin,
|
||||||
|
ClauseFin,
|
||||||
|
StructuralFin,
|
||||||
|
BasicFin
|
||||||
|
---- TimeEng,
|
||||||
|
---- CountryEng
|
||||||
|
|
||||||
|
** open Prelude, ParadigmsFin in {
|
||||||
|
{-
|
||||||
|
lin
|
||||||
|
AdvDate d = prefixSS "on" d ;
|
||||||
|
AdvTime t = prefixSS "at" t ;
|
||||||
|
NWeekday w = w ;
|
||||||
|
PNWeekday w = nounPN w ;
|
||||||
|
|
||||||
|
PNCountry x = x ;
|
||||||
|
ANationality x = x ;
|
||||||
|
NLanguage x = x ;
|
||||||
|
-}
|
||||||
|
}
|
||||||
@@ -331,7 +331,7 @@ regV soutaa =
|
|||||||
taa = Predef.dp 3 soutaa ;
|
taa = Predef.dp 3 soutaa ;
|
||||||
aa = Predef.dp 2 taa ;
|
aa = Predef.dp 2 taa ;
|
||||||
--- souda = weakGrade (init soutaa) ;
|
--- souda = weakGrade (init soutaa) ;
|
||||||
juo = Predef.dp 2 soutaa ;
|
juo = Predef.tk 2 soutaa ;
|
||||||
o = Predef.dp 1 juo ;
|
o = Predef.dp 1 juo ;
|
||||||
joi = Predef.tk 2 juo + (o + "i")
|
joi = Predef.tk 2 juo + (o + "i")
|
||||||
in case taa of {
|
in case taa of {
|
||||||
|
|||||||
@@ -468,7 +468,7 @@ oper
|
|||||||
SForm =
|
SForm =
|
||||||
VFinite Tense Anteriority
|
VFinite Tense Anteriority
|
||||||
| VInfinit Anteriority
|
| VInfinit Anteriority
|
||||||
| VPresPart
|
| VImperat
|
||||||
;
|
;
|
||||||
|
|
||||||
SType = SDecl | SQuest ;
|
SType = SDecl | SQuest ;
|
||||||
@@ -476,6 +476,104 @@ oper
|
|||||||
oper
|
oper
|
||||||
Clause : Type = {s : SType => Bool => SForm => Str} ;
|
Clause : Type = {s : SType => Bool => SForm => Str} ;
|
||||||
|
|
||||||
|
Sats : Type = {
|
||||||
|
subj : Str ;
|
||||||
|
pred : Bool => SForm => {
|
||||||
|
fin : Str ;
|
||||||
|
inf : Str
|
||||||
|
} ;
|
||||||
|
comp : Bool => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
sats2clause : Sats -> Clause = \sats ->
|
||||||
|
{s = \\st,b,sf =>
|
||||||
|
let
|
||||||
|
subj = sats.subj ;
|
||||||
|
pred = sats.pred ! b ! sf ;
|
||||||
|
fin = pred.fin ;
|
||||||
|
inf = pred.inf ;
|
||||||
|
comp = sats.comp ! b
|
||||||
|
in
|
||||||
|
case st of {
|
||||||
|
SDecl => subj ++ fin ++ inf ++ comp ;
|
||||||
|
SQuest => questPart fin ++ subj ++ inf ++ comp
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
questPart : Str -> Str = \s -> glue s "ko" ; --- "kö"
|
||||||
|
|
||||||
|
mkSats : NounPhrase -> Verb -> Sats = \subj,verb ->
|
||||||
|
{subj = subj.s ! NPCase Nom ; --- "minusta tulee poliisi"
|
||||||
|
pred = inflectVerb verb subj.n (np2Person subj.p) ;
|
||||||
|
comp = \\_ => []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
inflectVerb : Verb -> Number -> Person -> Bool => SForm => {fin, inf : Str} =
|
||||||
|
\verb,n,p -> \\b,sf =>
|
||||||
|
let
|
||||||
|
vs = verb.s ;
|
||||||
|
olla = verbOlla.s ;
|
||||||
|
eis = verbEi.s ;
|
||||||
|
part = PastPartAct (NCase n Nom) ;
|
||||||
|
ei : Anteriority -> VForm -> VForm -> {fin,inf : Str} =
|
||||||
|
\a,vf,neg -> case <b,a> of {
|
||||||
|
<True, Simul> => {fin = vs ! vf ; inf = []} ;
|
||||||
|
<True, Anter> => {fin = olla ! vf ; inf = vs ! part} ;
|
||||||
|
<False,Simul> => {fin = eis ! vf ; inf = vs ! neg} ;
|
||||||
|
<False,Anter> => {fin = eis ! vf ; inf = olla ! neg ++ vs ! part}
|
||||||
|
} ;
|
||||||
|
älä = case b of {
|
||||||
|
True => {fin = vs ! Imper n ; inf = []} ;
|
||||||
|
False => {fin = eis ! Imper n ;
|
||||||
|
inf = vs ! case n of {
|
||||||
|
Sg => Imper n ;
|
||||||
|
Pl => ImpNegPl}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
in case sf of {
|
||||||
|
VFinite Past a => ei a (Impf n p) (part) ;
|
||||||
|
VFinite Conditional a => ei a (Cond n p) (Cond Sg P3) ;
|
||||||
|
VFinite _ a => ei a (Pres n p) (Imper Sg) ; -- both Present and Future
|
||||||
|
VInfinit a => ei a (Inf) (Inf) ; --- olla tulematta
|
||||||
|
VImperat => älä
|
||||||
|
} ;
|
||||||
|
|
||||||
|
{-
|
||||||
|
predVerb : Verb -> VerbGroup = \walk ->
|
||||||
|
let {
|
||||||
|
noCompl : {s2 : VForm => Str} = {s2 = \\_ => []} ;
|
||||||
|
infCompl : {s2 : VForm => Str} = {s2 = table {
|
||||||
|
Imper Pl => walk.s ! ImpNegPl ;
|
||||||
|
_ => walk.s ! vFormNeg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
in
|
||||||
|
nomVerbPhrase (walk ** noCompl) (verbEi ** infCompl) ;
|
||||||
|
|
||||||
|
predVerbPhrase : NounPhrase -> VerbPhrase -> Sentence = \jussi,uida ->
|
||||||
|
let {
|
||||||
|
p = np2Person jussi.p ;
|
||||||
|
c = complementCase True uida.c Inf --- True,Inf don't matter here
|
||||||
|
}
|
||||||
|
in
|
||||||
|
ss (jussi.s ! c ++ uida.s ! Pres jussi.n p ++ uida.s2 ! Pres jussi.n p) ;
|
||||||
|
|
||||||
|
|
||||||
|
oper
|
||||||
|
npForm2Case : Number -> NPForm -> Case = \n,f -> case f of {
|
||||||
|
NPCase c => c ;
|
||||||
|
NPAccNom => Nom ;
|
||||||
|
NPAccGen => case n of {
|
||||||
|
Sg => Gen ;
|
||||||
|
Pl => Nom
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NounPhrase : Type = {s : NPForm => Str ; n : Number ; p : NPPerson} ;
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
-- Verb phrases are discontinuous: the two parts of a verb phrase are
|
-- Verb phrases are discontinuous: the two parts of a verb phrase are
|
||||||
-- (s) an inflected verb, (s2) a complement.
|
-- (s) an inflected verb, (s2) a complement.
|
||||||
-- For instance: "on" - "kaunis" ; "ei" - "ole kaunis" ; "sisältää" - "rikkiä".
|
-- For instance: "on" - "kaunis" ; "ei" - "ole kaunis" ; "sisältää" - "rikkiä".
|
||||||
|
|||||||
Reference in New Issue
Block a user