mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-30 13:18:56 -06:00
resource = resource-1.0
This commit is contained in:
2
lib/resource/swedish/AdjectiveSwe.gf
Normal file
2
lib/resource/swedish/AdjectiveSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete AdjectiveSwe of Adjective = CatSwe ** AdjectiveScand with
|
||||
(ResScand = ResSwe) ;
|
||||
2
lib/resource/swedish/AdverbSwe.gf
Normal file
2
lib/resource/swedish/AdverbSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete AdverbSwe of Adverb = CatSwe ** AdverbScand with
|
||||
(ResScand = ResSwe) ;
|
||||
@@ -1,231 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete BasicSwe of Basic = CategoriesSwe ** open ParadigmsSwe in {
|
||||
|
||||
flags startcat=Phr ; lexer=textlit ; unlexer=text ;
|
||||
optimize=values ;
|
||||
|
||||
lin
|
||||
airplane_N = regN "flygplan" neutrum ;
|
||||
answer_V2S = mkV2S (regV "svara") "till" ;
|
||||
apartment_N = mk2N "lägenhet" "lägenheter" ;
|
||||
apple_N = regN "äpple" neutrum ;
|
||||
art_N = mk2N "konst" "konster" ;
|
||||
ask_V2Q = mkV2Q (regV "fråga") [] ;
|
||||
baby_N = regN "bebis" utrum ;
|
||||
bad_ADeg = irregADeg "dålig" "sämre" "sämst";
|
||||
bank_N = mk2N "bank" "banker" ;
|
||||
beautiful_ADeg = mk3ADeg "vacker" "vackert" "vackrast" ;
|
||||
become_VA = mkVA (mkV "bli" "blir""bli" "blev" "blivit" "bliven") ;
|
||||
beer_N = regN "öl" neutrum ;
|
||||
beg_V2V = mkV2V (mkV "be" "ber""be" "blad" "bett" "bedd") [] "att" ;
|
||||
big_ADeg = irregADeg "stor" "större" "störst";
|
||||
bike_N = mk2N "cykel" "cyklar" ;
|
||||
bird_N = mkN "fågel" "fågeln" "fåglar" "fåglarna";
|
||||
black_ADeg = mk2ADeg "svart" "svart" ;
|
||||
blue_ADeg = mk2ADeg "blå" "blått";
|
||||
boat_N = regN "båt" utrum ;
|
||||
book_N = mkN "bok" "boken" "böcker" "böckerna" ;
|
||||
boot_N = mk2N "stövel" "stövlar" ;
|
||||
boss_N = mk2N "chef" "chefer" ;
|
||||
boy_N = regN "pojke" utrum ;
|
||||
bread_N = regN "bröd" neutrum ;
|
||||
break_V2 = dirV2 (partV (mkV "slå" "slår" "slå" "slog" "slagit" "slagen") "sönder") ;
|
||||
broad_ADeg = mk2ADeg "bred" "brett" ;
|
||||
brother_N2 = mkN2 (mascN (mkN "bror" "brodern" "bröder" "bröderna")) "till" ;
|
||||
brown_ADeg = regADeg "brun" ;
|
||||
butter_N = regN "smör" neutrum ;
|
||||
buy_V2 = dirV2 (mk2V "köpa" "köpte") ;
|
||||
camera_N = regN "kamera" utrum ;
|
||||
cap_N = regN "mössa" utrum ;
|
||||
car_N = regN "bil" utrum ;
|
||||
carpet_N = regN "matta" utrum ;
|
||||
cat_N = mk2N "katt" "katter" ;
|
||||
ceiling_N = regN "tak" neutrum ;
|
||||
chair_N = regN "stol" utrum ;
|
||||
cheese_N = regN "ost" utrum ;
|
||||
child_N = regN "barn" neutrum ;
|
||||
church_N = regN "kyrka" utrum ;
|
||||
city_N = mk2N "stad" "städer" ;
|
||||
clean_ADeg = regADeg "ren" ;
|
||||
clever_ADeg = regADeg "klok" ;
|
||||
close_V2 = dirV2 (mk2V "stänga" "stängde") ;
|
||||
coat_N = regN "rock" utrum ;
|
||||
cold_ADeg = regADeg "kall" ;
|
||||
come_V = (mkV "komma" "kommer" "kom" "kom" "kommit" "kommen") ;
|
||||
computer_N = mk2N "dator" "datorer" ;
|
||||
country_N = mkN "land" "landet" "länder" "länderna" ;
|
||||
cousin_N = mk2N "kusin" "kusinerna" ;
|
||||
cow_N = mk2N "ko" "kor" ;
|
||||
die_V = (mkV "dö" "dör" "dö" "dog" "dött" "dödd") ; ----
|
||||
distance_N3 = mkN3 (mk2N "avstånd" "avstånd") "från" "till" ;
|
||||
dirty_ADeg = regADeg "smutsig" ;
|
||||
doctor_N = mk2N "läkare" "läkare" ;
|
||||
dog_N = regN "hund" utrum ;
|
||||
door_N = regN "dörr" utrum ;
|
||||
drink_V2 = dirV2 (irregV "dricka" "drack" "druckit") ;
|
||||
easy_A2V = mkA2V (mk2A "lätt" "lätt") "för" ;
|
||||
eat_V2 = dirV2 (irregV "äta" "åt" "ätit") ;
|
||||
empty_ADeg = mkADeg "tom" "tomt" "tomma" "tomma" "tommare" "tommast" "tommaste" ;
|
||||
enemy_N = regN "fiende" neutrum ;
|
||||
factory_N = mk2N "fabrik" "fabriker" ;
|
||||
father_N2 = mkN2 (mascN (mkN "far" "fadern" "fäder" "fäderna")) "till" ;
|
||||
fear_VS = mkVS (regV "frukta") ;
|
||||
find_V2 = dirV2 (irregV "finna" "fann" "funnit") ;
|
||||
fish_N = mk2N "fisk" "fiskar" ;
|
||||
floor_N = regN "golv" neutrum ;
|
||||
forget_V2 = dirV2 (mkV "glömma" "glömmer" "glöm" "glömde" "glömt" "glömd") ;
|
||||
fridge_N = regN "kylskåp" neutrum ;
|
||||
friend_N = mkN "vän" "vännen" "vänner" "vännerna" ;
|
||||
fruit_N = mk2N "frukt" "frukter" ;
|
||||
fun_AV = mkAV (regA "rolig") ;
|
||||
garden_N = regN "trädgård" utrum ;
|
||||
girl_N = regN "flicka" utrum ;
|
||||
glove_N = regN "handske" utrum ;
|
||||
gold_N = regN "guld" neutrum ;
|
||||
good_ADeg = mkADeg "god" "gott" "goda" "goda" "bättre" "bäst" "bästa" ;
|
||||
go_V = (mkV "gå" "går" "gå" "gick" "gått" "gången") ;
|
||||
green_ADeg = regADeg "grön" ;
|
||||
harbour_N = regN "hamn" utrum;
|
||||
hate_V2 = dirV2 (regV "hata") ;
|
||||
hat_N = regN "hatt" utrum ;
|
||||
have_V2 = dirV2 (mkV "ha" "har" "ha" "hade" "haft" "haft") ; ---- pp
|
||||
hear_V2 = dirV2 (mkV "höra" "hör" "hör" "hörde" "hört" "hörd") ;
|
||||
hill_N = regN "kulle" utrum ;
|
||||
hope_VS = mkVS (depV (regV "hoppas")) ;
|
||||
horse_N = regN "häst" utrum ;
|
||||
hot_ADeg = regADeg "het" ;
|
||||
house_N = regN "hus" neutrum ;
|
||||
important_ADeg = regADeg "viktig" ;
|
||||
industry_N = mk2N "industri" "industrier" ; ---- "ien" ??
|
||||
iron_N = regN "järn" neutrum ;
|
||||
king_N = mascN (regN "kung" utrum) ;
|
||||
know_V2 = dirV2 (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
||||
lake_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ;
|
||||
lamp_N = regN "lampa" utrum;
|
||||
learn_V2 = dirV2 (mkV "lära" "lär" "lär" "lärde" "lärt" "lärd") ; ---- refl!
|
||||
leather_N = mkN "läder" "lädret" "läder" "lädren" ;
|
||||
leave_V2 = dirV2 (regV "lämna") ;
|
||||
like_V2 = mkV2 (mk2V "tycka" "tyckte") "om" ;
|
||||
listen_V2 = mkV2 (regV "lyssna") "på" ;
|
||||
live_V = (irregV "leva" "levde" "levt") ; ---- ?
|
||||
long_ADeg = irregADeg "lång" "längre" "längst" ;
|
||||
lose_V2 = dirV2 (regV "förlora") ;
|
||||
love_N = regN "kärlek" utrum ;
|
||||
love_V2 = dirV2 (regV "älska") ;
|
||||
man_N = mascN (mkN "man" "mannen" "män" "männen") ;
|
||||
married_A2 = mkA2 (mk2A "gift" "gift") "med" ;
|
||||
meat_N = regN "kött" neutrum ;
|
||||
milk_N = regN "mjölk" utrum ; ---- -ar?
|
||||
moon_N = regN "måne" utrum ;
|
||||
mother_N2 = mkN2 (mkN "mor" "modern" "mödrar" "mödrarna") "till" ;
|
||||
mountain_N = regN "berg" neutrum ;
|
||||
music_N = mk2N "musik" "musiker" ; ---- er ?
|
||||
narrow_ADeg = regADeg "smal" ;
|
||||
new_ADeg = mkADeg "ny" "nytt" "nya" "nya" "nyare" "nyast" "nyaste" ;
|
||||
newspaper_N = regN "tidning" utrum ;
|
||||
|
||||
oil_N = regN "olja" utrum ;
|
||||
old_ADeg = mkADeg "gammal" "gammalt" "gamla" "gamla" "äldre" "äldst" "äldsta" ;
|
||||
open_V2 = dirV2 (regV "öppna") ;
|
||||
paint_V2A = mkV2A (regV "måla") [] ;
|
||||
paper_N = mkN "papper" "pappret" "papper" "pappren" ;
|
||||
peace_N = regN "fred" utrum ; ---- ar?
|
||||
pen_N = regN "penna" utrum ;
|
||||
planet_N = mk2N "planet" "planeter" ;
|
||||
plastic_N = mk2N "plast" "plaster" ;
|
||||
play_V2 = dirV2 (regV "spela") ;
|
||||
policeman_N = mk2N "polis" "poliser" ;
|
||||
priest_N = mk2N "präst" "präster" ;
|
||||
probable_AS = mkAS (regA "sannolik") ;
|
||||
queen_N = regN "drottning" utrum ;
|
||||
radio_N = regN "radio" utrum ; ----
|
||||
rain_V0 = mkV0 (regV "regna") ;
|
||||
read_V2 = dirV2 (mk2V "läsa" "läste") ;
|
||||
red_ADeg = mk2ADeg "röd" "rött" ;
|
||||
religion_N = mk2N "religion" "religioner" ;
|
||||
restaurant_N = mk2N "restaurang" "restauranger" ;
|
||||
river_N = mkN "å" "ån" "åar" "åarna" ;
|
||||
rock_N = regN "sten" utrum ;
|
||||
roof_N = regN "tak" neutrum ;
|
||||
rubber_N = mkN "gummi" "gummit" "gummin" "gummina" ;
|
||||
run_V = (irregV "springa" "sprang" "sprungit") ;
|
||||
say_VS = mkVS (mkV "säga" "säger" "säg" "sade" "sagt" "sagd") ;
|
||||
school_N = regN "skola" utrum;
|
||||
science_N = mk2N "vetenskap" "vetenskaper" ;
|
||||
sea_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ;
|
||||
seek_V2 = dirV2 (mk2V "söka" "sökte") ;
|
||||
see_V2 = dirV2 (mkV "se" "ser" "se" "såg" "sett" "sedd") ;
|
||||
sell_V3 = dirV3 (irregV "sälja" "sålde" "sålt") "till" ;
|
||||
send_V3 = dirV3 (regV "skicka") "till" ;
|
||||
sheep_N = mk2N "får" "får" ;
|
||||
ship_N = regN "skepp" neutrum ;
|
||||
shirt_N = regN "skjorta" utrum ;
|
||||
shoe_N = regN "sko" utrum ;
|
||||
shop_N = mk2N "affär" "affären" ;
|
||||
short_ADeg = mk2ADeg "kort" "kort" ;
|
||||
silver_N = mkN "silver" "silvret" "silver" "silvren" ;
|
||||
sister_N = mk2N "syster" "systrar" ;
|
||||
sleep_V = (irregV "sova" "sov" "sovit") ;
|
||||
small_ADeg = mkADeg "liten" "litet" "lilla" "små" "mindre" "minst" "minsta" ;
|
||||
snake_N = regN "orm" utrum ;
|
||||
sock_N = regN "strumpa" utrum ;
|
||||
speak_V2 = dirV2 (regV "tala") ;
|
||||
star_N = regN "stjärna" utrum ;
|
||||
steel_N = regN "stål" utrum ;
|
||||
stone_N = regN "sten" utrum ;
|
||||
stove_N = regN "spis" utrum ;
|
||||
student_N = mk2N "student" "studenter" ;
|
||||
stupid_ADeg = mk3ADeg "dum" "dumt" "dumma" ;
|
||||
sun_N = regN "sol" utrum ;
|
||||
switch8off_V2 = dirV2 (partV (irregV "stänga" "stängde" "stängt") "av") ;
|
||||
switch8on_V2 = dirV2 (partV (irregV "slå" "slog" "slagit") "på") ;
|
||||
table_N = regN "bord" neutrum ;
|
||||
talk_V3 = mkV3 (regV "prata") "till" "om" ;
|
||||
teacher_N = mk2N "lärare" "lärare" ;
|
||||
teach_V2 = dirV2 (regV "undervisa") ;
|
||||
television_N = mk2N "television" "televisioner" ;
|
||||
thick_ADeg = regADeg "tjock" ;
|
||||
thin_ADeg = mk2ADeg "tunn" "tunt" ;
|
||||
train_N = regN "tåg" neutrum ;
|
||||
travel_V = mk2V "resa" "reste" ;
|
||||
tree_N = regN "träd" neutrum ;
|
||||
---- trousers_N = regN "trousers" ; ---- pl t !
|
||||
ugly_ADeg = regADeg "ful" ;
|
||||
understand_V2 = dirV2 (mkV "förstå" "förstår" "förstå" "förstod" "förstått" "förstådd") ;
|
||||
university_N = regN "universitet" neutrum ;
|
||||
village_N = mkN "by" "byn" "byar" "byarna" ;
|
||||
wait_V2 = mkV2 (regV "vänta") "på" ;
|
||||
walk_V = (mkV "gå" "går" "gå" "gick" "gått" "gången") ;
|
||||
warm_ADeg = regADeg "varm" ;
|
||||
war_N = regN "krig" neutrum ;
|
||||
watch_V2 = mkV2 (regV "titta") "på" ;
|
||||
water_N = mkN "vatten" "vattnet" "vatten" "vattnen" ;
|
||||
white_ADeg = regADeg "vit" ;
|
||||
window_N = mkN "fönster" "fönstret" "fönster" "fönstren" ;
|
||||
wine_N = mkN "vin" "vinet" "viner" "vinerna" ; ----
|
||||
win_V2 = dirV2 (irregV "vinna" "vann" "vunnit") ;
|
||||
woman_N = regN "kvinna" utrum ;
|
||||
wonder_VQ = mkVQ (regV "undra") ;
|
||||
wood_N = mkN "trä" "träet" "träen" "träena" ; ---- ?
|
||||
write_V2 = dirV2 (irregV "skriva" "skrev" "skrivit") ;
|
||||
yellow_ADeg = regADeg "gul" ;
|
||||
young_ADeg = irregADeg "ung" "yngre" "yngst" ;
|
||||
|
||||
do_V2 = dirV2 (mkV "göra" "gör" "gör" "gjorde" "gjort" "gjord") ;
|
||||
now_Adv = mkAdv "nu" ;
|
||||
already_Adv = mkAdv "redan" ;
|
||||
song_N = mk2N "sång" "sånger" ;
|
||||
add_V3 = mkV3 (partV (irregV "lägga" "lade" "lagt") "till") [] "till" ;
|
||||
number_N = mkN "nummer" "numret" "numren" "numren" ;
|
||||
put_V2 = mkV2 (irregV "sätta" "satte" "satt") [] ;
|
||||
stop_V = regV "stanna" ;
|
||||
jump_V = regV "hoppa" ;
|
||||
here_Adv = mkAdv "här" ;
|
||||
here7to_Adv = mkAdv "hit" ;
|
||||
here7from_Adv = mkAdv ["härifrån"] ;
|
||||
there_Adv = mkAdv "där" ;
|
||||
there7to_Adv = mkAdv "dit" ;
|
||||
there7from_Adv = mkAdv ["därifrån"] ;
|
||||
|
||||
} ;
|
||||
2
lib/resource/swedish/CatSwe.gf
Normal file
2
lib/resource/swedish/CatSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete CatSwe of Cat = CommonX ** CatScand with
|
||||
(ResScand = ResSwe) ;
|
||||
@@ -1,4 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete CategoriesSwe of Categories =
|
||||
CategoriesScand with (SyntaxScand=SyntaxSwe) ;
|
||||
@@ -1,4 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete ClauseSwe of Clause = CategoriesSwe **
|
||||
ClauseI with (Rules=RulesSwe), (Verbphrase=VerbphraseSwe) ;
|
||||
2
lib/resource/swedish/ConjunctionSwe.gf
Normal file
2
lib/resource/swedish/ConjunctionSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete ConjunctionSwe of Conjunction = CatSwe ** ConjunctionScand with
|
||||
(ResScand = ResSwe) ;
|
||||
@@ -1,27 +0,0 @@
|
||||
concrete CountrySwe of Country = open CategoriesSwe, ParadigmsSwe in {
|
||||
|
||||
lincat
|
||||
Country = PN ;
|
||||
Nationality = A ;
|
||||
Language = N ;
|
||||
|
||||
lin
|
||||
Denmark = regPN "Danmark" neutrum ;
|
||||
England = regPN "England" neutrum ;
|
||||
Finland = regPN "Finland" neutrum ;
|
||||
France = regPN "Frankrike" neutrum ;
|
||||
Germany = regPN "Tyskland" neutrum ;
|
||||
Italy = regPN "Italien" neutrum ;
|
||||
Norway = regPN "Norge" neutrum ;
|
||||
Russia = regPN "Ryssland" neutrum ;
|
||||
Spain = regPN "Spanien" neutrum ;
|
||||
Sweden = regPN "Sverige" neutrum ;
|
||||
|
||||
Danish = regA "Dansk" ;
|
||||
English = regA "Engelsk" ;
|
||||
|
||||
DanishLang = regN "Danska" utrum ;
|
||||
EnglishLang = regN "Engelska" utrum ;
|
||||
|
||||
|
||||
} ;
|
||||
@@ -1,9 +0,0 @@
|
||||
instance DemResSwe of DemRes = open Prelude, ResourceSwe, SyntaxSwe in {
|
||||
|
||||
oper
|
||||
msS : S -> Str = \x -> x.s ! Main ;
|
||||
msQS : QS -> Str = \x -> x.s ! DirQ ;
|
||||
msImp : Imp -> Str = \x -> x.s ! Sg ;
|
||||
|
||||
|
||||
} ;
|
||||
@@ -1,7 +0,0 @@
|
||||
--# -path=.:../abstract:../scandinavian:../../prelude
|
||||
|
||||
concrete DemonstrativeSwe of Demonstrative =
|
||||
CategoriesSwe ** DemonstrativeI with
|
||||
(Resource = ResourceSwe),
|
||||
(Basic = BasicSwe),
|
||||
(DemRes = DemResSwe) ;
|
||||
87
lib/resource/swedish/DiffSwe.gf
Normal file
87
lib/resource/swedish/DiffSwe.gf
Normal file
@@ -0,0 +1,87 @@
|
||||
instance DiffSwe of DiffScand = open CommonScand, Prelude in {
|
||||
|
||||
-- Parameters.
|
||||
|
||||
param
|
||||
Gender = Utr | Neutr ;
|
||||
|
||||
oper
|
||||
utrum = Utr ;
|
||||
neutrum = Neutr ;
|
||||
|
||||
gennum : Gender -> Number -> GenNum = \g,n ->
|
||||
case <g,n> of {
|
||||
<Utr,Sg> => SgUtr ;
|
||||
<Neutr,Sg> => SgNeutr ;
|
||||
_ => Plg
|
||||
} ;
|
||||
|
||||
detDef : Species = Def ;
|
||||
|
||||
Verb : Type = {
|
||||
s : VForm => Str ;
|
||||
part : Str ;
|
||||
vtype : VType
|
||||
} ;
|
||||
|
||||
hasAuxBe _ = False ;
|
||||
|
||||
|
||||
-- Strings.
|
||||
|
||||
conjThat = "att" ;
|
||||
conjThan = "än" ;
|
||||
conjAnd = "och" ;
|
||||
infMark = "att" ;
|
||||
compMore = "mera" ;
|
||||
|
||||
subjIf = "om" ;
|
||||
|
||||
artIndef : Gender => Str = table {
|
||||
Utr => "en" ;
|
||||
Neutr => "ett"
|
||||
} ;
|
||||
|
||||
verbHave =
|
||||
mkVerb "ha" "har" "ha" "hade" "haft" "havd" "havt" "havda" ** noPart ;
|
||||
verbBe =
|
||||
mkVerb "vara" "är" "var" "var" "varit" "varen" "varet" "varna"
|
||||
** noPart ;
|
||||
verbBecome =
|
||||
mkVerb "bli" "blir" "bli" "blev" "blivit" "bliven" "blivet" "blivna"
|
||||
** noPart ;
|
||||
|
||||
-- auxiliary
|
||||
noPart = {part = []} ;
|
||||
|
||||
auxFut = "ska" ; -- "skall" in ExtSwe
|
||||
auxCond = "skulle" ;
|
||||
|
||||
negation : Polarity => Str = table {
|
||||
Pos => [] ;
|
||||
Neg => "inte"
|
||||
} ;
|
||||
|
||||
genderForms : (x1,x2 : Str) -> Gender => Str = \all,allt ->
|
||||
table {
|
||||
Utr => all ;
|
||||
Neutr => allt
|
||||
} ;
|
||||
|
||||
relPron : GenNum => RCase => Str = \\gn,c => case c of {
|
||||
RNom => "som" ;
|
||||
RGen => "vars" ;
|
||||
RPrep => gennumForms "vilken" "vilket" "vilka" ! gn
|
||||
} ;
|
||||
|
||||
pronSuch = gennumForms "sådan" "sådant" "sådana" ;
|
||||
|
||||
reflPron : Agr -> Str = \a -> case a of {
|
||||
{gn = Plg ; p = P1} => "oss" ;
|
||||
{gn = Plg ; p = P2} => "er" ;
|
||||
{p = P1} => "mig" ;
|
||||
{p = P2} => "dig" ;
|
||||
{p = P3} => "sig"
|
||||
} ;
|
||||
|
||||
}
|
||||
2
lib/resource/swedish/ExtraScandSwe.gf
Normal file
2
lib/resource/swedish/ExtraScandSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete ExtraScandSwe of ExtraScandAbs = CatSwe ** ExtraScand with
|
||||
(ResScand = ResSwe) ;
|
||||
3
lib/resource/swedish/ExtraSwe.gf
Normal file
3
lib/resource/swedish/ExtraSwe.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
concrete ExtraSwe of ExtraSweAbs = ExtraScandSwe ** {
|
||||
|
||||
}
|
||||
7
lib/resource/swedish/ExtraSweAbs.gf
Normal file
7
lib/resource/swedish/ExtraSweAbs.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
-- Structures special for Swedish. These are not implemented in other
|
||||
-- Scandinavian languages.
|
||||
|
||||
abstract ExtraSweAbs = ExtraScandAbs ** {
|
||||
|
||||
|
||||
}
|
||||
21
lib/resource/swedish/GrammarSwe.gf
Normal file
21
lib/resource/swedish/GrammarSwe.gf
Normal file
@@ -0,0 +1,21 @@
|
||||
--# -path=.:../scandinavian:../abstract:../common:prelude
|
||||
|
||||
concrete GrammarSwe of Grammar =
|
||||
NounSwe,
|
||||
VerbSwe,
|
||||
AdjectiveSwe,
|
||||
AdverbSwe,
|
||||
NumeralSwe,
|
||||
SentenceSwe,
|
||||
QuestionSwe,
|
||||
RelativeSwe,
|
||||
ConjunctionSwe,
|
||||
PhraseSwe,
|
||||
TextX,
|
||||
IdiomSwe,
|
||||
StructuralSwe
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
} ;
|
||||
43
lib/resource/swedish/IdiomSwe.gf
Normal file
43
lib/resource/swedish/IdiomSwe.gf
Normal file
@@ -0,0 +1,43 @@
|
||||
concrete IdiomSwe of Idiom = CatSwe **
|
||||
open MorphoSwe, ParadigmsSwe, IrregSwe, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
ImpersCl vp = mkClause "det" (agrP3 neutrum Sg) vp ;
|
||||
GenericCl vp = mkClause "man" (agrP3 utrum Sg) vp ;
|
||||
|
||||
CleftNP np rs = mkClause "det" (agrP3 neutrum Sg)
|
||||
(insertObj (\\_ => rs.s ! np.a)
|
||||
(insertObj (\\_ => np.s ! rs.c) (predV verbBe))) ;
|
||||
|
||||
CleftAdv ad s = mkClause "det" (agrP3 neutrum Sg)
|
||||
(insertObj (\\_ => "som" ++ s.s ! Sub)
|
||||
(insertObj (\\_ => ad.s) (predV verbBe))) ;
|
||||
|
||||
|
||||
ExistNP np =
|
||||
mkClause "det" (agrP3 neutrum Sg) (insertObj
|
||||
(\\_ => np.s ! accusative) (predV (depV finna_V))) ;
|
||||
|
||||
ExistIP ip = {
|
||||
s = \\t,a,p =>
|
||||
let
|
||||
cls =
|
||||
(mkClause "det" (agrP3 neutrum Sg) (predV (depV finna_V))).s ! t ! a ! p ;
|
||||
who = ip.s ! accusative
|
||||
in table {
|
||||
QDir => who ++ cls ! Inv ;
|
||||
QIndir => who ++ cls ! Sub
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
ProgrVP vp =
|
||||
insertObj (\\a => "att" ++ infVP vp a) (predV (partV hålla_V "på")) ;
|
||||
|
||||
ImpPl1 vp = {s = ["låt oss"] ++ infVP vp {gn = Plg ; p = P1}} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
--# -path=.:../scandinavian:../common:../abstract:../../prelude
|
||||
|
||||
concrete VerbsSwe of VerbsSweAbs = CategoriesSwe ** open ParadigmsSwe in {
|
||||
concrete IrregSwe of IrregSweAbs = CatSwe ** open ParadigmsSwe in {
|
||||
|
||||
flags optimize=values ;
|
||||
|
||||
@@ -15,7 +15,6 @@ concrete VerbsSwe of VerbsSweAbs = CategoriesSwe ** open ParadigmsSwe in {
|
||||
avbryta_V = irregV "avbryta" "avbröt" "avbrutit" ;
|
||||
avfalla_V = irregV "avfalla" "avföll" "avfallit" ;
|
||||
avhugga_V = irregV "avhugga" "avhögg" "avhuggit" ;
|
||||
avleda_V = irregV "avleda" "avlad" "avlidit" ;
|
||||
avlida_V = irregV "avlida" "avled" "avlidit" ;
|
||||
avnjuta_V = irregV "avnjuta" "avnjöt" "avnjutit" ;
|
||||
avsitta_V = irregV "avsitta" "avsatt" "avsuttit" ;
|
||||
@@ -75,6 +74,7 @@ concrete VerbsSwe of VerbsSweAbs = CategoriesSwe ** open ParadigmsSwe in {
|
||||
förtiga_V = irregV "förtiga" "förteg" "förtigit" ;
|
||||
frysa_V = irregV "frysa" "frös" "frusit" ;
|
||||
gå_V = irregV "gå" "gick" "gått" ;
|
||||
göra_V = mkV "göra" "gör" "gör" "gjorde" "gjort" "gjord" ;
|
||||
genomdriva_V = irregV "genomdriva" "genomdrev" "genomdrivit" ;
|
||||
gilla_V = irregV "gilla" "gall" "gillit" ;
|
||||
giva_V = irregV "ge" "gav" "givit" ;
|
||||
@@ -94,7 +94,7 @@ concrete VerbsSwe of VerbsSweAbs = CategoriesSwe ** open ParadigmsSwe in {
|
||||
inskriva_V = irregV "inskriva" "inskrev" "inskrivit" ;
|
||||
intaga_V = irregV "intaga" "intog" "intagit" ;
|
||||
känna_V = irregV "känna" "kände" "känt" ;
|
||||
klämma_V = irregV "klämma" "klämde" "klämt" ;
|
||||
klämma_V = regV "klämmer" ;
|
||||
kliva_V = irregV "kliva" "klev" "klivit" ;
|
||||
klyva_V = irregV "klyva" "klöv" "kluvit" ;
|
||||
knipa_V = irregV "knipa" "knep" "knipit" ;
|
||||
@@ -109,6 +109,7 @@ concrete VerbsSwe of VerbsSweAbs = CategoriesSwe ** open ParadigmsSwe in {
|
||||
ljuda_V = irregV "ljuda" "ljöd" "ljudit" ;
|
||||
ljuga_V = irregV "ljuga" "ljög" "ljugit" ;
|
||||
ljuta_V = irregV "ljuta" "ljöt" "ljutit" ;
|
||||
lägga_V = irregV "lägga" "lade" "lagt" ;
|
||||
mottaga_V = irregV "mottaga" "mottog" "mottagit" ;
|
||||
nerstiga_V = irregV "nerstiga" "nersteg" "nerstigit" ;
|
||||
niga_V = irregV "niga" "neg" "nigit" ;
|
||||
@@ -1,4 +1,4 @@
|
||||
abstract VerbsSweAbs = Categories ** {
|
||||
abstract IrregSweAbs = Cat ** {
|
||||
fun
|
||||
anfalla_V : V ;
|
||||
angiva_V : V ;
|
||||
@@ -10,7 +10,6 @@ abstract VerbsSweAbs = Categories ** {
|
||||
avbryta_V : V ;
|
||||
avfalla_V : V ;
|
||||
avhugga_V : V ;
|
||||
avleda_V : V ;
|
||||
avlida_V : V ;
|
||||
avnjuta_V : V ;
|
||||
avsitta_V : V ;
|
||||
@@ -69,6 +68,7 @@ abstract VerbsSweAbs = Categories ** {
|
||||
förtiga_V : V ;
|
||||
frysa_V : V ;
|
||||
gĺ_V : V ;
|
||||
göra_V : V ;
|
||||
genomdriva_V : V ;
|
||||
gilla_V : V ;
|
||||
giva_V : V ;
|
||||
@@ -103,6 +103,7 @@ abstract VerbsSweAbs = Categories ** {
|
||||
ljuda_V : V ;
|
||||
ljuga_V : V ;
|
||||
ljuta_V : V ;
|
||||
lägga_V : V ;
|
||||
mottaga_V : V ;
|
||||
nerstiga_V : V ;
|
||||
niga_V : V ;
|
||||
@@ -1,22 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete LangSatsSwe of LangSats =
|
||||
RulesSwe,
|
||||
SatsSwe,
|
||||
StructuralSwe,
|
||||
BasicSwe,
|
||||
TimeSwe,
|
||||
CountrySwe
|
||||
|
||||
** open Prelude, ParadigmsSwe in {
|
||||
|
||||
lin
|
||||
AdvDate d = prefixSS "på" d ;
|
||||
AdvTime t = prefixSS "klockan" t ;
|
||||
NWeekday w = w ;
|
||||
PNWeekday w = nounPN w ;
|
||||
|
||||
PNCountry x = x ;
|
||||
ANationality x = x ;
|
||||
NLanguage x = x ;
|
||||
}
|
||||
@@ -1,23 +1,10 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
--# -path=.:../scandinavian:../abstract:../common:prelude
|
||||
|
||||
concrete LangSwe of Lang =
|
||||
RulesSwe,
|
||||
ClauseSwe,
|
||||
StructuralSwe,
|
||||
BasicSwe,
|
||||
TimeSwe,
|
||||
CountrySwe,
|
||||
MathSwe
|
||||
GrammarSwe,
|
||||
LexiconSwe
|
||||
** {
|
||||
|
||||
** open Prelude, ResourceSwe, ParadigmsSwe in {
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
lin
|
||||
AdvDate d = prefixSS "på" d ;
|
||||
AdvTime t = prefixSS "klockan" t ;
|
||||
NWeekday w = w ;
|
||||
PNWeekday w = nounPN w ;
|
||||
|
||||
PNCountry x = x ;
|
||||
ANationality x = x ;
|
||||
NLanguage x = x ;
|
||||
}
|
||||
} ;
|
||||
|
||||
359
lib/resource/swedish/LexiconSwe.gf
Normal file
359
lib/resource/swedish/LexiconSwe.gf
Normal file
@@ -0,0 +1,359 @@
|
||||
--# -path=.:../scandinavian:../common:../abstract:../../prelude
|
||||
|
||||
concrete LexiconSwe of Lexicon = CatSwe **
|
||||
open Prelude, ParadigmsSwe, IrregSwe in {
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
|
||||
lin
|
||||
airplane_N = regGenN "flygplan" neutrum ;
|
||||
answer_V2S = mkV2S (regV "svarar") (mkPrep "till") ;
|
||||
apartment_N = mk2N "lägenhet" "lägenheter" ;
|
||||
apple_N = regGenN "äpple" neutrum ;
|
||||
art_N = mk2N "konst" "konster" ;
|
||||
ask_V2Q = mkV2Q (regV "frågar") noPrep ;
|
||||
baby_N = regGenN "bebis" utrum ;
|
||||
bad_A = irregA "dålig" "sämre" "sämst";
|
||||
bank_N = mk2N "bank" "banker" ;
|
||||
beautiful_A = mk3A "vacker" "vackert" "vackra" ;
|
||||
become_VA = mkVA (mkV "bli" "blir""bli" "blev" "blivit" "bliven") ;
|
||||
beer_N = regGenN "öl" neutrum ;
|
||||
beg_V2V = mkV2V (mkV "be" "ber""be" "blad" "bett" "bedd") noPrep (mkPrep "att") ;
|
||||
big_A = irregA "stor" "större" "störst";
|
||||
bike_N = mk2N "cykel" "cyklar" ;
|
||||
bird_N = mk2N "fågel" "fåglar" ;
|
||||
black_A = mk2A "svart" "svart" ;
|
||||
blue_A = mk2A "blå" "blått";
|
||||
boat_N = regGenN "båt" utrum ;
|
||||
book_N = mkN "bok" "boken" "böcker" "böckerna" ;
|
||||
boot_N = mk2N "stövel" "stövlar" ;
|
||||
boss_N = mk2N "chef" "chefer" ;
|
||||
boy_N = regGenN "pojke" utrum ;
|
||||
bread_N = regGenN "bröd" neutrum ;
|
||||
break_V2 = dirV2 (partV (mkV "slå" "slår" "slå" "slog" "slagit" "slagen") "sönder") ;
|
||||
broad_A = mk2A "bred" "brett" ;
|
||||
brother_N2 = mkN2 ((mkN "bror" "brodern" "bröder" "bröderna")) (mkPrep "till") ;
|
||||
brown_A = regA "brun" ;
|
||||
butter_N = regGenN "smör" neutrum ;
|
||||
buy_V2 = dirV2 (mk2V "köpa" "köpte") ;
|
||||
camera_N = regGenN "kamera" utrum ;
|
||||
cap_N = regGenN "mössa" utrum ;
|
||||
car_N = regGenN "bil" utrum ;
|
||||
carpet_N = regGenN "matta" utrum ;
|
||||
cat_N = mk2N "katt" "katter" ;
|
||||
ceiling_N = regGenN "tak" neutrum ;
|
||||
chair_N = regGenN "stol" utrum ;
|
||||
cheese_N = regGenN "ost" utrum ;
|
||||
child_N = regGenN "barn" neutrum ;
|
||||
church_N = regGenN "kyrka" utrum ;
|
||||
city_N = mkN "stad" "staden" "städer" "städerna" ;
|
||||
clean_A = regA "ren" ;
|
||||
clever_A = regA "klok" ;
|
||||
close_V2 = dirV2 (mk2V "stänga" "stängde") ;
|
||||
coat_N = regGenN "rock" utrum ;
|
||||
cold_A = regA "kall" ;
|
||||
come_V = komma_V ;
|
||||
computer_N = mk2N "dator" "datorer" ;
|
||||
country_N = mkN "land" "landet" "länder" "länderna" ;
|
||||
cousin_N = mk2N "kusin" "kusiner" ;
|
||||
cow_N = mk2N "ko" "kor" ;
|
||||
die_V = (mkV "dö" "dör" "dö" "dog" "dött" "dödd") ; ----
|
||||
distance_N3 = mkN3 (mk2N "avstånd" "avstånd") (mkPrep "från") (mkPrep "till") ;
|
||||
dirty_A = regA "smutsig" ;
|
||||
doctor_N = mk2N "läkare" "läkare" ;
|
||||
dog_N = regGenN "hund" utrum ;
|
||||
door_N = regGenN "dörr" utrum ;
|
||||
drink_V2 = dirV2 (irregV "dricka" "drack" "druckit") ;
|
||||
easy_A2V = mkA2V (mk2A "lätt" "lätt") (mkPrep "för") ;
|
||||
eat_V2 = dirV2 (irregV "äta" "åt" "ätit") ;
|
||||
empty_A = mkA "tom" "tomt" "tomma" "tomma" "tommare" "tommast" "tommaste" ;
|
||||
enemy_N = regGenN "fiende" neutrum ;
|
||||
factory_N = mk2N "fabrik" "fabriker" ;
|
||||
father_N2 = mkN2 ((mkN "far" "fadern" "fäder" "fäderna")) (mkPrep "till") ;
|
||||
fear_VS = mkVS (regV "fruktar") ;
|
||||
find_V2 = dirV2 (irregV "finna" "fann" "funnit") ;
|
||||
fish_N = mk2N "fisk" "fiskar" ;
|
||||
floor_N = regGenN "golv" neutrum ;
|
||||
forget_V2 = dirV2 (mkV "glömma" "glömmer" "glöm" "glömde" "glömt" "glömd") ;
|
||||
fridge_N = regGenN "kylskåp" neutrum ;
|
||||
friend_N = mkN "vän" "vännen" "vänner" "vännerna" ;
|
||||
fruit_N = mk2N "frukt" "frukter" ;
|
||||
fun_AV = mkAV (regA "rolig") ;
|
||||
garden_N = regGenN "trädgård" utrum ;
|
||||
girl_N = regGenN "flicka" utrum ;
|
||||
glove_N = regGenN "handske" utrum ;
|
||||
gold_N = regGenN "guld" neutrum ;
|
||||
good_A = mkA "god" "gott" "goda" "goda" "bättre" "bäst" "bästa" ;
|
||||
go_V = (mkV "gå" "går" "gå" "gick" "gått" "gången") ;
|
||||
green_A = regA "grön" ;
|
||||
harbour_N = regGenN "hamn" utrum;
|
||||
hate_V2 = dirV2 (regV "hatar") ;
|
||||
hat_N = regGenN "hatt" utrum ;
|
||||
have_V2 = dirV2 (mkV "ha" "har" "ha" "hade" "haft" "haft") ; ---- pp
|
||||
hear_V2 = dirV2 (mkV "höra" "hör" "hör" "hörde" "hört" "hörd") ;
|
||||
hill_N = regGenN "kulle" utrum ;
|
||||
-- hope_VS = mkVS ((regV "önskar")) ;
|
||||
hope_VS = mkVS (depV (regV "hoppar")) ;
|
||||
horse_N = regGenN "häst" utrum ;
|
||||
hot_A = regA "het" ;
|
||||
house_N = regGenN "hus" neutrum ;
|
||||
important_A = regA "viktig" ;
|
||||
industry_N = mk2N "industri" "industrier" ; ---- "ien" ??
|
||||
iron_N = regGenN "järn" neutrum ;
|
||||
king_N = (regGenN "kung" utrum) ;
|
||||
know_V2 = dirV2 (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
||||
lake_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ;
|
||||
lamp_N = regGenN "lampa" utrum;
|
||||
learn_V2 = dirV2 (reflV (mkV "lära" "lär" "lär" "lärde" "lärt" "lärd")) ;
|
||||
leather_N = mkN "läder" "lädret" "läder" "lädren" ;
|
||||
leave_V2 = dirV2 (regV "lämnar") ;
|
||||
like_V2 = mkV2 (mk2V "tycka" "tyckte") (mkPrep "om") ;
|
||||
listen_V2 = mkV2 (regV "lyssnar") (mkPrep "på") ;
|
||||
live_V = (irregV "leva" "levde" "levt") ; ---- ?
|
||||
long_A = irregA "lång" "längre" "längst" ;
|
||||
lose_V2 = dirV2 (regV "förlora") ;
|
||||
love_N = regGenN "kärlek" utrum ;
|
||||
love_V2 = dirV2 (regV "älska") ;
|
||||
man_N = (mkN "man" "mannen" "män" "männen") ;
|
||||
married_A2 = mkA2 (mk2A "gift" "gift") (mkPrep "med") ;
|
||||
meat_N = regGenN "kött" neutrum ;
|
||||
milk_N = regGenN "mjölk" utrum ; ---- -ar?
|
||||
moon_N = regGenN "måne" utrum ;
|
||||
mother_N2 = mkN2 (mkN "mor" "modern" "mödrar" "mödrarna") (mkPrep "till") ;
|
||||
mountain_N = regGenN "berg" neutrum ;
|
||||
music_N = mk2N "musik" "musiker" ; ---- er ?
|
||||
narrow_A = regA "smal" ;
|
||||
new_A = mkA "ny" "nytt" "nya" "nya" "nyare" "nyast" "nyaste" ;
|
||||
newspaper_N = regGenN "tidning" utrum ;
|
||||
oil_N = regGenN "olja" utrum ;
|
||||
old_A = mkA "gammal" "gammalt" "gamla" "gamla" "äldre" "äldst" "äldsta" ;
|
||||
open_V2 = dirV2 (regV "öppna") ;
|
||||
paint_V2A = mkV2A (regV "måla") noPrep ;
|
||||
paper_N = mkN "papper" "pappret" "papper" "pappren" ;
|
||||
paris_PN = regGenPN "Paris" neutrum ;
|
||||
peace_N = regGenN "fred" utrum ; ---- ar?
|
||||
pen_N = regGenN "penna" utrum ;
|
||||
planet_N = mk2N "planet" "planeter" ;
|
||||
plastic_N = mk2N "plast" "plaster" ;
|
||||
play_V2 = dirV2 (regV "spela") ;
|
||||
policeman_N = mk2N "polis" "poliser" ;
|
||||
priest_N = mk2N "präst" "präster" ;
|
||||
probable_AS = mkAS (regA "sannolik") ;
|
||||
queen_N = regGenN "drottning" utrum ;
|
||||
radio_N = mkN "radio" "radion" "radioapparater" "radioapparaterna" ; -- SAOL
|
||||
rain_V0 = mkV0 (regV "regna") ;
|
||||
read_V2 = dirV2 (mk2V "läsa" "läste") ;
|
||||
red_A = mk2A "röd" "rött" ;
|
||||
religion_N = mk2N "religion" "religioner" ;
|
||||
restaurant_N = mk2N "restaurang" "restauranger" ;
|
||||
river_N = mkN "å" "ån" "åar" "åarna" ;
|
||||
rock_N = mkN "sten" "stenen" "stenar" "stenarna" ;
|
||||
roof_N = regGenN "tak" neutrum ;
|
||||
rubber_N = mkN "gummi" "gummit" "gummin" "gummina" ;
|
||||
run_V = (irregV "springa" "sprang" "sprungit") ;
|
||||
say_VS = mkVS (mkV "säga" "säger" "säg" "sade" "sagt" "sagd") ;
|
||||
school_N = regGenN "skola" utrum;
|
||||
science_N = mk2N "vetenskap" "vetenskaper" ;
|
||||
sea_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ;
|
||||
seek_V2 = dirV2 (mk2V "söka" "sökte") ;
|
||||
see_V2 = dirV2 (mkV "se" "ser" "se" "såg" "sett" "sedd") ;
|
||||
sell_V3 = dirV3 (irregV "sälja" "sålde" "sålt") (mkPrep "till") ;
|
||||
send_V3 = dirV3 (regV "skicka") (mkPrep "till") ;
|
||||
sheep_N = mk2N "får" "får" ;
|
||||
ship_N = regGenN "skepp" neutrum ;
|
||||
shirt_N = regGenN "skjorta" utrum ;
|
||||
shoe_N = mk2N "sko" "skor" ;
|
||||
shop_N = mk2N "affär" "affären" ;
|
||||
short_A = regA "kort" ;
|
||||
silver_N = mkN "silver" "silvret" "silver" "silvren" ;
|
||||
sister_N = mk2N "syster" "systrar" ;
|
||||
sleep_V = (irregV "sova" "sov" "sovit") ;
|
||||
small_A = mkA "liten" "litet" "lilla" "små" "mindre" "minst" "minsta" ;
|
||||
snake_N = regGenN "orm" utrum ;
|
||||
sock_N = regGenN "strumpa" utrum ;
|
||||
speak_V2 = dirV2 (regV "tala") ;
|
||||
star_N = regGenN "stjärna" utrum ;
|
||||
steel_N = regGenN "stål" utrum ;
|
||||
stone_N = mkN "sten" "stenen" "stenar" "stenarna" ;
|
||||
stove_N = regGenN "spis" utrum ;
|
||||
student_N = mk2N "student" "studenter" ;
|
||||
stupid_A = mk3A "dum" "dumt" "dumma" ;
|
||||
sun_N = regGenN "sol" utrum ;
|
||||
switch8off_V2 = dirV2 (partV (irregV "stänga" "stängde" "stängt") "av") ;
|
||||
switch8on_V2 = dirV2 (partV (irregV "slå" "slog" "slagit") "på") ;
|
||||
table_N = regGenN "bord" neutrum ;
|
||||
talk_V3 = mkV3 (regV "prata") (mkPrep "till") (mkPrep "om") ;
|
||||
teacher_N = mk2N "lärare" "lärare" ;
|
||||
teach_V2 = dirV2 (regV "undervisa") ;
|
||||
television_N = mk2N "television" "televisioner" ;
|
||||
thick_A = regA "tjock" ;
|
||||
thin_A = mk2A "tunn" "tunt" ;
|
||||
train_N = regGenN "tåg" neutrum ;
|
||||
travel_V = mk2V "resa" "reste" ;
|
||||
tree_N = regGenN "träd" neutrum ;
|
||||
---- trousers_N = regGenN "trousers" ; ---- pl t !
|
||||
ugly_A = regA "ful" ;
|
||||
understand_V2 = dirV2 (mkV "förstå" "förstår" "förstå" "förstod" "förstått" "förstådd") ;
|
||||
university_N = regGenN "universitet" neutrum ;
|
||||
village_N = mkN "by" "byn" "byar" "byarna" ;
|
||||
wait_V2 = mkV2 (regV "vänta") (mkPrep "på") ;
|
||||
walk_V = (mkV "gå" "går" "gå" "gick" "gått" "gången") ;
|
||||
warm_A = regA "varm" ;
|
||||
war_N = regGenN "krig" neutrum ;
|
||||
watch_V2 = mkV2 (regV "titta") (mkPrep "på") ;
|
||||
water_N = mkN "vatten" "vattnet" "vatten" "vattnen" ;
|
||||
white_A = regA "vit" ;
|
||||
window_N = mkN "fönster" "fönstret" "fönster" "fönstren" ;
|
||||
wine_N = mkN "vin" "vinet" "viner" "vinerna" ; ----
|
||||
win_V2 = dirV2 (irregV "vinna" "vann" "vunnit") ;
|
||||
woman_N = regGenN "kvinna" utrum ;
|
||||
wonder_VQ = mkVQ (regV "undra") ;
|
||||
wood_N = mkN "trä" "träet" "träen" "träena" ; ---- ?
|
||||
write_V2 = dirV2 (irregV "skriva" "skrev" "skrivit") ;
|
||||
yellow_A = regA "gul" ;
|
||||
young_A = irregA "ung" "yngre" "yngst" ;
|
||||
|
||||
do_V2 = dirV2 göra_V ;
|
||||
now_Adv = mkAdv "nu" ;
|
||||
already_Adv = mkAdv "redan" ;
|
||||
song_N = mk2N "sång" "sånger" ;
|
||||
add_V3 = mkV3 (partV (irregV "lägga" "lade" "lagt") "till") noPrep (mkPrep "till") ;
|
||||
number_N = mkN "nummer" "numret" "numren" "numren" ;
|
||||
put_V2 = mkV2 (mkV "sätta" "sätter" "sätt" "satte" "satt" "satt") noPrep ;
|
||||
stop_V = regV "stanna" ;
|
||||
jump_V = regV "hoppa" ;
|
||||
|
||||
left_Ord = {s = "vänstra" ; isDet = True} ;
|
||||
right_Ord = {s = "högra" ; isDet = True} ;
|
||||
far_Adv = mkAdv "långt" ;
|
||||
correct_A = regA "riktig" ;
|
||||
dry_A = regA "torr" ;
|
||||
dull_A = mk2A "slö" "slött";
|
||||
full_A = regA "full" ;
|
||||
heavy_A = irregA "tung" "tyngre" "tyngst" ;
|
||||
near_A = mkA "nära" "nära" "nära" "nära" "närmare" "närmast" "närmaste" ;
|
||||
rotten_A = mk3A "rutten" "ruttet" "ruttna" ;
|
||||
round_A = regA "rund" ;
|
||||
sharp_A = regA "vass" ;
|
||||
smooth_A = regA "slät" ;
|
||||
straight_A = regA "rak" ;
|
||||
wet_A = regA "våt" ;
|
||||
wide_A = mk2A "bred" "brett" ;
|
||||
animal_N = mk2N "djur" "djur" ;
|
||||
ashes_N = mk2N "aska" "askor" ;
|
||||
back_N = mk2N "rygg" "ryggar" ;
|
||||
bark_N = mk2N "bark" "barkar" ;
|
||||
belly_N = mk2N "mage" "magar" ;
|
||||
blood_N = mk2N "blod" "blod" ;
|
||||
bone_N = mk2N "ben" "ben" ;
|
||||
breast_N = mk2N "bröst" "bröst" ;
|
||||
cloud_N = mk2N "moln" "moln" ;
|
||||
day_N = mk2N "dag" "dagar" ;
|
||||
dust_N = mk2N "damm" "damm" ;
|
||||
ear_N = mkN "öra" "örat" "öron" "öronen" ;
|
||||
earth_N = mk2N "jord" "jordar" ;
|
||||
egg_N = mk2N "ägg" "ägg" ;
|
||||
eye_N = mkN "öga" "ögat" "ögon" "ögonen" ;
|
||||
fat_N = mk2N "fett" "fett" ;
|
||||
feather_N = mk2N "fjäder" "fjädrar" ;
|
||||
fingernail_N = mkN "nagel" "nageln" "naglar" "naglarna";
|
||||
fire_N = mk2N "eld" "eldar" ;
|
||||
flower_N = mk2N "blomma" "blommor" ;
|
||||
fog_N = mk2N "dimma" "dimmor" ;
|
||||
foot_N = mk2N "fot" "fötter" ;
|
||||
forest_N = mk2N "skog" "skogar" ;
|
||||
grass_N = mk2N "gräs" "gräs" ;
|
||||
guts_N = mk2N "inälva" "inälvor" ;
|
||||
hair_N = mk2N "hår" "hår" ;
|
||||
hand_N = mk2N "hand" "händer" ;
|
||||
head_N = mkN "huvud" "huvudet" "huvuden" "huvudena" ;
|
||||
heart_N = mkN "hjärta" "hjärtat" "hjärtan" "hjärtana" ;
|
||||
horn_N = mk2N "horn" "horn" ;
|
||||
husband_N = (mk2N "make" "makar") ;
|
||||
ice_N = mk2N "is" "isar" ;
|
||||
knee_N = mkN "knä" "knäet" "knän" "knäna" ;
|
||||
leaf_N = mk2N "löv" "löv" ;
|
||||
leg_N = mk2N "ben" "ben" ;
|
||||
liver_N = mkN "lever" "levern" "levrar" "levrarna";
|
||||
louse_N = mkN "lus" "lusen" "löss" "lössen" ;
|
||||
mouth_N = mkN "mun" "munnen" "munnar" "munnarna" ;
|
||||
name_N = mk2N "namn" "namn" ;
|
||||
neck_N = mk2N "nacke" "nackar" ;
|
||||
night_N = mk2N "natt" "nätter" ;
|
||||
nose_N = mk2N "näsa" "näsor" ;
|
||||
person_N = mk2N "person" "personer" ;
|
||||
rain_N = mk2N "regn" "regn" ;
|
||||
road_N = mk2N "väg" "vägar" ;
|
||||
root_N = mk2N "rot" "rötter" ;
|
||||
rope_N = mk2N "rep" "rep" ;
|
||||
salt_N = mkN "salt" "saltet" "salter" "salterna";
|
||||
sand_N = mk2N "sand" "sander" ;
|
||||
seed_N = mkN "frö" "fröet" "frön" "fröna" ;
|
||||
skin_N = mk2N "skinn" "skinn" ;
|
||||
sky_N = mk2N "himmel" "himlar" ;
|
||||
smoke_N = mk2N "rök" "rökar" ;
|
||||
snow_N = mkN "snö" "snön" "snöer" "snöerna" ;
|
||||
stick_N = mk2N "pinne" "pinnar" ;
|
||||
tail_N = mk2N "svans" "svansar" ;
|
||||
tongue_N = mk2N "tunga" "tungor" ;
|
||||
tooth_N = mk2N "tand" "tänder" ;
|
||||
wife_N = mk2N "fru" "fruar" ;
|
||||
wind_N = mk2N "vind" "vindar" ;
|
||||
wing_N = mk2N "vinge" "vingar" ;
|
||||
worm_N = mk2N "mask" "maskar" ;
|
||||
year_N = mk2N "år" "år" ;
|
||||
bite_V2 = dirV2 (bita_V) ;
|
||||
blow_V = mk2V "blåsa" "blåste" ;
|
||||
burn_V = brinna_V ; -- FIXME: bränna?
|
||||
count_V2 = dirV2 (regV "räkna") ;
|
||||
cut_V2 = dirV2 (skära_V) ;
|
||||
dig_V = mk2V "gräva" "grävde" ;
|
||||
fall_V = falla_V ;
|
||||
fear_V2 = dirV2 (regV "frukta") ;
|
||||
float_V = flyta_V ;
|
||||
flow_V = rinna_V ;
|
||||
fly_V = flyga_V ;
|
||||
freeze_V = frysa_V ;
|
||||
give_V3 = dirV3 giva_V (mkPrep "till");
|
||||
hit_V2 = dirV2 (slå_V) ;
|
||||
hold_V2 = dirV2 (hålla_V) ;
|
||||
hunt_V2 = dirV2 (regV "jaga") ;
|
||||
kill_V2 = dirV2 (regV "döda") ;
|
||||
laugh_V = regV "skratta" ;
|
||||
lie_V = ligga_V ;
|
||||
play_V = mk2V "leka" "lekte" ;
|
||||
pull_V2 = dirV2 (draga_V) ;
|
||||
push_V2 = dirV2 (mk2V "trycka" "tryckte") ;
|
||||
rub_V2 = dirV2 (gnida_V) ;
|
||||
scratch_V2 = dirV2 (regV "klia") ;
|
||||
sew_V = sy_V ;
|
||||
sing_V = sjunga_V ;
|
||||
sit_V = sitta_V ;
|
||||
smell_V = regV "lukta" ;
|
||||
spit_V = regV "spotta" ;
|
||||
split_V2 = dirV2 (klyva_V) ;
|
||||
squeeze_V2 = dirV2 (klämma_V) ;
|
||||
stab_V2 = dirV2 (sticka_V) ;
|
||||
stand_V = stå_V ;
|
||||
suck_V2 = dirV2 (suga_V) ;
|
||||
swell_V = svälla_V ;
|
||||
swim_V = regV "simma" ;
|
||||
think_V = mk2V "tänka" "tänkte" ;
|
||||
throw_V2 = dirV2 (regV "kasta") ;
|
||||
tie_V2 = dirV2 (knyta_V) ;
|
||||
turn_V = vända_V ;
|
||||
vomit_V = mk2V "spy" "spydde" ;
|
||||
wash_V2 = dirV2 (regV "tvätta") ;
|
||||
wipe_V2 = dirV2 (regV "torka") ;
|
||||
|
||||
breathe_V = depV (regV "anda") ;
|
||||
fight_V2 =
|
||||
mkV2 (mkV "slåss" "slåss" "slåss" "slogs" "slagits" "slagen") (mkPrep "med") ;
|
||||
|
||||
grammar_N = mk1N "grammatikerna" ;
|
||||
language_N = mk2N "språk" "språk" ;
|
||||
rule_N = mkN "regel" "regeln" "regler" "reglerna" ;
|
||||
|
||||
|
||||
} ;
|
||||
@@ -1,4 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete MathSwe of Math = CategoriesSwe **
|
||||
MathScand with (SyntaxScand=SyntaxSwe) ;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,8 +0,0 @@
|
||||
--# -path=.:../abstract:../scandinavian:../../prelude
|
||||
|
||||
concrete MultimodalSwe of Multimodal =
|
||||
RulesSwe, StructuralSwe, BasicSwe, TimeSwe, DemonstrativeSwe ** MultimodalI with
|
||||
(Resource = ResourceSwe),
|
||||
(Basic = BasicSwe),
|
||||
(Lang = LangSwe),
|
||||
(DemRes = DemResSwe) ;
|
||||
2
lib/resource/swedish/NounSwe.gf
Normal file
2
lib/resource/swedish/NounSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete NounSwe of Noun = CatSwe ** NounScand with
|
||||
(ResScand = ResSwe) ;
|
||||
47
lib/resource/swedish/NumeralSwe.gf
Normal file
47
lib/resource/swedish/NumeralSwe.gf
Normal file
@@ -0,0 +1,47 @@
|
||||
concrete NumeralSwe of Numeral = CatSwe ** open ResScand, MorphoSwe in {
|
||||
|
||||
lincat
|
||||
Digit = {s : DForm => CardOrd => Str} ;
|
||||
Sub10 = {s : DForm => CardOrd => Str ; n : Number} ;
|
||||
Sub100, Sub1000, Sub1000000 =
|
||||
{s : CardOrd => Str ; n : Number} ;
|
||||
|
||||
lin
|
||||
num x = x ;
|
||||
|
||||
n2 = mkTal "två" "tolv" "tjugo" "andra" "tolfte" ;
|
||||
n3 = mkTal "tre" "tretton" "trettio" "tredje" "trettonde" ;
|
||||
n4 = mkTal "fyra" "fjorton" "fyrtio" "fjärde" "fjortonde" ;
|
||||
n5 = mkTal "fem" "femton" "femtio" "femte" "femtonde" ;
|
||||
n6 = mkTal "sex" "sexton" "sextio" "sjätte" "sextonde" ;
|
||||
n7 = mkTal "sju" "sjutton" "sjuttio" "sjunde" "sjuttonde" ;
|
||||
n8 = mkTal "åtta" "arton" "åttio" "åttonde" "artonde" ;
|
||||
n9 = mkTal "nio" "nitton" "nittio" "nionde" "nittonde" ;
|
||||
|
||||
pot01 = {
|
||||
s = \\f => table {
|
||||
NCard g => case g of {Neutr => "ett" ; _ => "en"} ;
|
||||
_ => "första"
|
||||
} ;
|
||||
n = Sg
|
||||
} ;
|
||||
pot0 d = {s = \\f,g => d.s ! f ! g ; n = Pl} ;
|
||||
pot110 = numPl (cardReg "tio") ;
|
||||
pot111 = numPl (cardOrd "elva" "elfte") ;
|
||||
pot1to19 d = numPl (d.s ! ton) ;
|
||||
pot0as1 n = {s = n.s ! ental ; n = n.n} ;
|
||||
pot1 d = numPl (d.s ! tiotal) ;
|
||||
pot1plus d e = {s = \\g => d.s ! tiotal ! invNum ++ e.s ! ental ! g ; n = Pl} ;
|
||||
pot1as2 n = n ;
|
||||
pot2 d =
|
||||
numPl (\\g => d.s ! ental ! invNum ++ cardOrd "hundra" "hundrade" ! g) ;
|
||||
pot2plus d e =
|
||||
{s = \\g => d.s ! ental ! invNum ++ "hundra" ++ e.s ! g ; n = Pl} ;
|
||||
pot2as3 n = n ;
|
||||
pot3 n =
|
||||
numPl (\\g => n.s ! invNum ++ cardOrd "tusen" "tusende" ! g) ;
|
||||
pot3plus n m =
|
||||
{s = \\g => n.s ! invNum ++ "tusen" ++ m.s ! g ; n = Pl} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
concrete NumeralsSwe of Numerals = open MorphoSwe, Prelude in {
|
||||
|
||||
lincat
|
||||
Numeral = {s : Gender => Str ; n : Number} ;
|
||||
Digit = {s : DForm => Str} ;
|
||||
Sub10 = {s : DForm => Gender => Str ; n : Number} ;
|
||||
Sub100 = {s : Gender => Str ; n : Number} ;
|
||||
Sub1000 = {s : Gender => Str ; n : Number} ;
|
||||
Sub1000000 = {s : Gender => Str ; n : Number} ;
|
||||
|
||||
lin
|
||||
num x = x ;
|
||||
|
||||
n2 = mkTal "två" "tolv" "tjugo" ;
|
||||
n3 = mkTal "tre" "tretton" "trettio" ;
|
||||
n4 = mkTal "fyra" "fjorton" "fyrtio" ;
|
||||
n5 = regTal "fem" ;
|
||||
n6 = regTal "sex" ;
|
||||
n7 = mkTal "sju" "sjutton" "sjuttio" ;
|
||||
n8 = mkTal "åtta" "arton" "åttio" ;
|
||||
n9 = mkTal "nio" "nitton" "nittio" ;
|
||||
|
||||
pot01 = {s = table {f => table {Neutr => "ett" ; _ => "en"}} ; n = Sg} ;
|
||||
pot0 d = {s = \\f,g => d.s ! f ; n = Pl} ;
|
||||
pot110 = numPl "tio" ;
|
||||
pot111 = numPl "elva" ;
|
||||
pot1to19 d = numPl (d.s ! ton) ;
|
||||
pot0as1 n = {s = n.s ! ental ; n = n.n} ;
|
||||
pot1 d = numPl (d.s ! tiotal) ;
|
||||
pot1plus d e = {s = \\g => d.s ! tiotal ++ e.s ! ental ! g ; n = Pl} ;
|
||||
pot1as2 n = n ;
|
||||
pot2 d = numPl (d.s ! ental ! Neutr ++ "hundra") ;
|
||||
pot2plus d e = {s = \\g => d.s ! ental ! Neutr ++ "hundra" ++ e.s ! g ; n = Pl} ;
|
||||
pot2as3 n = n ;
|
||||
pot3 n = numPl (n.s ! Neutr ++ "tusen") ;
|
||||
pot3plus n m = {s = \\g => n.s ! Neutr ++ "tusen" ++ m.s ! g ; n = Pl} ;
|
||||
|
||||
}
|
||||
@@ -1,370 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
--1 Swedish Lexical Paradigms
|
||||
--
|
||||
-- Aarne Ranta 2003
|
||||
--
|
||||
-- This is an API to the user of the resource grammar
|
||||
-- for adding lexical items. It give shortcuts for forming
|
||||
-- expressions of basic categories: nouns, adjectives, verbs.
|
||||
--
|
||||
-- Closed categories (determiners, pronouns, conjunctions) are
|
||||
-- accessed through the resource syntax API, $Structural.gf$.
|
||||
--
|
||||
-- The main difference with $MorphoSwe.gf$ is that the types
|
||||
-- referred to are compiled resource grammar types. We have moreover
|
||||
-- had the design principle of always having existing forms, not stems, as string
|
||||
-- arguments of the paradigms.
|
||||
--
|
||||
-- The following modules are presupposed:
|
||||
|
||||
resource ParadigmsSwe = open (Predef=Predef), Prelude, MorphoSwe, SyntaxSwe, ResourceSwe in {
|
||||
|
||||
--2 Parameters
|
||||
--
|
||||
-- To abstract over gender names, we define the following identifiers.
|
||||
|
||||
oper
|
||||
Gender : Type ;
|
||||
utrum : Gender ;
|
||||
neutrum : Gender ;
|
||||
|
||||
Sex : Type ;
|
||||
|
||||
masculine : Sex ;
|
||||
nonmasculine : Sex ;
|
||||
|
||||
-- To abstract over case names, we define the following.
|
||||
|
||||
Case : Type ;
|
||||
|
||||
nominative : Case ;
|
||||
genitive : Case ;
|
||||
|
||||
-- To abstract over number names, we define the following.
|
||||
Number : Type ;
|
||||
|
||||
singular : Number ;
|
||||
plural : Number ;
|
||||
|
||||
|
||||
|
||||
--2 Nouns
|
||||
|
||||
-- Worst case: give all nominative forms and the gender.
|
||||
-- The genitive is formed automatically, even when the nominative
|
||||
-- ends with an "s".
|
||||
|
||||
mkN : (_,_,_,_ : Str) -> Gender -> Sex -> N ;
|
||||
-- man, mannen, män, männen
|
||||
|
||||
-- Here are some common patterns, corresponding to school-gramamr declensions.
|
||||
-- Except $nPojke$, $nKarl$, and $nMurare$,
|
||||
-- they are defined to be $nonmasculine$, which means that they don't create
|
||||
-- the definite adjective form with "e" but with "a".
|
||||
|
||||
nApa : Str -> N ; -- apa (apan, apor, aporna) ; utrum
|
||||
nBil : Str -> N ; -- bil (bilen, bilar, bilarna) ; utrum
|
||||
nKarl : Str -> N ; -- karl (karlen, karlar, karlarna) ; utrum ; masculine
|
||||
nPojke : Str -> N ; -- pojke (pojken, pojkar, pojkarna) ; utrum ; masculine
|
||||
nNyckel : Str -> N ; -- nyckel (nyckeln, nycklar, nycklarna) ; utrum
|
||||
nRisk : Str -> N ; -- risk (risken, risker, riskerna) ; utrum
|
||||
nDike : Str -> N ; -- dike (diket, diken, dikena) ; neutrum
|
||||
nRep : Str -> N ; -- rep (repet, rep, repen) ; neutrum
|
||||
nPapper : Str -> N ; -- papper (pappret, papper, pappren) ; neutrum
|
||||
nMurare : Str -> N ; -- murare (muraren, murare, murarna) ; utrum ; masculine
|
||||
nKikare : Str -> N ; -- kikare (kikaren, kikare, kikarna) ; utrum
|
||||
|
||||
-- Nouns used as functions need a preposition. The most common ones are "av",
|
||||
-- "på", and "till". A preposition is a string.
|
||||
|
||||
mkN2 : N -> Str -> N2 ;
|
||||
funAv : N -> N2 ;
|
||||
funPaa : N -> N2 ;
|
||||
funTill : N -> N2 ;
|
||||
|
||||
-- Proper names, with their possibly
|
||||
-- irregular genitive. The regular genitive is "s", omitted after "s".
|
||||
|
||||
mkPN : (_,_ : Str) -> Gender -> Sex -> PN ; -- Karolus, Karoli
|
||||
pnReg : Str -> Gender -> Sex -> PN ; -- Johan,Johans ; Johannes, Johannes
|
||||
pnS : Str -> Gender -> Sex -> PN ; -- "Burger King(s)"
|
||||
|
||||
-- On the top level, it is maybe $CN$ that is used rather than $N$, and
|
||||
-- $NP$ rather than $PN$.
|
||||
|
||||
mkCN : N -> CN ;
|
||||
mkNP : (Karolus, Karoli : Str) -> Gender -> NP ;
|
||||
|
||||
npReg : Str -> Gender -> NP ; -- Johann, Johanns
|
||||
|
||||
|
||||
--2 Adjectives
|
||||
|
||||
-- Non-comparison one-place adjectives need four forms in the worst case:
|
||||
-- strong singular, weak singular, plural.
|
||||
|
||||
mkA : (_,_,_,_ : Str) -> A ; -- liten, litet, lilla, små
|
||||
|
||||
-- Special cases needing one form each are: regular adjectives,
|
||||
-- adjectives with unstressed "e" in the last syllable, those
|
||||
-- ending with "n" as a further special case, and invariable
|
||||
-- adjectives.
|
||||
|
||||
adjReg : Str -> A ; -- billig (billigt, billiga, billiga)
|
||||
adjNykter : Str -> A ; -- nykter (nyktert, nyktra, nyktra)
|
||||
adjGalen : Str -> A ; -- galen (galet, galna, galna)
|
||||
adjInvar : Str -> A ; -- bra
|
||||
|
||||
-- Two-place adjectives need a preposition and a case as extra arguments.
|
||||
|
||||
mkA2 : A -> Str -> A2 ; -- delbar, med
|
||||
mkA2Reg : Str -> Str -> A2 ; --
|
||||
|
||||
-- Comparison adjectives may need the three four forms for the positive case, plus
|
||||
-- three more forms for the comparison cases.
|
||||
|
||||
mkADeg : (liten, litet, lilla, sma, mindre, minst, minsta : Str) -> ADeg ;
|
||||
|
||||
-- Some comparison adjectives are completely regular.
|
||||
|
||||
aReg : Str -> ADeg ;
|
||||
|
||||
-- On top level, there are adjectival phrases. The most common case is
|
||||
-- just to use a one-place adjective. The variation in $adjGen$ is taken
|
||||
-- into account.
|
||||
|
||||
apReg : Str -> AP ;
|
||||
|
||||
--2 Adverbs
|
||||
|
||||
-- Adverbs are not inflected. Most lexical ones have position not
|
||||
-- before the verb. Some can be preverbal (e.g. "alltid").
|
||||
|
||||
mkAdv : Str -> Adv ;
|
||||
mkAdvPre : Str -> Adv ;
|
||||
|
||||
-- Adverbs modifying adjectives and sentences can also be formed.
|
||||
|
||||
mkAdA : Str -> AdA ;
|
||||
mkAdS : Str -> AdS ;
|
||||
|
||||
-- Prepositional phrases are another productive form of adverbials.
|
||||
|
||||
mkPP : Str -> NP -> Adv ;
|
||||
|
||||
|
||||
--2 Verbs
|
||||
--
|
||||
-- The fragment only has present tense so far.
|
||||
-- The worst case needs three forms: the infinitive, the indicative, and the
|
||||
-- imperative.
|
||||
|
||||
Voice: Type;
|
||||
|
||||
passive : Voice;
|
||||
active: Voice;
|
||||
|
||||
mkV : (_,_,_,_,_,_ : Str) -> V ; -- vara, är, var; trivas, trivs, trivs
|
||||
|
||||
-- The main conjugations need one string each.
|
||||
|
||||
vKoka : Str -> V ; -- tala (talar, tala)
|
||||
vSteka : Str -> V ; -- leka (leker, lek)
|
||||
---- vBo : Str -> V ; -- bo (bor, bo)
|
||||
|
||||
---- vAndas : Str -> V ; -- andas [all forms the same: also "slåss"]
|
||||
---- vTrivas : Str -> V ; -- trivas (trivs, trivs)
|
||||
|
||||
-- The verbs 'be' and 'have' are special.
|
||||
|
||||
vVara : V ;
|
||||
vHa : V ;
|
||||
|
||||
-- Particle verbs are formed by putting together a verb and a particle.
|
||||
-- If the verb already has a particle, it is replaced by the new one.
|
||||
|
||||
mkPartV : V -> Str -> V ; -- stänga av ;
|
||||
|
||||
-- Two-place verbs, and the special case with direct object.
|
||||
|
||||
mkV2 : V -> Str -> V2 ; -- tycka, om
|
||||
tvDir : V -> V2 ; -- gilla
|
||||
|
||||
-- Ditransitive verbs.
|
||||
|
||||
mkV3 : V -> Str -> Str -> V3 ; -- prata, med, om
|
||||
v3Dir : V -> Str -> V3 ; -- ge,_,till
|
||||
v3DirDir : V -> V3 ; -- ge,_,_
|
||||
|
||||
-- Sentence complement verbs.
|
||||
|
||||
mkVS : V -> VS ; -- säga (att ...)
|
||||
|
||||
-- Verb phrase complement verbs.
|
||||
|
||||
vvInf : V -> VV ; -- orka (spela)
|
||||
vvAtt : V -> VV ; -- gilla (att spela)
|
||||
vvBoth : V -> VV ; -- försöka (spela | att spela)
|
||||
|
||||
|
||||
-- The definitions should not bother the user of the API. So they are
|
||||
-- hidden from the document.
|
||||
--.
|
||||
|
||||
Gender = SyntaxSwe.Gender ;
|
||||
Sex = SyntaxSwe.Sex ;
|
||||
Case = SyntaxSwe.Case ;
|
||||
Number = SyntaxSwe.Number ;
|
||||
Voice = SyntaxSwe.Voice ;
|
||||
|
||||
utrum = Utr ;
|
||||
neutrum = Neutr ;
|
||||
masculine = Masc ;
|
||||
nonmasculine = NoMasc ;
|
||||
nominative = Nom ;
|
||||
genitive = Gen ;
|
||||
singular = Sg ;
|
||||
plural = Pl ;
|
||||
|
||||
active = Act;
|
||||
passive = Pass;
|
||||
|
||||
mkN = \apa, apan, apor, aporna, g, x -> let
|
||||
{nom = table {
|
||||
SF Sg Indef _ => apa ;
|
||||
SF Sg Def _ => apan ;
|
||||
SF Pl Indef _ => apor ;
|
||||
SF Pl Def _ => aporna
|
||||
}
|
||||
} in
|
||||
{s = \\n,d,c => mkCase c (nom ! SF n d Nom) ;
|
||||
g = gensex g x ; lock_N = <>
|
||||
} ;
|
||||
|
||||
-- auxiliaries
|
||||
mkGenit : Tok -> Tok = \s -> ifTok Tok (Predef.dp 1 s) "s" s (s + "s") ;
|
||||
mkCase : Case -> Tok -> Tok = \c,t -> case c of {
|
||||
Nom => t ;
|
||||
Gen => mkGenit t
|
||||
} ;
|
||||
|
||||
nApa = \apa ->
|
||||
let {apor = Predef.tk 1 apa + "or"} in
|
||||
mkN apa (apa + "n") apor (apor + "na") utrum nonmasculine ;
|
||||
|
||||
nBil = \bil ->
|
||||
mkN bil (bil + "en") (bil + "ar") (bil + "arna") utrum nonmasculine ;
|
||||
nKarl = \bil ->
|
||||
mkN bil (bil + "en") (bil + "ar") (bil + "arna") utrum masculine ;
|
||||
nPojke = \pojke ->
|
||||
let {bil = Predef.tk 1 pojke} in
|
||||
mkN pojke (bil + "en") (bil + "ar") (bil + "arna") utrum masculine ;
|
||||
nNyckel = \cykel ->
|
||||
let {cykl = Predef.tk 2 cykel + Predef.dp 1 cykel} in
|
||||
mkN cykel (cykel + "n") (cykl + "ar") (cykl + "arna") utrum nonmasculine ;
|
||||
nRisk = \bil ->
|
||||
mkN bil (bil + "en") (bil + "er") (bil + "erna") utrum nonmasculine ;
|
||||
nDike = \dike ->
|
||||
mkN dike (dike + "t") (dike + "n") (dike + "na") neutrum nonmasculine ;
|
||||
nRep = \rep ->
|
||||
mkN rep (rep + "et") rep (rep + "en") neutrum nonmasculine ;
|
||||
nPapper = \cykel ->
|
||||
let {cykl = Predef.tk 2 cykel + Predef.dp 1 cykel} in
|
||||
mkN cykel (cykl + "et") cykel (cykl + "en") neutrum nonmasculine ;
|
||||
nMurare = \murare ->
|
||||
let {murar = Predef.tk 1 murare} in
|
||||
mkN murare (murar + "en") murare (murar + "na") utrum masculine ;
|
||||
nKikare = \murare ->
|
||||
let {murar = Predef.tk 1 murare} in
|
||||
mkN murare (murar + "en") murare (murar + "na") utrum nonmasculine ;
|
||||
|
||||
|
||||
mkN2 x y = mkFun x y ** {lock_N2 = <>} ;
|
||||
funAv = \f -> mkN2 f "av" ;
|
||||
funPaa = \f -> mkN2 f "på" ;
|
||||
funTill = \f -> mkN2 f "till" ;
|
||||
|
||||
mkPN = \karolus, karoli, g, x ->
|
||||
{s = table {Gen => karoli ; _ => karolus} ; g = gensex g x ; lock_PN = <>} ;
|
||||
pnReg = \horst ->
|
||||
mkPN horst (ifTok Tok (Predef.dp 1 horst) "s" horst (horst + "s")) ;
|
||||
pnS = \bk ->
|
||||
mkPN bk (bk + "s") ;
|
||||
|
||||
mkCN = UseN ;
|
||||
mkNP = \a,b,g -> UsePN (mkPN a b g nonmasculine) ; -- gender irrelevant in NP
|
||||
npReg = \s,g -> UsePN (pnReg s g nonmasculine) ;
|
||||
|
||||
mkA = \liten, litet, lilla, små ->
|
||||
{s = table {
|
||||
Strong (ASg Utr) => \\c => mkCase c liten ;
|
||||
Strong (ASg Neutr) => \\c => mkCase c litet ;
|
||||
Strong APl => \\c => mkCase c små ;
|
||||
Weak (AxSg Masc) => \\c => mkCase c (Predef.tk 1 lilla + "e") ;
|
||||
Weak _ => \\c => mkCase c lilla
|
||||
} ;
|
||||
lock_A = <>
|
||||
} ;
|
||||
|
||||
adjReg = \billig -> mkA billig (billig + "t") (billig + "a") (billig + "a") ;
|
||||
adjNykter = \nykter ->
|
||||
let {nyktr = Predef.tk 2 nykter + Predef.dp 1 nykter} in
|
||||
mkA nykter (nykter + "t") (nyktr + "a") (nyktr + "a") ;
|
||||
adjGalen = \galen ->
|
||||
let {gal = Predef.tk 2 galen} in
|
||||
mkA galen (gal + "et") (gal + "na") (gal + "na") ;
|
||||
adjInvar = \bra -> {s = \\_,_ => bra ; lock_A = <>} ;
|
||||
|
||||
mkA2 = \a,p -> a ** {s2 = p ; lock_A2 = <>} ;
|
||||
mkA2Reg = \a -> mkA2 (adjReg a) ;
|
||||
|
||||
mkADeg = \liten, litet, lilla, sma, mindre, minst, minsta ->
|
||||
let {lit = (mkA liten litet lilla sma).s} in
|
||||
{s = table {
|
||||
AF (Posit f) c => lit ! f ! c ;
|
||||
AF Compar c => mkCase c mindre ;
|
||||
AF (Super SupStrong) c => mkCase c minst ;
|
||||
AF (Super SupWeak) c => mkCase c minsta --- masculine!
|
||||
} ;
|
||||
lock_ADeg = <>
|
||||
} ;
|
||||
|
||||
aReg = \fin -> mkADeg fin
|
||||
(fin + "t") (fin + "a") (fin + "a") (fin + "are") (fin + "ast") (fin + "aste") ;
|
||||
|
||||
apReg = \s -> UseA (adjReg s) ;
|
||||
|
||||
mkAdv a = advPost a ** {lock_Adv = <>} ;
|
||||
mkAdvPre a = advPre a ** {lock_Adv = <>} ;
|
||||
mkPP x y = prepPhrase x y ** {lock_Adv = <>} ;
|
||||
mkAdA a = ss a ** {lock_AdA = <>} ;
|
||||
mkAdS a = ss a ** {lock_AdS = <>} ;
|
||||
|
||||
mkV x y z a b c = mkVerb x y z a b c ** {lock_V = <>} ;
|
||||
vKoka = \tala -> vTala (Predef.tk 1 tala) ** {s1 = [] ; lock_V = <>} ;
|
||||
vSteka = \leka -> vLeka (Predef.tk 1 leka) ** {s1 = [] ; lock_V = <>} ;
|
||||
---- vBo = \bo -> mkV bo (bo+"r") bo ;
|
||||
---- vAndas = \andas -> mkV andas andas andas ;
|
||||
---- vTrivas = \trivas ->
|
||||
---- let {trivs = Predef.tk 1 trivas + "s"} in mkV trivas trivs trivs ;
|
||||
vVara = verbVara ** {s1 = [] ; lock_V = <>} ;
|
||||
vHa = verbHava ** {s1 = [] ; lock_V = <>} ;
|
||||
mkPartV v p = {s = v.s ; s1 = p ; lock_V = <>} ;
|
||||
mkV2 x y = mkTransVerb x y ** {lock_V2 = <>} ;
|
||||
tvDir = \v -> mkV2 v [] ;
|
||||
mkV3 x y z = mkDitransVerb x y z ** {lock_V3 = <>} ;
|
||||
v3Dir x y = mkV3 x [] y ;
|
||||
v3DirDir x = v3Dir x [] ;
|
||||
|
||||
mkVS v = v ** {lock_VS = <>} ;
|
||||
vvInf v = v ** {isAux = True ; lock_VV = <>} ;
|
||||
vvAtt v = v ** {isAux = False ; lock_VV = <>} ;
|
||||
vvBoth v = v ** {isAux = variants {False ; True} ; lock_VV = <>} ;
|
||||
|
||||
gensex : Gender -> Sex -> NounGender = \g,x -> case g of {
|
||||
Utr => NUtr x ;
|
||||
_ => NNeutr
|
||||
} ;
|
||||
|
||||
} ;
|
||||
@@ -1,17 +1,17 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
--# -path=.:../scandinavian:../common:../abstract:../../prelude
|
||||
|
||||
--1 Swedish Lexical Paradigms
|
||||
--
|
||||
-- Aarne Ranta 2003
|
||||
-- Aarne Ranta 2001 - 2006
|
||||
--
|
||||
-- This is an API to the user of the resource grammar
|
||||
-- This is an API for the user of the resource grammar
|
||||
-- for adding lexical items. It gives functions for forming
|
||||
-- expressions of open categories: nouns, adjectives, verbs.
|
||||
--
|
||||
-- Closed categories (determiners, pronouns, conjunctions) are
|
||||
-- accessed through the resource syntax API, $Structural.gf$.
|
||||
--
|
||||
-- The main difference with $MorphoEng.gf$ is that the types
|
||||
-- The main difference with $MorphoSwe.gf$ is that the types
|
||||
-- referred to are compiled resource grammar types. We have moreover
|
||||
-- had the design principle of always having existing forms, rather
|
||||
-- than stems, as string arguments of the paradigms.
|
||||
@@ -21,13 +21,18 @@
|
||||
-- regular cases. Then we give a worst-case function $mkC$, which serves as an
|
||||
-- escape to construct the most irregular words of type $C$.
|
||||
-- However, this function should only seldom be needed: we have a
|
||||
-- separate module $IrregularEng$, which covers all irregularly inflected
|
||||
-- words.
|
||||
--
|
||||
-- The following modules are presupposed:
|
||||
-- separate module [``IrregSwe`` ../../swedish/IrregSwe],
|
||||
-- which covers many irregular verbs.
|
||||
|
||||
|
||||
resource ParadigmsSwe =
|
||||
open (Predef=Predef), Prelude, TypesSwe, MorphoSwe, SyntaxSwe, CategoriesSwe in {
|
||||
open
|
||||
(Predef=Predef),
|
||||
Prelude,
|
||||
CommonScand,
|
||||
ResSwe,
|
||||
MorphoSwe,
|
||||
CatSwe in {
|
||||
|
||||
--2 Parameters
|
||||
--
|
||||
@@ -55,7 +60,8 @@ oper
|
||||
|
||||
-- Prepositions used in many-argument functions are just strings.
|
||||
|
||||
Preposition : Type = Str ;
|
||||
mkPrep : Str -> Prep ;
|
||||
noPrep : Prep ; -- empty string
|
||||
|
||||
--2 Nouns
|
||||
|
||||
@@ -64,21 +70,27 @@ oper
|
||||
|
||||
mkN : (apa,apan,apor,aporna : Str) -> N ;
|
||||
|
||||
-- The regular function takes the singular indefinite form and the gender,
|
||||
-- and computes the other forms by a heuristic.
|
||||
-- The regular function takes the singular indefinite form and computes the other
|
||||
-- forms and the gender by a heuristic. The heuristic is currently
|
||||
-- to treat all words ending with "a" like "flicka", with "e" like "rike",
|
||||
-- and otherwise like "bil".
|
||||
-- If in doubt, use the $cc$ command to test!
|
||||
|
||||
regN : Str -> Gender -> N ;
|
||||
regN : Str -> N ;
|
||||
|
||||
-- Adding the gender manually greatly improves the correction of $regN$.
|
||||
|
||||
regGenN : Str -> Gender -> N ;
|
||||
|
||||
-- In practice the worst case is often just: give singular and plural indefinite.
|
||||
|
||||
mk2N : (nyckel,nycklar : Str) -> N ;
|
||||
|
||||
-- All nouns created by the previous functions are marked as
|
||||
-- $nonmasculine$. If you want a $masculine$ noun, wrap it with the following
|
||||
-- function:
|
||||
-- This heuristic takes just the plural definite form and infers the others.
|
||||
-- It does not work if there are changes in the stem.
|
||||
|
||||
mascN : N -> N ;
|
||||
mk1N : (bilarna : Str) -> N ;
|
||||
|
||||
|
||||
--3 Compound nouns
|
||||
--
|
||||
@@ -88,9 +100,9 @@ oper
|
||||
|
||||
--3 Relational nouns
|
||||
--
|
||||
-- Relational nouns ("daughter of x") need a preposition.
|
||||
-- Relational nouns ("dotter till x") need a preposition.
|
||||
|
||||
mkN2 : N -> Preposition -> N2 ;
|
||||
mkN2 : N -> Prep -> N2 ;
|
||||
|
||||
-- The most common preposition is "av", and the following is a
|
||||
-- shortcut for regular, $nonhuman$ relational nouns with "av".
|
||||
@@ -100,15 +112,16 @@ oper
|
||||
-- Use the function $mkPreposition$ or see the section on prepositions below to
|
||||
-- form other prepositions.
|
||||
--
|
||||
-- Three-place relational nouns ("the connection from x to y") need two prepositions.
|
||||
-- Three-place relational nouns ("förbindelse från x till y")
|
||||
-- need two prepositions.
|
||||
|
||||
mkN3 : N -> Preposition -> Preposition -> N3 ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 ;
|
||||
|
||||
|
||||
--3 Relational common noun phrases
|
||||
--
|
||||
-- In some cases, you may want to make a complex $CN$ into a
|
||||
-- relational noun (e.g. "the old town hall of"). However, $N2$ and
|
||||
-- relational noun (e.g. "den före detta maken till"). However, $N2$ and
|
||||
-- $N3$ are purely lexical categories. But you can use the $AdvCN$
|
||||
-- and $PrepNP$ constructions to build phrases like this.
|
||||
|
||||
@@ -117,7 +130,8 @@ oper
|
||||
--
|
||||
-- Proper names, with a regular genitive, are formed as follows
|
||||
|
||||
regPN : Str -> Gender -> PN ; -- John, John's
|
||||
regGenPN : Str -> Gender -> PN ;
|
||||
regPN : Str -> PN ; -- utrum
|
||||
|
||||
-- Sometimes you can reuse a common noun as a proper name, e.g. "Bank".
|
||||
|
||||
@@ -130,114 +144,96 @@ oper
|
||||
|
||||
--2 Adjectives
|
||||
|
||||
-- Non-comparison one-place adjectives need for forms:
|
||||
-- Adjectives may need as many as seven forms.
|
||||
|
||||
mkA : (galen,galet,galna : Str) -> A ;
|
||||
|
||||
-- For regular adjectives, the other forms are derived.
|
||||
|
||||
regA : Str -> A ;
|
||||
|
||||
-- In practice, two forms are enough.
|
||||
|
||||
mk2A : (bred,brett : Str) -> A ;
|
||||
|
||||
--3 Two-place adjectives
|
||||
--
|
||||
-- Two-place adjectives need a preposition for their second argument.
|
||||
|
||||
mkA2 : A -> Preposition -> A2 ;
|
||||
|
||||
-- Comparison adjectives may need as many as seven forms.
|
||||
|
||||
mkADeg : (liten, litet, lilla, sma, mindre, minst, minsta : Str) -> ADeg ;
|
||||
mkA : (liten, litet, lilla, sma, mindre, minst, minsta : Str) -> A ;
|
||||
|
||||
-- The regular pattern works for many adjectives, e.g. those ending
|
||||
-- with "ig".
|
||||
|
||||
regADeg : Str -> ADeg ;
|
||||
regA : Str -> A ;
|
||||
|
||||
-- Just the comparison forms can be irregular.
|
||||
|
||||
irregADeg : (tung,tyngre,tyngst : Str) -> ADeg ;
|
||||
irregA : (tung,tyngre,tyngst : Str) -> A ;
|
||||
|
||||
-- Sometimes just the positive forms are irregular.
|
||||
|
||||
mk3ADeg : (galen,galet,galna : Str) -> ADeg ;
|
||||
mk2ADeg : (bred,brett : Str) -> ADeg ;
|
||||
mk3A : (galen,galet,galna : Str) -> A ;
|
||||
mk2A : (bred,brett : Str) -> A ;
|
||||
|
||||
-- If comparison is formed by "more, "most", as in general for
|
||||
-- long adjective, the following pattern is used:
|
||||
-- Comparison forms may be compound ("mera svensk" - "mest svensk").
|
||||
|
||||
compoundADeg : A -> ADeg ; -- -/more/most ridiculous
|
||||
compoundA : A -> A ;
|
||||
|
||||
-- From a given $ADeg$, it is possible to get back to $A$.
|
||||
|
||||
adegA : ADeg -> A ;
|
||||
--3 Two-place adjectives
|
||||
--
|
||||
-- Two-place adjectives need a preposition for their second argument.
|
||||
|
||||
mkA2 : A -> Prep -> A2 ;
|
||||
|
||||
|
||||
--2 Adverbs
|
||||
|
||||
-- Adverbs are not inflected. Most lexical ones have position
|
||||
-- after the verb. Some can be preverbal (e.g. "always").
|
||||
-- after the verb. Some can be preverbal in subordinate position
|
||||
-- (e.g. "alltid").
|
||||
|
||||
mkAdv : Str -> Adv ;
|
||||
mkAdV : Str -> AdV ;
|
||||
mkAdv : Str -> Adv ; -- här
|
||||
mkAdV : Str -> AdV ; -- alltid
|
||||
|
||||
-- Adverbs modifying adjectives and sentences can also be formed.
|
||||
|
||||
mkAdA : Str -> AdA ;
|
||||
|
||||
--2 Prepositions
|
||||
--
|
||||
-- A preposition is just a string.
|
||||
|
||||
mkPreposition : Str -> Preposition ;
|
||||
|
||||
--2 Verbs
|
||||
--
|
||||
-- The worst case needs five forms.
|
||||
|
||||
mkV : (supa,super,sup,söp,supit,supen : Str) -> V ;
|
||||
|
||||
-- The 'regular verb' function is the first conjugation if the
|
||||
-- infinitive ends with "a" ("tala" - "talar" - "talade" - "talat"),
|
||||
-- The 'regular verb' function is inspired by Lexin. It uses the
|
||||
-- present tense indicative form. The value is the first conjugation if the
|
||||
-- argument ends with "ar" ("tala" - "talar" - "talade" - "talat"),
|
||||
-- the second with "er" ("leka" - "leker" - "lekte" - "lekt", with the
|
||||
-- variations like "gräva", "vända", "tyda", "hyra"), and
|
||||
-- the third in other cases ("bo" - "bor" - "bodde" - "bott").
|
||||
|
||||
regV : (tala : Str) -> V ;
|
||||
regV : (talar : Str) -> V ;
|
||||
|
||||
-- The almost regular verb function needs the infinitive and the preteritum.
|
||||
-- It can deal with almost all cases in the first, second, and third
|
||||
-- conjugation: "tala" - "talade", "leka" - "lekte",
|
||||
-- "gräva" - "grävde", "byta" - "bytte", "vända" - "vände",
|
||||
-- "tyda" - "tydde", "bo" - "bodde".
|
||||
-- It is not really more powerful than the new implementation of
|
||||
-- $regV$ based on the indicative form.
|
||||
|
||||
mk2V : (leka,lekte : Str) -> V ;
|
||||
|
||||
-- There is an extensive list of irregular verbs in the module $IrregularSwe$.
|
||||
-- There is an extensive list of irregular verbs in the module $IrregSwe$.
|
||||
-- In practice, it is enough to give three forms, as in school books.
|
||||
|
||||
irregV : (dricka, drack, druckit : Str) -> V ;
|
||||
irregV : (dricka, drack, druckit : Str) -> V ;
|
||||
|
||||
|
||||
--3 Verbs with a particle.
|
||||
--
|
||||
-- The particle, such as in "switch on", is given as a string.
|
||||
-- The particle, such as in "passa på", is given as a string.
|
||||
|
||||
partV : V -> Str -> V ;
|
||||
|
||||
--3 Deponent verbs.
|
||||
--
|
||||
-- Some words are used in passive forms only, e.g. "hoppas".
|
||||
-- Some words are used in passive forms only, e.g. "hoppas", some as
|
||||
-- reflexive e.g. "ångra sig".
|
||||
|
||||
depV : V -> V ;
|
||||
reflV : V -> V ;
|
||||
|
||||
--3 Two-place verbs
|
||||
--
|
||||
-- Two-place verbs need a preposition, except the special case with direct object.
|
||||
-- (transitive verbs). Notice that a particle comes from the $V$.
|
||||
|
||||
mkV2 : V -> Preposition -> V2 ;
|
||||
mkV2 : V -> Prep -> V2 ;
|
||||
|
||||
dirV2 : V -> V2 ;
|
||||
|
||||
@@ -246,9 +242,9 @@ oper
|
||||
-- Three-place (ditransitive) verbs need two prepositions, of which
|
||||
-- the first one or both can be absent.
|
||||
|
||||
mkV3 : V -> Str -> Str -> V3 ; -- speak, with, about
|
||||
dirV3 : V -> Str -> V3 ; -- give,_,to
|
||||
dirdirV3 : V -> V3 ; -- give,_,_
|
||||
mkV3 : V -> Prep -> Prep -> V3 ; -- tala, med, om
|
||||
dirV3 : V -> Prep -> V3 ; -- ge, (acc),till
|
||||
dirdirV3 : V -> V3 ; -- ge, (dat), (acc)
|
||||
|
||||
--3 Other complement patterns
|
||||
--
|
||||
@@ -257,100 +253,269 @@ oper
|
||||
|
||||
mkV0 : V -> V0 ;
|
||||
mkVS : V -> VS ;
|
||||
mkV2S : V -> Str -> V2S ;
|
||||
mkV2S : V -> Prep -> V2S ;
|
||||
mkVV : V -> VV ;
|
||||
mkV2V : V -> Str -> Str -> V2V ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V ;
|
||||
mkVA : V -> VA ;
|
||||
mkV2A : V -> Str -> V2A ;
|
||||
mkV2A : V -> Prep -> V2A ;
|
||||
mkVQ : V -> VQ ;
|
||||
mkV2Q : V -> Str -> V2Q ;
|
||||
mkV2Q : V -> Prep -> V2Q ;
|
||||
|
||||
mkAS : A -> AS ;
|
||||
mkA2S : A -> Str -> A2S ;
|
||||
mkA2S : A -> Prep -> A2S ;
|
||||
mkAV : A -> AV ;
|
||||
mkA2V : A -> Str -> A2V ;
|
||||
mkA2V : A -> Prep -> A2V ;
|
||||
|
||||
-- Notice: categories $V2S, V2V, V2A, V2Q$ are in v 1.0 treated
|
||||
-- just as synonyms of $V2$, and the second argument is given
|
||||
-- as an adverb. Likewise $AS, A2S, AV, A2V$ are just $A$.
|
||||
-- $V0$ is just $V$.
|
||||
|
||||
V0, V2S, V2V, V2A, V2Q : Type ;
|
||||
AS, A2S, AV, A2V : Type ;
|
||||
|
||||
--.
|
||||
--2 Definitions of the paradigms
|
||||
--
|
||||
-- The definitions should not bother the user of the API. So they are
|
||||
-- hidden from the document.
|
||||
--.
|
||||
|
||||
Gender = SyntaxSwe.NounGender ;
|
||||
Number = TypesSwe.Number ;
|
||||
Case = TypesSwe.Case ;
|
||||
utrum = NUtr NoMasc ;
|
||||
neutrum = NNeutr ;
|
||||
Gender = ResSwe.Gender ;
|
||||
Number = CommonScand.Number ;
|
||||
Case = CommonScand.Case ;
|
||||
utrum = Utr ;
|
||||
neutrum = Neutr ;
|
||||
singular = Sg ;
|
||||
plural = Pl ;
|
||||
nominative = Nom ;
|
||||
genitive = Gen ;
|
||||
|
||||
mkN x y z u = extCommNoun (mkNoun x y z u) ** {lock_N = <>} ;
|
||||
regN x g = extCommNoun (regNoun x (genNoun g)) ** {lock_N = <>} ;
|
||||
mk2N x g = extCommNoun (reg2Noun x g) ** {lock_N = <>} ;
|
||||
mascN n = {s = n.s ; g = NUtr Masc ; lock_N = <>} ;
|
||||
mkPrep p = {s = p ; lock_Prep = <>} ;
|
||||
noPrep = mkPrep [] ;
|
||||
|
||||
mkN2 = \n,p -> n ** {lock_N2 = <> ; s2 = p} ;
|
||||
regN2 n g = mkN2 (regN n g) (mkPreposition "av") ;
|
||||
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; s2 = p ; s3 = q} ;
|
||||
mkN = \apa,apan,apor,aporna -> {
|
||||
s = nounForms apa apan apor aporna ;
|
||||
g = case last apan of {
|
||||
"n" => Utr ;
|
||||
_ => Neutr
|
||||
}
|
||||
} ** {lock_N = <>} ;
|
||||
|
||||
regPN n g = {s = \\c => mkCase c n ; g = g} ** {lock_PN = <>} ;
|
||||
regN bil = regGenN bil g where {
|
||||
g = case <bil : Str> of {
|
||||
_ + "e" => Neutr ;
|
||||
_ => Utr
|
||||
}
|
||||
} ;
|
||||
|
||||
regGenN bil g = case g of {
|
||||
Utr => case last bil of {
|
||||
"a" => decl1Noun bil ;
|
||||
_ => decl2Noun bil
|
||||
} ;
|
||||
Neutr => case last bil of {
|
||||
"e" => decl4Noun bil ;
|
||||
_ => decl5Noun bil
|
||||
}
|
||||
} ** {lock_N = <>} ;
|
||||
|
||||
mk1N bilarna = case bilarna of {
|
||||
ap + "orna" => decl1Noun (ap + "a") ;
|
||||
bil + "arna" => decl2Noun bil ;
|
||||
rad + "erna" => decl3Noun rad ;
|
||||
rik + "ena" => decl4Noun (rik + "e") ;
|
||||
husen => decl5Noun (Predef.tk 2 husen)
|
||||
} ;
|
||||
|
||||
mk2N bil bilar =
|
||||
ifTok N bil bilar (decl5Noun bil) (
|
||||
case Predef.dp 2 bilar of {
|
||||
"or" => case bil of {
|
||||
_ + "a" => decl1Noun bil ; -- apa, apor
|
||||
_ + "o" => mkN bil (bil + "n") bilar (bilar + "na") ; -- ko,kor
|
||||
_ => mkN bil (bil + "en") bilar (bilar + "na") -- ros,rosor
|
||||
} ;
|
||||
"ar" => decl2Noun bil ;
|
||||
"er" => decl3gNoun bil bilar ; -- fot, fötter
|
||||
"en" => decl4Noun bil ; -- rike, riken
|
||||
_ => mkN bil (bil + "et") bilar (bilar + "n") -- centrum, centra
|
||||
}) ;
|
||||
|
||||
-- School declensions.
|
||||
|
||||
decl1Noun : Str -> N = \apa ->
|
||||
let ap = init apa in
|
||||
mkN apa (apa + "n") (ap + "or") (ap + "orna") ;
|
||||
|
||||
decl2Noun : Str -> N = \bil ->
|
||||
let
|
||||
bb : Str * Str = case bil of {
|
||||
br + ("o" | "u" | "ö" | "å") => <bil + "ar", bil + "n"> ;
|
||||
pojk + "e" => <pojk + "ar", bil + "n"> ;
|
||||
hi + "mme" + l@("l" | "r") => <hi + "m" + l + "ar",hi + "m" + l + "en"> ;
|
||||
nyck + "e" + l@("l" | "r") => <nyck + l + "ar",bil + "n"> ;
|
||||
sock + "e" + "n" => <sock + "nar", sock + "nen"> ;
|
||||
_ => <bil + "ar", bil + "en">
|
||||
} ;
|
||||
in mkN bil bb.p2 bb.p1 (bb.p1 + "na") ;
|
||||
|
||||
decl3Noun : Str -> N = \sak ->
|
||||
case last sak of {
|
||||
"e" => mkN sak (sak + "n") (sak +"r") (sak + "rna") ;
|
||||
"y" | "å" | "é" | "y" => mkN sak (sak + "n") (sak +"er") (sak + "erna") ;
|
||||
_ => mkN sak (sak + "en") (sak + "er") (sak + "erna")
|
||||
} ;
|
||||
decl3gNoun : Str -> Str -> N = \sak,saker ->
|
||||
case last sak of {
|
||||
"e" => mkN sak (sak + "n") saker (saker + "na") ;
|
||||
"y" | "å" | "é" | "y" => mkN sak (sak + "n") saker (saker + "na") ;
|
||||
_ => mkN sak (sak + "en") saker (saker + "na")
|
||||
} ;
|
||||
|
||||
decl4Noun : Str -> N = \rike ->
|
||||
mkN rike (rike + "t") (rike + "n") (rike + "na") ;
|
||||
|
||||
decl5Noun : Str -> N = \lik ->
|
||||
case Predef.dp 3 lik of {
|
||||
"are" => mkN lik (lik + "n") lik (init lik + "na") ; -- kikare
|
||||
_ => mkN lik (lik + "et") lik (lik + "en")
|
||||
} ;
|
||||
|
||||
|
||||
mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
|
||||
regN2 n g = mkN2 (regGenN n g) (mkPrep "av") ;
|
||||
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
|
||||
|
||||
regPN n = regGenPN n utrum ;
|
||||
regGenPN n g = {s = \\c => mkCase c n ; g = g} ** {lock_PN = <>} ;
|
||||
nounPN n = {s = n.s ! singular ! Indef ; g = n.g ; lock_PN = <>} ;
|
||||
mkNP x y n g =
|
||||
{s = table {PGen _ => x ; _ => y} ; g = genNoun g ; n = n ; p = P3 ;
|
||||
{s = table {NPPoss _ => y ; _ => x} ; a = agrP3 g n ; p = P3 ;
|
||||
lock_NP = <>} ;
|
||||
|
||||
mkA a b c = extractPositive (adjAlmostReg a b c) ** {lock_A = <>} ;
|
||||
mk2A a b = extractPositive (adj2Reg a b) ** {lock_A = <>} ;
|
||||
regA a = extractPositive (adjReg a) ** {lock_A = <>} ;
|
||||
mkA a b c d e f g = mkAdjective a b c d e f g ** {isComp = False ; lock_A = <>} ;
|
||||
regA fin =
|
||||
let fint : Str = case fin of {
|
||||
ru + "nd" => ru + "nt" ;
|
||||
se + "dd" => se + "tt" ;
|
||||
pla + "tt" => pla + "tt" ;
|
||||
gla + "d" => gla + "tt" ;
|
||||
_ => fin + "t"
|
||||
}
|
||||
in
|
||||
mk3A fin fint (fin + "a") ;
|
||||
irregA ung yngre yngst =
|
||||
mkA ung (ung + "t") (ung + "a") (ung + "a") yngre yngst (yngst+"a") ;
|
||||
|
||||
mkA2 a p = a ** {s2 = p ; lock_A2 = <>} ;
|
||||
mk3A ljummen ljummet ljumma =
|
||||
mkA
|
||||
ljummen ljummet ljumma ljumma
|
||||
(ljumma + "re") (ljumma + "st") (ljumma + "ste") ;
|
||||
mk2A vid vitt = mk3A vid vitt (vid + "a") ;
|
||||
|
||||
mkADeg a b c d e f g = mkAdjective a b c d e f g ** {lock_ADeg = <>} ;
|
||||
regADeg a = adjReg a ** {lock_ADeg = <>} ;
|
||||
irregADeg a b c = adjIrreg3 a b c ** {lock_ADeg = <>} ;
|
||||
mk3ADeg a b c = adjAlmostReg a b c ** {lock_ADeg = <>} ;
|
||||
mk2ADeg a b = adj2Reg a b ** {lock_ADeg = <>} ;
|
||||
compoundA adj = {s = adj.s ; isComp = True ; lock_A = <>} ;
|
||||
|
||||
mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ;
|
||||
|
||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||
mkAdV x = ss x ** {lock_AdV = <>} ;
|
||||
mkAdA x = ss x ** {lock_AdA = <>} ;
|
||||
|
||||
mkPreposition p = p ;
|
||||
mkV = \finna,finner,finn,fann,funnit,funnen ->
|
||||
let
|
||||
funn = ptPretForms funnen ;
|
||||
funnet = funn ! Strong SgNeutr ! Nom ;
|
||||
funna = funn ! Strong Plg ! Nom
|
||||
in
|
||||
mkVerb finna finner finn fann funnit funnen funnet funna **
|
||||
{part = [] ; vtype=VAct ; lock_V = <>} ;
|
||||
|
||||
mkV a b c d e f = mkVerb a b c d e f ** {s1 = [] ; lock_V = <>} ;
|
||||
regV leker = case leker of {
|
||||
lek + "a" => conj1 leker ; --- bw compat
|
||||
lek + "ar" => conj1 (lek + "a") ;
|
||||
lek + "er" => conj2 (lek + "a") ;
|
||||
bo + "r" => conj3 bo
|
||||
} ;
|
||||
|
||||
regV a = mk2V a (a + de) where {de = case last a of {"a" => "de" ; _ => "dde"}} ;
|
||||
mk2V a b = regVerb a b ** {s1 = [] ; lock_V = <>} ;
|
||||
mk2V leka lekte = case <leka,lekte> of {
|
||||
<_, _ + "ade"> => conj1 leka ;
|
||||
<_ + "a", _> => conj2 leka ;
|
||||
_ => conj3 leka
|
||||
} ;
|
||||
|
||||
irregV x y z = vSälja x y z
|
||||
-- school conjugations
|
||||
|
||||
conj1 : Str -> V = \tala ->
|
||||
mkV tala (tala + "r") tala (tala +"de") (tala +"t") (tala +"d") ;
|
||||
|
||||
conj2 : Str -> V = \leka ->
|
||||
let lek = init leka in
|
||||
case last lek of {
|
||||
"l" | "m" | "n" | "v" | "g" =>
|
||||
let gom = case <lek : Tok> of {
|
||||
_ + "mm" => init lek ;
|
||||
_ => lek
|
||||
}
|
||||
in mkV leka (lek + "er") gom (gom +"de") (gom +"t") (gom +"d") ;
|
||||
"r" =>
|
||||
mkV leka lek lek (lek +"de") (lek +"t") (lek +"d") ;
|
||||
_ => case leka of {
|
||||
_ + "nd" =>
|
||||
mkV leka (lek + "er") lek (lek +"e") (init lek +"t") lek ;
|
||||
_ =>
|
||||
mkV leka (lek + "er") lek (lek +"te") (lek +"t") (lek +"t")
|
||||
}
|
||||
} ;
|
||||
|
||||
conj3 : Str -> V = \bo ->
|
||||
mkV bo (bo + "r") bo (bo +"dde") (bo +"tt") (bo +"dd") ;
|
||||
|
||||
irregV = \sälja, sålde, sålt ->
|
||||
let
|
||||
säljer = case last sälja of {
|
||||
"a" => conj2 sälja ;
|
||||
_ => conj3 sälja
|
||||
} ;
|
||||
såld = case Predef.dp 2 sålt of {
|
||||
"it" => Predef.tk 2 sålt + "en" ;
|
||||
"tt" => Predef.tk 2 sålt + "dd" ;
|
||||
_ => init sålt + "d"
|
||||
}
|
||||
in
|
||||
mkV sälja (säljer.s ! VF (VPres Act)) (säljer.s ! (VF (VImper Act))) sålde sålt såld
|
||||
** {s1 = [] ; lock_V = <>} ;
|
||||
|
||||
partV v p = {s = v.s ; s1 = p ; lock_V = <>} ;
|
||||
depV v = deponentVerb v ** {lock_V = <>} ;
|
||||
partV v p = {s = v.s ; part = p ; vtype = v.vtype ; lock_V = <>} ;
|
||||
depV v = {s = v.s ; part = v.part ; vtype = VPass ; lock_V = <>} ;
|
||||
reflV v = {s = v.s ; part = v.part ; vtype = VRefl ; lock_V = <>} ;
|
||||
|
||||
mkV2 v p = v ** {s = v.s ; s1 = v.s1 ; s2 = p ; lock_V2 = <>} ;
|
||||
dirV2 v = mkV2 v [] ;
|
||||
mkV2 v p = v ** {c2 = p.s ; lock_V2 = <>} ;
|
||||
dirV2 v = mkV2 v noPrep ;
|
||||
|
||||
mkV3 v p q = v ** {s = v.s ; s1 = v.s1 ; s2 = p ; s3 = q ; lock_V3 = <>} ;
|
||||
dirV3 v p = mkV3 v [] p ;
|
||||
dirdirV3 v = dirV3 v [] ;
|
||||
mkV3 v p q = v ** {c2 = p.s ; c3 = q.s ; lock_V3 = <>} ;
|
||||
dirV3 v p = mkV3 v noPrep p ;
|
||||
dirdirV3 v = dirV3 v noPrep ;
|
||||
|
||||
mkV0 v = v ** {lock_V0 = <>} ;
|
||||
mkVS v = v ** {lock_VS = <>} ;
|
||||
mkV2S v p = mkV2 v p ** {lock_V2S = <>} ;
|
||||
mkVV v = v ** {isAux = False ; lock_VV = <>} ;
|
||||
mkV2V v p t = mkV2 v p ** {s3 = t ; lock_V2V = <>} ;
|
||||
mkVV v = v ** {c2 = "att" ; lock_VV = <>} ;
|
||||
mkVQ v = v ** {lock_VQ = <>} ;
|
||||
|
||||
mkVA v = v ** {lock_VA = <>} ;
|
||||
mkV2A v p = mkV2 v p ** {lock_V2A = <>} ;
|
||||
mkVQ v = v ** {lock_VQ = <>} ;
|
||||
mkV2Q v p = mkV2 v p ** {lock_V2Q = <>} ;
|
||||
|
||||
mkAS v = v ** {lock_AS = <>} ;
|
||||
mkA2S v p = mkA2 v p ** {lock_A2S = <>} ;
|
||||
mkAV v = v ** {lock_AV = <>} ;
|
||||
mkA2V v p = mkA2 v p ** {lock_A2V = <>} ;
|
||||
V0 : Type = V ;
|
||||
V2S, V2V, V2Q, V2A : Type = V2 ;
|
||||
AS, A2S, AV : Type = A ;
|
||||
A2V : Type = A2 ;
|
||||
|
||||
mkV2S v p = mkV2 v p ** {lock_V2 = <>} ;
|
||||
mkV2V v p t = mkV2 v p ** {s3 = t ; lock_V2 = <>} ;
|
||||
mkV2Q v p = mkV2 v p ** {lock_V2 = <>} ;
|
||||
|
||||
mkAS v = v ** {lock_A = <>} ;
|
||||
mkA2S v p = mkA2 v p ** {lock_A = <>} ;
|
||||
mkAV v = v ** {lock_A = <>} ;
|
||||
mkA2V v p = mkA2 v p ** {lock_A = <>} ;
|
||||
|
||||
} ;
|
||||
|
||||
2
lib/resource/swedish/PhraseSwe.gf
Normal file
2
lib/resource/swedish/PhraseSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete PhraseSwe of Phrase = CatSwe ** PhraseScand with
|
||||
(ResScand = ResSwe) ;
|
||||
2
lib/resource/swedish/QuestionSwe.gf
Normal file
2
lib/resource/swedish/QuestionSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete QuestionSwe of Question = CatSwe ** QuestionScand with
|
||||
(ResScand = ResSwe) ;
|
||||
2
lib/resource/swedish/RelativeSwe.gf
Normal file
2
lib/resource/swedish/RelativeSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete RelativeSwe of Relative = CatSwe ** RelativeScand with
|
||||
(ResScand = ResSwe) ;
|
||||
3
lib/resource/swedish/ResSwe.gf
Normal file
3
lib/resource/swedish/ResSwe.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
instance ResSwe of ResScand = DiffSwe ** open CommonScand, Prelude in {
|
||||
} ;
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
---- concrete ResourceSwe of Resource = RulesSwe, VerbphraseSwe ** {} ;
|
||||
concrete ResourceSwe of Resource = RulesSwe, StructuralSwe, ClauseSwe ** {} ;
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete RulesSwe of Rules = CategoriesSwe **
|
||||
RulesScand with (SyntaxScand=SyntaxSwe) ;
|
||||
@@ -1,4 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete SatsSwe of Sats = CategoriesSwe **
|
||||
SatsScand with (SyntaxScand=SyntaxSwe) ;
|
||||
2
lib/resource/swedish/SentenceSwe.gf
Normal file
2
lib/resource/swedish/SentenceSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete SentenceSwe of Sentence = CatSwe ** SentenceScand with
|
||||
(ResScand = ResSwe) ;
|
||||
@@ -1,21 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete SimpleLangSwe of SimpleLang =
|
||||
SimpleSwe,
|
||||
StructuralSwe,
|
||||
BasicSwe,
|
||||
TimeSwe,
|
||||
CountrySwe
|
||||
|
||||
** open Prelude, ParadigmsSwe in {
|
||||
|
||||
lin
|
||||
AdvDate d = prefixSS "på" d ;
|
||||
AdvTime t = prefixSS "klockan" t ;
|
||||
NWeekday w = w ;
|
||||
PNWeekday w = nounPN w ;
|
||||
|
||||
PNCountry x = x ;
|
||||
ANationality x = x ;
|
||||
NLanguage x = x ;
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete SimpleSwe of Simple = CategoriesSwe ** SimpleI with
|
||||
(Categories = CategoriesSwe),
|
||||
(Rules = RulesSwe),
|
||||
(Structural = StructuralSwe),
|
||||
(Verbphrase = VerbphraseSwe)
|
||||
;
|
||||
@@ -1,215 +1,124 @@
|
||||
--# -path=.:../abstract:../scandinavian:../../prelude
|
||||
concrete StructuralSwe of Structural = CatSwe **
|
||||
open MorphoSwe, ParadigmsSwe, Prelude in {
|
||||
|
||||
--1 The Top-Level Swedish Resource Grammar: Structural Words
|
||||
--
|
||||
-- Aarne Ranta 2002 -- 2004
|
||||
--
|
||||
concrete StructuralSwe of Structural =
|
||||
CategoriesSwe, NumeralsSwe **
|
||||
open Prelude, MorphoSwe, SyntaxSwe in {
|
||||
|
||||
flags optimize=values ;
|
||||
|
||||
lin
|
||||
|
||||
UseNumeral i = {s = \\g => table {Nom => i.s ! g ; Gen => i.s ! g ++
|
||||
"s"} ; n = i.n} ; ---
|
||||
flags optimize=all ;
|
||||
|
||||
lin
|
||||
above_Prep = ss "ovanför" ;
|
||||
after_Prep = ss "efter" ;
|
||||
by8agent_Prep = ss "av" ;
|
||||
all8mass_Det = mkDeterminerSgGender2 "all" "allt" IndefP ;
|
||||
all_NDet = mkDeterminerPlNum "alla" IndefP ;
|
||||
almost_Adv = ss "nästan" ;
|
||||
all_Predet = {s = gennumForms "all" "allt" "alla"} ;
|
||||
almost_AdA, almost_AdN = ss "nästan" ;
|
||||
although_Subj = ss "fast" ;
|
||||
always_AdV = ss "alltid" ;
|
||||
and_Conj = ss "och" ** {n = Pl} ;
|
||||
because_Subj = ss "eftersom" ;
|
||||
before_Prep = ss "före" ;
|
||||
behind_Prep = ss "bakom" ;
|
||||
between_Prep = ss "mellan" ;
|
||||
both_AndConjD = sd2 "både" "och" ** {n = Pl} ;
|
||||
both7and_DConj = sd2 "både" "och" ** {n = Pl} ;
|
||||
but_PConj = ss "men" ;
|
||||
by8means_Prep = ss "med" ;
|
||||
can8know_VV = mkVerb "kunna" "kan" "kunn" "kunde" "kunnat" "kunnen"
|
||||
** {isAux = True} ;
|
||||
can_VV = mkVerb "kunna" "kan" "kunn" "kunde" "kunnat" "kunnen"
|
||||
** {isAux = True} ;
|
||||
can8know_VV, can_VV =
|
||||
mkV "kunna" "kan" "kunn" "kunde" "kunnat" "kunnen" **
|
||||
{c2 = [] ; lock_VV = <>} ;
|
||||
during_Prep = ss "under" ;
|
||||
either8or_ConjD = sd2 "antingen" "eller" ** {n = Sg} ;
|
||||
everybody_NP = let alla = table {Nom => "alla" ; Gen => "allas"} in
|
||||
{s = \\c => alla ! npCase c ; g = Utr ; n = Pl ; p = P3} ;
|
||||
every_Det = varjeDet ;
|
||||
everything_NP = nameNounPhrase (mkProperName "allting" NNeutr) ;
|
||||
everywhere_Adv = advPost "varstans" ;
|
||||
either7or_DConj = sd2 "antingen" "eller" ** {n = Sg} ;
|
||||
everybody_NP = regNP "alla" "allas" Plg ;
|
||||
every_Det = {s = \\_,_ => "varje" ; n = Sg ; det = DDef Indef} ;
|
||||
everything_NP = regNP "allting" "alltings" SgNeutr ;
|
||||
everywhere_Adv = ss "överallt" ;
|
||||
few_Det = {s = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
||||
first_Ord = {s = "första" ; isDet = True} ;
|
||||
from_Prep = ss "från" ;
|
||||
he_NP = pronNounPhrase han_34 ;
|
||||
he_Pron = MorphoSwe.mkNP "han" "honom" "hans" "hans" "hans" SgUtr P3 ;
|
||||
here_Adv = ss "här" ;
|
||||
here7to_Adv = ss "hit" ;
|
||||
here7from_Adv = ss "härifrån" ;
|
||||
how_IAdv = ss "hur" ;
|
||||
how8many_IDet = mkDeterminerPl ["hur många"] IndefP ;
|
||||
how8many_IDet = {s = \\_ => ["hur många"] ; n = Pl ; det = DDef Indef} ;
|
||||
if_Subj = ss "om" ;
|
||||
in8front_Prep = ss "framför" ;
|
||||
i_NP = pronNounPhrase jag_32 ;
|
||||
i_Pron = MorphoSwe.mkNP "jag" "mig" "min" "mitt" "mina" SgUtr P1 ;
|
||||
in_Prep = ss "i" ;
|
||||
it_NP = pronNounPhrase det_40 ; ----
|
||||
|
||||
many_Det = mkDeterminerPl "många" IndefP ;
|
||||
most_Det = mkDeterminerSgGender2 ["den mesta"] ["det mesta"] (DefP Def) ;
|
||||
most8many_Det = flestaDet ;
|
||||
much_Det = mkDeterminerSg (detSgInvar "mycket") IndefP ;
|
||||
must_VV = mkVerb "få" "måste" "få" "fick" "måst" "måst" ** {isAux = True} ;
|
||||
no_Phr = ss ["Nej ."] ;
|
||||
it_Pron = MorphoSwe.regNP "det" "dess" SgNeutr ;
|
||||
less_CAdv = ss "mindre" ;
|
||||
many_Det = {s = \\_,_ => "många" ; n = Pl ; det = DDef Indef} ;
|
||||
more_CAdv = ss "mer" ;
|
||||
most_Predet = {s = gennumForms ["den mesta"] ["det mesta"] ["de flesta"]} ;
|
||||
much_Det = {s = \\_,_ => "mycket" ; n = Pl ; det = DDef Indef} ;
|
||||
must_VV =
|
||||
mkV "få" "måste" "få" "fick" "måst" "måst" ** {c2 = [] ; lock_VV = <>} ;
|
||||
no_Phr = ss ["nej"] ;
|
||||
on_Prep = ss "på" ;
|
||||
one_Quant = {s = \\_ => genderForms ["en"] ["ett"] ; n = Sg ; det = DIndef} ;
|
||||
only_Predet = {s = \\_ => "bara"} ;
|
||||
or_Conj = ss "eller" ** {n = Sg} ;
|
||||
otherwise_Adv = ss "annars" ;
|
||||
otherwise_PConj = ss "annars" ;
|
||||
part_Prep = ss "av" ;
|
||||
please_Voc = ss "tack" ; ---
|
||||
possess_Prep = ss "av" ;
|
||||
quite_Adv = ss "ganska" ;
|
||||
she_NP = pronNounPhrase hon_35 ;
|
||||
so_Adv = ss "så" ;
|
||||
somebody_NP = nameNounPhrase (mkProperName "någon" (NUtr Masc)) ;
|
||||
some_Det = mkDeterminerSgGender2 "någon" "något" IndefP ;
|
||||
some_NDet = mkDeterminerPlNum "några" IndefP ;
|
||||
something_NP = nameNounPhrase (mkProperName "någonting" NNeutr) ;
|
||||
somewhere_Adv = advPost "någonstans" ;
|
||||
that_Det = mkDeterminerSgGender2 ["den där"] ["det där"] (DefP Def) ;
|
||||
that_NP = regNameNounPhrase ["det där"] NNeutr ;
|
||||
therefore_Adv = ss "därför" ;
|
||||
these_NDet = mkDeterminerPlNum ["de här"] (DefP Def) ;
|
||||
they8fem_NP = pronNounPhrase de_38 ;
|
||||
they_NP = pronNounPhrase de_38 ;
|
||||
this_Det = mkDeterminerSgGender2 ["den här"] ["det här"] (DefP Def) ;
|
||||
this_NP = regNameNounPhrase ["det här"] NNeutr ;
|
||||
those_NDet = mkDeterminerPlNum ["de där"] (DefP Def) ;
|
||||
thou_NP = pronNounPhrase du_33 ;
|
||||
she_Pron = MorphoSwe.mkNP "hon" "henne" "hennes" "hennes" "hennes" SgUtr P3 ;
|
||||
so_AdA = ss "så" ;
|
||||
someSg_Det = {s = \\_ => genderForms "någon" "något" ; n = Sg ; det = DIndef} ;
|
||||
somePl_Det = {s = \\_,_ => "några" ; n = Pl ; det = DIndef} ;
|
||||
somebody_NP = regNP "någon" "någons" SgUtr ;
|
||||
something_NP = regNP "något" "någots" SgNeutr ;
|
||||
somewhere_Adv = ss "någonstans" ;
|
||||
that_Quant =
|
||||
{s = table {
|
||||
Sg => \\_ => genderForms ["den där"] ["det där"] ;
|
||||
Pl => \\_,_ => ["de där"]
|
||||
} ;
|
||||
det = DDef Def
|
||||
} ;
|
||||
that_NP = regNP ["det där"] ["det därs"] SgNeutr ;
|
||||
there_Adv = ss "där" ;
|
||||
there7to_Adv = ss "dit" ;
|
||||
there7from_Adv = ss "därifrån" ;
|
||||
therefore_PConj = ss "därför" ;
|
||||
these_NP = regNP ["de här"] ["det härs"] Plg ;
|
||||
they_Pron = MorphoSwe.mkNP "de" "dem" "deras" "deras" "deras" Plg P1 ;
|
||||
this_Quant =
|
||||
{s = table {
|
||||
Sg => \\_ => genderForms ["den här"] ["det här"] ;
|
||||
Pl => \\_,_ => ["de här"]
|
||||
} ;
|
||||
det = DDef Def
|
||||
} ;
|
||||
this_NP = regNP ["det här"] ["det härs"] SgNeutr ;
|
||||
those_NP = regNP ["de där"] ["det därs"] Plg ;
|
||||
through_Prep = ss "genom" ;
|
||||
too_Adv = ss "för" ;
|
||||
too_AdA = ss "för" ;
|
||||
to_Prep = ss "till" ;
|
||||
under_Prep = ss "under" ;
|
||||
very_Adv = ss "mycket" ;
|
||||
want_VV = mkVerb "vilja" "vill" "vilj" "ville" "velat" "velad" ** {isAux = True} ;
|
||||
we_NP = pronNounPhrase (vi_36) ;
|
||||
what8many_IP = intPronWhat plural ;
|
||||
what8one_IP = intPronWhat singular ;
|
||||
very_AdA = ss "mycket" ;
|
||||
want_VV =
|
||||
mkV "vilja" "vill" "vilj" "ville" "velat" "velad" **
|
||||
{c2 = [] ; lock_VV = <>} ;
|
||||
we_Pron = MorphoSwe.mkNP "vi" "oss" "vår" "vårt" "våra" Plg P1 ;
|
||||
whatSg_IP = {s = \\_ => "vad" ; gn = SgUtr} ; ---- infl
|
||||
whatPl_IP = {s = \\_ => "vad" ; gn = Plg} ; ---- infl
|
||||
when_IAdv = ss "när" ;
|
||||
when_Subj = ss "när" ;
|
||||
where_IAdv = ss "var" ;
|
||||
which8one_IDet = vilkenDet ;
|
||||
which8many_IDet = mkDeterminerPl "vilka" IndefP ;
|
||||
who8many_IP = intPronWho plural ;
|
||||
who8one_IP = intPronWho singular ;
|
||||
whichPl_IDet = {s = \\_ => "vilka" ; n = Pl ; det = DIndef} ;
|
||||
whichSg_IDet = {s = genderForms "vilken" "vilket" ; n = Sg ; det = DIndef} ;
|
||||
whoSg_IP = {s = vem.s ; gn = SgUtr} ;
|
||||
whoPl_IP = {s = \\_ => "vilka" ; gn = Plg} ;
|
||||
why_IAdv = ss "varför" ;
|
||||
without_Prep = ss "utan" ;
|
||||
with_Prep = ss "med" ;
|
||||
ye_NP = pronNounPhrase (ni_37) ;
|
||||
yes_Phr = ss ["Ja ."] ;
|
||||
you_NP = let {ni = pronNounPhrase ni_37 } in {
|
||||
s = ni.s ; g = ni.g ; n = Sg ; p = P2} ; ---- gives wrong refl
|
||||
yes_Phr = ss ["ja"] ;
|
||||
youSg_Pron = MorphoSwe.mkNP "du" "dig" "din" "ditt" "dina" SgUtr P2 ;
|
||||
youPl_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" Plg P2 ;
|
||||
youPol_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" SgUtr P2 ; --- wrong in refl
|
||||
|
||||
-- Auxiliaries that are used repeatedly.
|
||||
|
||||
|
||||
{-
|
||||
INP = pronNounPhrase jag_32 ;
|
||||
ThouNP = pronNounPhrase du_33 ;
|
||||
HeNP = pronNounPhrase han_34 ;
|
||||
SheNP = pronNounPhrase hon_35 ;
|
||||
WeNP n = pronNounPhrase (vi_36 n) ;
|
||||
YeNP n = pronNounPhrase (ni_37 n) ;
|
||||
TheyNP = pronNounPhrase de_38 ;
|
||||
TheyFemNP = pronNounPhrase de_38 ;
|
||||
|
||||
YouNP = let {ni = pronNounPhrase ni_37 } in {
|
||||
s = ni.s ; g = ni.g ; n = Sg ; p = P2} ; ---- gives wrong refl
|
||||
|
||||
ItNP = pronNounPhrase det_40 ; ----
|
||||
ThisNP = regNameNounPhrase ["det här"] NNeutr ;
|
||||
ThatNP = regNameNounPhrase ["det där"] NNeutr ;
|
||||
|
||||
EveryDet = varjeDet ;
|
||||
AllMassDet = mkDeterminerSgGender2 "all" "allt" IndefP ;
|
||||
AllNumDet = mkDeterminerPlNum "alla" IndefP ;
|
||||
AnyDet = mkDeterminerSgGender2 "någon" "något" IndefP ;
|
||||
AnyNumDet = mkDeterminerPlNum "några" IndefP ;
|
||||
SomeDet = mkDeterminerSgGender2 "någon" "något" IndefP ;
|
||||
SomeNumDet = mkDeterminerPlNum "några" IndefP ;
|
||||
ManyDet = mkDeterminerPl "många" IndefP ;
|
||||
HowManyDet = mkDeterminerPl ["hur många"] IndefP ;
|
||||
NoDet = mkDeterminerSgGender2 "ingen" "inget" IndefP ;
|
||||
NoNumDet = mkDeterminerPlNum "inga" IndefP ;
|
||||
WhichNumDet = mkDeterminerPlNum "vilka" IndefP ;
|
||||
|
||||
UseNumeral i = {s = table {Nom => i.s ; Gen => i.s ++ "s"}} ; ---
|
||||
|
||||
WhichDet = vilkenDet ;
|
||||
MostDet = mkDeterminerSgGender2 ["den mesta"] ["det mesta"] (DefP Def) ;
|
||||
MostsDet = flestaDet ;
|
||||
MuchDet = mkDeterminerSg (detSgInvar "mycket") IndefP ;
|
||||
|
||||
ThisDet = mkDeterminerSgGender2 ["den här"] ["det här"] (DefP Def) ;
|
||||
ThatDet = mkDeterminerSgGender2 ["den där"] ["det där"] (DefP Def) ;
|
||||
TheseNumDet = mkDeterminerPlNum ["de här"] (DefP Def) ;
|
||||
ThoseNumDet = mkDeterminerPlNum ["de där"] (DefP Def) ;
|
||||
|
||||
HowIAdv = ss "hur" ;
|
||||
WhenIAdv = ss "när" ;
|
||||
WhereIAdv = ss "var" ;
|
||||
WhyIAdv = ss "varför" ;
|
||||
|
||||
AndConj = ss "och" ** {n = Pl} ;
|
||||
OrConj = ss "eller" ** {n = Sg} ;
|
||||
BothAnd = sd2 "både" "och" ** {n = Pl} ;
|
||||
EitherOr = sd2 "antingen" "eller" ** {n = Sg} ;
|
||||
NeitherNor = sd2 "varken" "eller" ** {n = Sg} ;
|
||||
IfSubj = ss "om" ;
|
||||
WhenSubj = ss "när" ;
|
||||
|
||||
YesPhr = ss ["Ja ."] ;
|
||||
NoPhr = ss ["Nej ."] ;
|
||||
|
||||
VeryAdv = ss "mycket" ;
|
||||
TooAdv = ss "för" ;
|
||||
SoAdv = ss "så" ;
|
||||
OtherwiseAdv = ss "annars" ;
|
||||
ThereforeAdv = ss "därför" ;
|
||||
|
||||
EverybodyNP = let alla = table {Nom => "alla" ; Gen => "allas"} in {s = \\c => alla ! npCase c ; g = Utr ; n = Pl ; p = P3} ;
|
||||
SomebodyNP = nameNounPhrase (mkProperName "någon" (NUtr Masc)) ;
|
||||
NobodyNP = nameNounPhrase (mkProperName "ingen" (NUtr Masc)) ;
|
||||
EverythingNP = nameNounPhrase (mkProperName "allting" NNeutr) ;
|
||||
SomethingNP = nameNounPhrase (mkProperName "någonting" NNeutr) ;
|
||||
NothingNP = nameNounPhrase (mkProperName "ingenting" NNeutr) ;
|
||||
|
||||
CanVV = mkVerb "kunna" "kan" "kunn" "kunde" "kunnat" "kunnen" ** {s3 = []} ;
|
||||
CanKnowVV = mkVerb "kunna" "kan" "kunn" "kunde" "kunnat" "kunnen" ** {s3 = []} ;
|
||||
MustVV = mkVerb "få" "måste" "få" "fick" "måst" "måst" ** {s3 = []} ;
|
||||
WantVV = mkVerb "vilja" "vill" "vilj" "ville" "velat" "velad" ** {s3 = []} ;
|
||||
|
||||
EverywhereNP = advPost "varstans" ;
|
||||
SomewhereNP = advPost "någonstans" ;
|
||||
NowhereNP = advPost "ingenstans" ;
|
||||
|
||||
AlthoughSubj = ss "fast" ;
|
||||
|
||||
AlmostAdv = ss "nästan" ;
|
||||
QuiteAdv = ss "ganska" ;
|
||||
|
||||
InPrep = ss "i" ;
|
||||
OnPrep = ss "på" ;
|
||||
ToPrep = ss "till" ;
|
||||
ThroughPrep = ss "genom" ;
|
||||
AbovePrep = ss "ovanför" ;
|
||||
UnderPrep = ss "under" ;
|
||||
InFrontPrep = ss "framför" ;
|
||||
BehindPrep = ss "bakom" ;
|
||||
BetweenPrep = ss "mellan" ;
|
||||
FromPrep = ss "från" ;
|
||||
BeforePrep = ss "före" ;
|
||||
DuringPrep = ss "under" ;
|
||||
AfterPrep = ss "efter" ;
|
||||
WithPrep = ss "med" ;
|
||||
WithoutPrep = ss "utan" ;
|
||||
ByMeansPrep = ss "med" ;
|
||||
PossessPrep = ss "av" ;
|
||||
PartPrep = ss "av" ;
|
||||
AgentPrep = ss "av" ;
|
||||
-}
|
||||
|
||||
oper
|
||||
vem = MorphoSwe.mkNP "vem" "vem" "vems" "vems" "vems" SgUtr P3 ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,250 +0,0 @@
|
||||
--# -path=.:../abstract:../scandinavian:../../prelude
|
||||
|
||||
concrete SwadeshLexSwe of SwadeshLex = CategoriesSwe
|
||||
** open ResourceSwe, SyntaxSwe, ParadigmsSwe, VerbsSwe,
|
||||
BasicSwe, 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 = mkDeterminerPl "få" IndefP ;
|
||||
other_Det = mkDeterminerPl "andra" IndefP ;
|
||||
|
||||
|
||||
-- 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 = ss "vid" ;
|
||||
in_Prep = ss "i" ;
|
||||
with_Prep = ss "med" ;
|
||||
|
||||
-- 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 "riktig" ;
|
||||
dirty_ADeg = dirty_ADeg ;
|
||||
dry_ADeg = regADeg "torr" ;
|
||||
dull_ADeg = mk2ADeg "slö" "slött";
|
||||
far_ADeg = regADeg "avlägsen" ;
|
||||
full_ADeg = regADeg "full" ;
|
||||
good_ADeg = good_ADeg ;
|
||||
green_ADeg = green_ADeg ;
|
||||
heavy_ADeg = irregADeg "tung" "tyngre" "tyngst" ;
|
||||
left_A = mkA "vänstra" "vänstra" "vänstra" ;
|
||||
long_ADeg = long_ADeg ;
|
||||
narrow_ADeg = narrow_ADeg ;
|
||||
near_ADeg = mkADeg "nära" "nära" "nära" "nära"
|
||||
"närmare" "närmast" "närmaste" ;
|
||||
new_ADeg = new_ADeg ;
|
||||
old_ADeg = old_ADeg ;
|
||||
red_ADeg = red_ADeg ;
|
||||
right_A = mkA "högra" "högra" "högra" ;
|
||||
rotten_ADeg = mk3ADeg "rutten" "ruttet" "ruttna" ;
|
||||
round_ADeg = regADeg "rund" ;
|
||||
sharp_ADeg = regADeg "vass" ;
|
||||
short_ADeg = short_ADeg ;
|
||||
small_ADeg = small_ADeg ;
|
||||
smooth_ADeg = regADeg "slät" ;
|
||||
straight_ADeg = regADeg "rak" ;
|
||||
thick_ADeg = thick_ADeg ;
|
||||
thin_ADeg = thin_ADeg ;
|
||||
warm_ADeg = warm_ADeg ;
|
||||
wet_ADeg = regADeg "våt" ;
|
||||
white_ADeg = white_ADeg ;
|
||||
wide_ADeg = mk2ADeg "bred" "brett" ;
|
||||
yellow_ADeg = yellow_ADeg ;
|
||||
|
||||
|
||||
-- Nouns
|
||||
|
||||
animal_N = mk2N "djur" "djur" ;
|
||||
ashes_N = mk2N "aska" "askor" ;
|
||||
back_N = mk2N "rygg" "ryggar" ;
|
||||
bark_N = mk2N "bark" "barkar" ;
|
||||
belly_N = mk2N "mage" "magar" ;
|
||||
bird_N = bird_N ;
|
||||
blood_N = mk2N "blod" "blod" ;
|
||||
bone_N = mk2N "ben" "ben" ;
|
||||
breast_N = mk2N "bröst" "bröst" ;
|
||||
child_N = child_N ;
|
||||
cloud_N = mk2N "moln" "moln" ;
|
||||
day_N = mk2N "dag" "dagar" ;
|
||||
dog_N = dog_N ;
|
||||
dust_N = mk2N "damm" "damm" ;
|
||||
ear_N = mkN "öra" "örat" "öron" "öronen" ;
|
||||
earth_N = mk2N "jord" "jordar" ;
|
||||
egg_N = mk2N "ägg" "ägg" ;
|
||||
eye_N = mkN "öga" "ögat" "ögon" "ögonen" ;
|
||||
fat_N = mk2N "fett" "fett" ;
|
||||
father_N = mascN (mkN "far" "fadern" "fäder" "fäderna") ;
|
||||
-- father_N = UseN2 father_N2 ;
|
||||
feather_N = mk2N "fjäder" "fjädrar" ;
|
||||
fingernail_N = mkN "nagel" "nageln" "naglar" "naglarna";
|
||||
fire_N = mk2N "eld" "eldar" ;
|
||||
fish_N = fish_N ;
|
||||
flower_N = mk2N "blomma" "blommor" ;
|
||||
fog_N = mk2N "dimma" "dimmor" ;
|
||||
foot_N = mk2N "fot" "fötter" ;
|
||||
forest_N = mk2N "skog" "skogar" ;
|
||||
fruit_N = fruit_N ;
|
||||
grass_N = mk2N "gräs" "gräs" ;
|
||||
guts_N = mk2N "inälva" "inälvor" ;
|
||||
hair_N = mk2N "hår" "hår" ;
|
||||
hand_N = mk2N "hand" "händer" ;
|
||||
head_N = mkN "huvud" "huvudet" "huvuden" "huvudena" ;
|
||||
heart_N = mkN "hjärta" "hjärtat" "hjärtan" "hjärtana" ;
|
||||
horn_N = mk2N "horn" "horn" ;
|
||||
husband_N = mascN (mk2N "make" "makar") ;
|
||||
ice_N = mk2N "is" "isar" ;
|
||||
knee_N = mkN "knä" "knäet" "knän" "knäna" ;
|
||||
lake_N = lake_N ;
|
||||
leaf_N = mk2N "löv" "löv" ;
|
||||
leg_N = mk2N "ben" "ben" ;
|
||||
liver_N = mkN "lever" "levern" "levrar" "levrarna";
|
||||
louse_N = mkN "lus" "lusen" "löss" "lössen" ;
|
||||
man_N = man_N ;
|
||||
meat_N = meat_N ;
|
||||
moon_N = moon_N ;
|
||||
mother_N = mkN "mor" "modern" "mödrar" "mödrarna" ;
|
||||
-- mother_N = UseN2 mother_N2 ;
|
||||
mountain_N = mountain_N ;
|
||||
mouth_N = mk2N "mun" "munnar" ;
|
||||
name_N = mk2N "namn" "namn" ;
|
||||
neck_N = mk2N "nacke" "nackar" ;
|
||||
night_N = mk2N "natt" "nätter" ;
|
||||
nose_N = mk2N "näsa" "näsor" ;
|
||||
person_N = mk2N "person" "personer" ;
|
||||
rain_N = mk2N "regn" "regn" ;
|
||||
river_N = river_N ;
|
||||
road_N = mk2N "väg" "vägar" ;
|
||||
root_N = mk2N "rot" "rötter" ;
|
||||
rope_N = mk2N "rep" "rep" ;
|
||||
salt_N = mk2N "salt" "salter" ;
|
||||
sand_N = mk2N "sand" "sander" ;
|
||||
sea_N = sea_N ;
|
||||
seed_N = mkN "frö" "fröet" "frön" "fröna" ;
|
||||
skin_N = mk2N "skinn" "skinn" ;
|
||||
sky_N = mk2N "himmel" "himlar" ;
|
||||
smoke_N = mk2N "rök" "rökar" ;
|
||||
snake_N = snake_N ;
|
||||
snow_N = mkN "snö" "snön" "snöer" "snöerna" ;
|
||||
star_N = star_N ;
|
||||
stick_N = mk2N "pinne" "pinnar" ;
|
||||
stone_N = stone_N ;
|
||||
sun_N = sun_N ;
|
||||
tail_N = mk2N "svans" "svansar" ;
|
||||
tongue_N = mk2N "tunga" "tungor" ;
|
||||
tooth_N = mk2N "tand" "tänder" ;
|
||||
tree_N = tree_N ;
|
||||
water_N = water_N ;
|
||||
wife_N = mk2N "fru" "fruar" ;
|
||||
wind_N = mk2N "vind" "vindar" ;
|
||||
wing_N = mk2N "vinge" "vingar" ;
|
||||
woman_N = woman_N ;
|
||||
worm_N = mk2N "mask" "maskar" ;
|
||||
year_N = mk2N "år" "år" ;
|
||||
|
||||
-- Verbs
|
||||
|
||||
bite_V = bita_V ;
|
||||
blow_V = mk2V "blåsa" "blåste" ;
|
||||
breathe_V = depV (regV "anda") ;
|
||||
burn_V = brinna_V ; -- FIXME: bränna?
|
||||
come_V = komma_V ;
|
||||
count_V = regV "räkna" ;
|
||||
cut_V = skära_V ;
|
||||
die_V = dö_V ;
|
||||
dig_V = mk2V "gräva" "grävde" ;
|
||||
drink_V = dricka_V ;
|
||||
eat_V = äta_V ;
|
||||
fall_V = falla_V ;
|
||||
fear_V = regV "frukta" ;
|
||||
-- FIXME: passive forms are very strange
|
||||
fight_V = mkV "slåss" "slåss" "slåss" "slogs" "slagits" "slagen" ;
|
||||
float_V = flyta_V ;
|
||||
flow_V = rinna_V ;
|
||||
fly_V = flyga_V ;
|
||||
freeze_V = frysa_V ;
|
||||
give_V = giva_V ;
|
||||
hear_V = mk2V "höra" "hörde" ;
|
||||
hit_V = slå_V;
|
||||
hold_V = hålla_V ;
|
||||
hunt_V = regV "jaga" ;
|
||||
kill_V = regV "döda" ;
|
||||
know_V = veta_V ;
|
||||
laugh_V = regV "skratta" ;
|
||||
lie_V = ligga_V ;
|
||||
live_V = leva_V ;
|
||||
play_V = mk2V "leka" "lekte" ;
|
||||
pull_V = draga_V ;
|
||||
push_V = mk2V "trycka" "tryckte" ;
|
||||
rub_V = gnida_V ;
|
||||
say_V = säga_V ;
|
||||
scratch_V = regV "klia" ;
|
||||
see_V = se_V ;
|
||||
sew_V = sy_V ;
|
||||
sing_V = sjunga_V ;
|
||||
sit_V = sitta_V ;
|
||||
sleep_V = sova_V ;
|
||||
smell_V = regV "lukta" ;
|
||||
spit_V = regV "spotta" ;
|
||||
split_V = klyva_V ;
|
||||
squeeze_V = klämma_V ;
|
||||
stab_V = sticka_V ;
|
||||
stand_V = stå_V ;
|
||||
suck_V = suga_V ;
|
||||
swell_V = svälla_V ;
|
||||
swim_V = regV "simma" ;
|
||||
think_V = mk2V "tänka" "tänkte" ;
|
||||
throw_V = regV "kasta" ;
|
||||
tie_V = knyta_V ;
|
||||
turn_V = vända_V ;
|
||||
vomit_V = mk2V "spy" "spydde" ;
|
||||
walk_V = gå_V ;
|
||||
wash_V = regV "tvätta" ;
|
||||
wipe_V = regV "torka" ;
|
||||
|
||||
}
|
||||
7
lib/resource/swedish/Swedish.gf
Normal file
7
lib/resource/swedish/Swedish.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
--# -path=.:../scandinavian:../abstract:../common:prelude
|
||||
|
||||
concrete Swedish of SwedishAbs =
|
||||
LangSwe,
|
||||
IrregSwe,
|
||||
ExtraSwe
|
||||
** {} ;
|
||||
5
lib/resource/swedish/SwedishAbs.gf
Normal file
5
lib/resource/swedish/SwedishAbs.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
abstract SwedishAbs =
|
||||
Lang,
|
||||
IrregSweAbs,
|
||||
ExtraSweAbs
|
||||
** {} ;
|
||||
@@ -1,138 +0,0 @@
|
||||
--# -path=.:../scandinavian:../../prelude
|
||||
|
||||
--1 A Small Swedish Resource Syntax
|
||||
--
|
||||
-- Aarne Ranta 2002 - 2005
|
||||
--
|
||||
instance SyntaxSwe of SyntaxScand = TypesSwe **
|
||||
open Prelude, (CO = Coordination), MorphoSwe in {
|
||||
|
||||
flags optimize=parametrize ;
|
||||
|
||||
oper
|
||||
|
||||
npDet : NounPhrase = nameNounPhrase (mkProperName "det" NNeutr) ;
|
||||
|
||||
mkAdjForm : Species -> Number -> NounGender -> AdjFormPos = \b,n,g ->
|
||||
case <b,n> of {
|
||||
<Indef,Sg> => Strong (ASg (genNoun g)) ;
|
||||
<Indef,Pl> => Strong APl ;
|
||||
<Def, Sg> => Weak (AxSg (sexNoun g)) ;
|
||||
<Def, Pl> => Weak AxPl
|
||||
} ;
|
||||
|
||||
verbVara = vara_1200 ** {s1 = []} ;
|
||||
verbHava = hava_1198 ** {s1 = []};
|
||||
|
||||
verbFinnas : Verb = deponentVerb (vFinna "finn" "fann" "funn" ** {s1 = []}) ;
|
||||
|
||||
relPronForms : RelCase => GenNum => Str = table {
|
||||
RNom => \\_ => "som" ;
|
||||
RAcc => \\_ => variants {"som" ; []} ;
|
||||
RGen => \\_ => "vars" ;
|
||||
RPrep => pronVilken
|
||||
} ;
|
||||
|
||||
pronVilken = table {
|
||||
ASg Utr => "vilken" ;
|
||||
ASg Neutr => "vilket" ;
|
||||
APl => "vilka"
|
||||
} ;
|
||||
|
||||
pronSådan = table {
|
||||
ASg Utr => "sådan" ;
|
||||
ASg Neutr => "sådant" ;
|
||||
APl => "sådana"
|
||||
} ;
|
||||
|
||||
pronNågon = table {
|
||||
ASg Utr => "någon" ;
|
||||
ASg Neutr => "något" ;
|
||||
APl => "några"
|
||||
} ;
|
||||
|
||||
specDefPhrase : Bool -> Species = \b ->
|
||||
Def ;
|
||||
|
||||
superlSpecies = Def ;
|
||||
|
||||
artIndef = table {Utr => "en" ; Neutr => "ett"} ;
|
||||
|
||||
artDef : Bool => GenNum => Str = table {
|
||||
True => table {
|
||||
ASg Utr => "den" ;
|
||||
ASg Neutr => "det" ; -- det gamla huset
|
||||
APl => variants {"de" ; "dom"}
|
||||
} ;
|
||||
False => table {_ => []} -- huset
|
||||
} ;
|
||||
|
||||
auxHar = "har" ;
|
||||
auxHade = "hade" ;
|
||||
auxHa = "ha" ;
|
||||
auxSka = "ska" ;
|
||||
auxSkulle = "skulle" ;
|
||||
|
||||
infinAtt,subordAtt = "att" ;
|
||||
|
||||
varjeDet : Determiner = mkDeterminerSg (detSgInvar "varje") IndefP ;
|
||||
allaDet : Determiner = mkDeterminerPl "alla" IndefP ;
|
||||
flestaDet : Determiner = mkDeterminerPl ["de flesta"] IndefP ;
|
||||
|
||||
prepÄn = "än" ;
|
||||
negInte = "inte" ;
|
||||
|
||||
conjOm = "om" ;
|
||||
|
||||
pronVars = "vars" ;
|
||||
pronVem = "vem" ;
|
||||
pronVems = "vems" ;
|
||||
pronVad = "vad" ;
|
||||
|
||||
--- added with Nor
|
||||
|
||||
conjGender : Gender -> Gender -> Gender = \m,n ->
|
||||
case <m,n> of {
|
||||
<Utr,Utr> => Utr ;
|
||||
_ => Neutr
|
||||
} ;
|
||||
|
||||
mkDeterminerSgGender3 : Str -> Str -> Str -> SpeciesP -> Determiner = \en,_,ett ->
|
||||
mkDeterminerSgGender (table {Utr => en ; Neutr => ett}) ;
|
||||
|
||||
-- next
|
||||
|
||||
reflPron : Number -> Person -> Str = \n,p -> case <n,p> of {
|
||||
<Sg,P1> => "mig" ;
|
||||
<Sg,P2> => "dig" ;
|
||||
<Pl,P1> => "oss" ;
|
||||
<Pl,P2> => "er" ;
|
||||
_ => "sig"
|
||||
} ;
|
||||
|
||||
progressiveVerbPhrase : VerbPhrase -> VerbGroup =
|
||||
complVerbVerb
|
||||
(mkVerbPart "hålla" "håller" "håll" "höll" "hållit" "hållen" "på" **
|
||||
{isAux = False}) ;
|
||||
|
||||
progressiveClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
||||
predVerbGroupClause np
|
||||
(complVerbVerb
|
||||
(mkVerbPart "hålla" "håller" "håll" "höll" "hållit" "hållen" "på" **
|
||||
{isAux = False}) ---- ;{s3 = ["på att"]})
|
||||
vp) ;
|
||||
|
||||
strPrep : ComplPrep -> Str = \p -> case p of {
|
||||
CPnoPrep => [] ;
|
||||
CPav => "av" ;
|
||||
---- CPmed => "med" ;
|
||||
CPför => "för" ;
|
||||
CPi => "i" ;
|
||||
CPom => "om" ;
|
||||
CPpå => "på" ;
|
||||
CPtill => "till"
|
||||
} ;
|
||||
|
||||
conjEt = "och" ;
|
||||
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
concrete TimeSwe of Time = NumeralsSwe **
|
||||
open Prelude, MorphoSwe, CategoriesSwe, ParadigmsSwe in {
|
||||
|
||||
lincat
|
||||
Date = SS ;
|
||||
Weekday = N ;
|
||||
Hour = SS ;
|
||||
Minute = SS ;
|
||||
Time = SS ;
|
||||
|
||||
lin
|
||||
DayDate day = ss (day.s ! singular ! Indef ! nominative) ;
|
||||
DayTimeDate day time = ss (day.s ! singular ! Indef ! nominative ++ "klockan" ++ time.s) ;
|
||||
|
||||
FormalTime = infixSS "och" ;
|
||||
PastTime h m = ss (m.s ++ variants { "" ; "minuter" } ++ "över" ++ h.s) ;
|
||||
ToTime h m = ss (m.s ++ variants { "" ; "minuter" } ++ "i" ++ h.s) ;
|
||||
ExactTime h = ss (h.s ++ "prick") ;
|
||||
|
||||
NumHour n = {s = n.s ! Neutr} ;
|
||||
NumMinute n = {s = n.s ! Neutr} ;
|
||||
|
||||
monday = regN "måndag" utrum ;
|
||||
tuesday = regN "tisdag" utrum ;
|
||||
wednesday = regN "onsdag" utrum ;
|
||||
thursday = regN "torsdag" utrum ;
|
||||
friday = regN "fredag" utrum ;
|
||||
saturday = regN "lördag" utrum ;
|
||||
sunday = regN "söndag" utrum ;
|
||||
|
||||
|
||||
|
||||
|
||||
} ;
|
||||
@@ -1,26 +0,0 @@
|
||||
--1 Swedish Word Classes and Morphological Parameters
|
||||
--
|
||||
-- This is a resource module for Swedish morphology, defining the
|
||||
-- morphological parameters and word classes of Italian.
|
||||
-- The morphology is so far only
|
||||
-- complete w.r.t. the syntax part of the resource grammar.
|
||||
-- It does not include those parameters that are not needed for
|
||||
-- analysing individual words: such parameters are defined in syntax modules.
|
||||
|
||||
instance TypesSwe of TypesScand = {
|
||||
|
||||
param
|
||||
Gender = Utr | Neutr ;
|
||||
NounGender = NUtr Sex | NNeutr ;
|
||||
|
||||
oper
|
||||
genNoun = \s -> case s of {NUtr _ => Utr ; NNeutr => Neutr} ;
|
||||
sexNoun = \s -> case s of {NUtr x => x ; NNeutr => NoMasc} ;
|
||||
gen2nounGen = \s -> case s of {Utr => NUtr NoMasc ; Neutr => NNeutr} ;
|
||||
|
||||
utrum = Utr ; neutrum = Neutr ;
|
||||
|
||||
param
|
||||
AdjFormPos = Strong GenNum | Weak SexNum ;
|
||||
|
||||
}
|
||||
2
lib/resource/swedish/VerbSwe.gf
Normal file
2
lib/resource/swedish/VerbSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete VerbSwe of Verb = CatSwe ** VerbScand with
|
||||
(ResScand = ResSwe) ;
|
||||
@@ -1,3 +0,0 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
concrete VerbphraseSwe of Verbphrase = CategoriesSwe **
|
||||
VerbphraseScand with (SyntaxScand=SyntaxSwe) ;
|
||||
@@ -1,48 +0,0 @@
|
||||
+ vi lovade Per att följa med
|
||||
|
||||
- att meditera ägnar han nästan allsin tid nuförtiden
|
||||
|
||||
+ hon har vunnit stora priser igen
|
||||
|
||||
? han blev anklagad för att ha förfalskat en namnteckning
|
||||
|
||||
+ de undrar om det blit något biobesök ikväll
|
||||
|
||||
+ vi kan nog gissa varifrån föroreningarna kommer
|
||||
|
||||
+ hon har inte meddelat mig hur hon tänker göra
|
||||
|
||||
- jag såg nog vad/så/vilka fina rosor du hade
|
||||
|
||||
- jag läser vilka böcker han än skriver
|
||||
|
||||
- han kan skaffa dig vad för slags bil du än vill ha
|
||||
|
||||
- de tycker om när det är mörkt
|
||||
|
||||
- jag avskyr när han röker här inne
|
||||
|
||||
- (?) vi skulle uppskatta om du kom
|
||||
|
||||
- sedan sa hon stillsamt: när kommer du tillbaka
|
||||
|
||||
+ de ansåg oss ha svikit överenskommelsen
|
||||
|
||||
+ vi såg dem försvinna
|
||||
|
||||
+ han lät oss inte dansa
|
||||
|
||||
? det gick honom väl
|
||||
|
||||
? det hände mig något hemskt
|
||||
|
||||
- han hittade en bräda och sågade itu
|
||||
|
||||
- jag köpte en pizza och åt på lunchen
|
||||
|
||||
- jag ska strax betala er (vad jag är skyldig) "bitransitiva med bara ett objekt"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1
lib/resource/swedish/swedish.gfnoparse
Normal file
1
lib/resource/swedish/swedish.gfnoparse
Normal file
@@ -0,0 +1 @@
|
||||
--# noparse AdvVP AdVVP
|
||||
Reference in New Issue
Block a user