1
0
forked from GitHub/gf-core

resource = resource-1.0

This commit is contained in:
aarne
2006-06-22 22:25:55 +00:00
parent 7e5584b1ab
commit 251bc4c738
881 changed files with 31130 additions and 31130 deletions

View File

@@ -0,0 +1,231 @@
--# -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"] ;
} ;

View File

@@ -0,0 +1,4 @@
--# -path=.:../scandinavian:../abstract:../../prelude
concrete CategoriesSwe of Categories =
CategoriesScand with (SyntaxScand=SyntaxSwe) ;

View File

@@ -0,0 +1,4 @@
--# -path=.:../scandinavian:../abstract:../../prelude
concrete ClauseSwe of Clause = CategoriesSwe **
ClauseI with (Rules=RulesSwe), (Verbphrase=VerbphraseSwe) ;

View File

@@ -0,0 +1,27 @@
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 ;
} ;

View File

@@ -0,0 +1,9 @@
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 ;
} ;

View File

@@ -0,0 +1,7 @@
--# -path=.:../abstract:../scandinavian:../../prelude
concrete DemonstrativeSwe of Demonstrative =
CategoriesSwe ** DemonstrativeI with
(Resource = ResourceSwe),
(Basic = BasicSwe),
(DemRes = DemResSwe) ;

View File

@@ -0,0 +1,22 @@
--# -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 ;
}

View File

@@ -0,0 +1,23 @@
--# -path=.:../scandinavian:../abstract:../../prelude
concrete LangSwe of Lang =
RulesSwe,
ClauseSwe,
StructuralSwe,
BasicSwe,
TimeSwe,
CountrySwe,
MathSwe
** open Prelude, ResourceSwe, 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 ;
}

View File

@@ -0,0 +1,4 @@
--# -path=.:../scandinavian:../abstract:../../prelude
concrete MathSwe of Math = CategoriesSwe **
MathScand with (SyntaxScand=SyntaxSwe) ;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
--# -path=.:../abstract:../scandinavian:../../prelude
concrete MultimodalSwe of Multimodal =
RulesSwe, StructuralSwe, BasicSwe, TimeSwe, DemonstrativeSwe ** MultimodalI with
(Resource = ResourceSwe),
(Basic = BasicSwe),
(Lang = LangSwe),
(DemRes = DemResSwe) ;

View File

@@ -0,0 +1,38 @@
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} ;
}

View File

@@ -0,0 +1,370 @@
--# -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
} ;
} ;

View File

@@ -0,0 +1,356 @@
--# -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 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
-- 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.
--
-- The structure of functions for each word class $C$ is the following:
-- first we give a handful of patterns that aim to cover all
-- 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:
resource ParadigmsSwe =
open (Predef=Predef), Prelude, TypesSwe, MorphoSwe, SyntaxSwe, CategoriesSwe in {
--2 Parameters
--
-- To abstract over gender names, we define the following identifiers.
oper
Gender : Type ;
utrum : Gender ;
neutrum : Gender ;
-- To abstract over number names, we define the following.
Number : Type ;
singular : Number ;
plural : Number ;
-- To abstract over case names, we define the following.
Case : Type ;
nominative : Case ;
genitive : Case ;
-- Prepositions used in many-argument functions are just strings.
Preposition : Type = Str ;
--2 Nouns
-- Worst case: give all four forms. The gender is computed from the
-- last letter of the second form (if "n", then $utrum$, otherwise $neutrum$).
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.
-- If in doubt, use the $cc$ command to test!
regN : 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:
mascN : N -> N ;
--3 Compound nouns
--
-- All the functions above work quite as well to form compound nouns,
-- such as "fotboll".
--3 Relational nouns
--
-- Relational nouns ("daughter of x") need a preposition.
mkN2 : N -> Preposition -> N2 ;
-- The most common preposition is "av", and the following is a
-- shortcut for regular, $nonhuman$ relational nouns with "av".
regN2 : Str -> Gender -> N2 ;
-- 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.
mkN3 : N -> Preposition -> Preposition -> 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
-- $N3$ are purely lexical categories. But you can use the $AdvCN$
-- and $PrepNP$ constructions to build phrases like this.
--
--3 Proper names and noun phrases
--
-- Proper names, with a regular genitive, are formed as follows
regPN : Str -> Gender -> PN ; -- John, John's
-- Sometimes you can reuse a common noun as a proper name, e.g. "Bank".
nounPN : N -> PN ;
-- To form a noun phrase that can also be plural and have an irregular
-- genitive, you can use the worst-case function.
mkNP : Str -> Str -> Number -> Gender -> NP ;
--2 Adjectives
-- Non-comparison one-place adjectives need for 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 ;
-- The regular pattern works for many adjectives, e.g. those ending
-- with "ig".
regADeg : Str -> ADeg ;
-- Just the comparison forms can be irregular.
irregADeg : (tung,tyngre,tyngst : Str) -> ADeg ;
-- Sometimes just the positive forms are irregular.
mk3ADeg : (galen,galet,galna : Str) -> ADeg ;
mk2ADeg : (bred,brett : Str) -> ADeg ;
-- If comparison is formed by "more, "most", as in general for
-- long adjective, the following pattern is used:
compoundADeg : A -> ADeg ; -- -/more/most ridiculous
-- From a given $ADeg$, it is possible to get back to $A$.
adegA : ADeg -> A ;
--2 Adverbs
-- Adverbs are not inflected. Most lexical ones have position
-- after the verb. Some can be preverbal (e.g. "always").
mkAdv : Str -> Adv ;
mkAdV : Str -> AdV ;
-- 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 third in other cases ("bo" - "bor" - "bodde" - "bott").
regV : (tala : 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".
mk2V : (leka,lekte : Str) -> V ;
-- There is an extensive list of irregular verbs in the module $IrregularSwe$.
-- In practice, it is enough to give three forms, as in school books.
irregV : (dricka, drack, druckit : Str) -> V ;
--3 Verbs with a particle.
--
-- The particle, such as in "switch on", is given as a string.
partV : V -> Str -> V ;
--3 Deponent verbs.
--
-- Some words are used in passive forms only, e.g. "hoppas".
depV : 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 ;
dirV2 : V -> V2 ;
--3 Three-place verbs
--
-- 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,_,_
--3 Other complement patterns
--
-- Verbs and adjectives can take complements such as sentences,
-- questions, verb phrases, and adjectives.
mkV0 : V -> V0 ;
mkVS : V -> VS ;
mkV2S : V -> Str -> V2S ;
mkVV : V -> VV ;
mkV2V : V -> Str -> Str -> V2V ;
mkVA : V -> VA ;
mkV2A : V -> Str -> V2A ;
mkVQ : V -> VQ ;
mkV2Q : V -> Str -> V2Q ;
mkAS : A -> AS ;
mkA2S : A -> Str -> A2S ;
mkAV : A -> AV ;
mkA2V : A -> Str -> A2V ;
--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 ;
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 = <>} ;
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} ;
regPN 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 ;
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 = <>} ;
mkA2 a p = a ** {s2 = p ; lock_A2 = <>} ;
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 = <>} ;
mkAdv x = ss x ** {lock_Adv = <>} ;
mkAdV x = ss x ** {lock_AdV = <>} ;
mkAdA x = ss x ** {lock_AdA = <>} ;
mkPreposition p = p ;
mkV a b c d e f = mkVerb a b c d e f ** {s1 = [] ; lock_V = <>} ;
regV a = mk2V a (a + de) where {de = case last a of {"a" => "de" ; _ => "dde"}} ;
mk2V a b = regVerb a b ** {s1 = [] ; lock_V = <>} ;
irregV x y z = vSälja x y z
** {s1 = [] ; lock_V = <>} ;
partV v p = {s = v.s ; s1 = p ; lock_V = <>} ;
depV v = deponentVerb v ** {lock_V = <>} ;
mkV2 v p = v ** {s = v.s ; s1 = v.s1 ; s2 = p ; lock_V2 = <>} ;
dirV2 v = mkV2 v [] ;
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 [] ;
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 = <>} ;
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 = <>} ;
} ;

View File

@@ -0,0 +1,5 @@
--# -path=.:../scandinavian:../abstract:../../prelude
---- concrete ResourceSwe of Resource = RulesSwe, VerbphraseSwe ** {} ;
concrete ResourceSwe of Resource = RulesSwe, StructuralSwe, ClauseSwe ** {} ;

View File

@@ -0,0 +1,4 @@
--# -path=.:../scandinavian:../abstract:../../prelude
concrete RulesSwe of Rules = CategoriesSwe **
RulesScand with (SyntaxScand=SyntaxSwe) ;

View File

@@ -0,0 +1,4 @@
--# -path=.:../scandinavian:../abstract:../../prelude
concrete SatsSwe of Sats = CategoriesSwe **
SatsScand with (SyntaxScand=SyntaxSwe) ;

View File

@@ -0,0 +1,21 @@
--# -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 ;
}

View File

@@ -0,0 +1,8 @@
--# -path=.:../scandinavian:../abstract:../../prelude
concrete SimpleSwe of Simple = CategoriesSwe ** SimpleI with
(Categories = CategoriesSwe),
(Rules = RulesSwe),
(Structural = StructuralSwe),
(Verbphrase = VerbphraseSwe)
;

View File

@@ -0,0 +1,215 @@
--# -path=.:../abstract:../scandinavian:../../prelude
--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} ; ---
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" ;
although_Subj = ss "fast" ;
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} ;
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} ;
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" ;
from_Prep = ss "från" ;
he_NP = pronNounPhrase han_34 ;
how_IAdv = ss "hur" ;
how8many_IDet = mkDeterminerPl ["hur många"] IndefP ;
if_Subj = ss "om" ;
in8front_Prep = ss "framför" ;
i_NP = pronNounPhrase jag_32 ;
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 ."] ;
on_Prep = ss "på" ;
or_Conj = ss "eller" ** {n = Sg} ;
otherwise_Adv = ss "annars" ;
part_Prep = ss "av" ;
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 ;
through_Prep = ss "genom" ;
too_Adv = 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 ;
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 ;
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
{-
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" ;
-}
}

View File

@@ -0,0 +1,250 @@
--# -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" ;
}

View File

@@ -0,0 +1,138 @@
--# -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" ;
}

View File

@@ -0,0 +1,35 @@
--# -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 ;
} ;

View File

@@ -0,0 +1,26 @@
--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 ;
}

View File

@@ -0,0 +1,3 @@
--# -path=.:../scandinavian:../abstract:../../prelude
concrete VerbphraseSwe of Verbphrase = CategoriesSwe **
VerbphraseScand with (SyntaxScand=SyntaxSwe) ;

View File

@@ -0,0 +1,184 @@
--# -path=.:../scandinavian:../abstract:../../prelude
concrete VerbsSwe of VerbsSweAbs = CategoriesSwe ** open ParadigmsSwe in {
flags optimize=values ;
lin
anfalla_V = irregV "anfalla" "anföll" "anfallit" ;
angiva_V = irregV "angiva" "angav" "angivit" ;
angripa_V = irregV "angripa" "angrep" "angripit" ;
anhålla_V = irregV "anhålla" "anhäll" "anhållit" ;
antaga_V = irregV "antaga" "antog" "antagit" ;
äta_V = irregV "äta" "åt" "ätit" ;
återfinna_V = irregV "återfinna" "återfann" "återfunnit" ;
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" ;
avskriva_V = irregV "avskriva" "avskrev" "avskrivit" ;
avstiga_V = irregV "avstiga" "avsteg" "avstigit" ;
bära_V = irregV "bära" "bar" "burit" ;
bedraga_V = irregV "bedraga" "bedrog" "bedragit" ;
bedriva_V = irregV "bedriva" "bedrev" "bedrivit" ;
befinna_V = irregV "befinna" "befann" "befunnit" ;
begrava_V = irregV "begrava" "begrov" "begravit" ;
behålla_V = irregV "behålla" "behöll" "behållit" ;
beljuga_V = irregV "beljuga" "beljög" "beljugit" ;
berida_V = irregV "berida" "bered" "beridit" ;
besitta_V = irregV "besitta" "besatt" "besuttit" ;
beskriva_V = irregV "beskriva" "beskrev" "beskrivit" ;
besluta_V = irregV "besluta" "beslöt" "beslutit" ;
bestiga_V = irregV "bestiga" "besteg" "bestigit" ;
bestrida_V = irregV "bestrida" "bestred" "bestridit" ;
bidraga_V = irregV "bidraga" "bidrog" "bidragit" ;
bifalla_V = irregV "bifalla" "biföll" "bifallit" ;
binda_V = irregV "binda" "band" "bundit" ;
bita_V = irregV "bita" "bet" "bitit" ;
bjuda_V = irregV "bjuda" "bjöd" "bjudit" ;
bliva_V = irregV "bli" "blev" "blivit" ;
borttaga_V = irregV "borttaga" "borttog" "borttagit" ;
brinna_V = irregV "brinna" "brann" "brunnit" ;
brista_V = irregV "brista" "brast" "brustit" ;
bryta_V = irregV "bryta" "bröt" "brutit" ;
dö_V = irregV "dö" "dog" "dött" ;
draga_V = mkV (variants { "dra"; "draga"}) (variants { "drar" ;
"drager"}) (variants { "dra" ; "drag" }) "drog" "dragit" "dragen" ;
dricka_V = irregV "dricka" "drack" "druckit" ;
driva_V = irregV "driva" "drev" "drivit" ;
drypa_V = irregV "drypa" "dröp" "drupit" ;
duga_V = irregV "duga" "dög" "dugit" ;
dyka_V = irregV "dyka" "dök" "dukit" ;
erbjuda_V = irregV "erbjuda" "erbjöd" "erbjudit" ;
erfara_V = irregV "erfara" "erfor" "erfarit" ;
erhålla_V = irregV "erhålla" "erhöll" "erhållit" ;
falla_V = irregV "falla" "föll" "fallit" ;
fånga_V = irregV "fånga" "fäng" "fångit" ;
fara_V = irregV "fara" "for" "farit" ;
finna_V = irregV "finna" "fann" "funnit" ;
flyga_V = irregV "flyga" "flög" "flugit" ;
flyta_V = irregV "flyta" "flöt" "flutit" ;
förbehålla_V = irregV "förbehålla" "förbehöll" "förbehållit" ;
förbinda_V = irregV "förbinda" "förband" "förbundit" ;
förbjuda_V = irregV "förbjuda" "förbjöd" "förbjudit" ;
fördriva_V = irregV "fördriva" "fördrev" "fördrivit" ;
föreskriva_V = irregV "föreskriva" "föreskrev" "föreskrivit" ;
företaga_V = irregV "företaga" "företog" "företagit" ;
förfrysa_V = irregV "förfrysa" "förfrös" "förfrusit" ;
förlåta_V = irregV "förlåta" "förlät" "förlåtit" ;
förnimma_V = irregV "förnimma" "förnamm" "förnummit" ;
försitta_V = irregV "försitta" "försatt" "försuttit" ;
försvinna_V = irregV "försvinna" "försvann" "försvunnit" ;
förtiga_V = irregV "förtiga" "förteg" "förtigit" ;
frysa_V = irregV "frysa" "frös" "frusit" ;
gå_V = irregV "gå" "gick" "gått" ;
genomdriva_V = irregV "genomdriva" "genomdrev" "genomdrivit" ;
gilla_V = irregV "gilla" "gall" "gillit" ;
giva_V = irregV "ge" "gav" "givit" ;
gjuta_V = irregV "gjuta" "gjöt" "gjutit" ;
glida_V = irregV "glida" "gled" "glidit" ;
gnida_V = irregV "gnida" "gned" "gnidit" ;
gråta_V = irregV "gråta" "grät" "gråtit" ;
gripa_V = irregV "gripa" "grep" "gripit" ;
hålla_V = irregV "hålla" "höll" "hållit" ;
hinna_V = irregV "hinna" "hann" "hunnit" ;
hugga_V = irregV "hugga" "högg" "huggit" ;
iakttaga_V = irregV "iakttaga" "iakttog" "iakttagit" ;
inbegripa_V = irregV "inbegripa" "inbegrep" "inbegripit" ;
inbjuda_V = irregV "inbjuda" "inbjöd" "inbjudit" ;
indraga_V = irregV "indraga" "indrog" "indragit" ;
innesluta_V = irregV "innesluta" "inneslöt" "inneslutit" ;
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" ;
kliva_V = irregV "kliva" "klev" "klivit" ;
klyva_V = irregV "klyva" "klöv" "kluvit" ;
knipa_V = irregV "knipa" "knep" "knipit" ;
knyta_V = irregV "knyta" "knöt" "knutit" ;
komma_V = irregV "komma" "kom" "kommit" ;
krypa_V = irregV "krypa" "kröp" "krupit" ;
kunna_V = mkV "kunna" "kan" "kan" "kunde" "kunnat" "känd" ;
kvida_V = irregV "kvida" "kved" "kvidit" ;
låta_V = irregV "låta" "lät" "låtit" ;
leva_V = irregV "leva" "levde" "levt" ;
ligga_V = irregV "ligga" "låg" "legat" ;
ljuda_V = irregV "ljuda" "ljöd" "ljudit" ;
ljuga_V = irregV "ljuga" "ljög" "ljugit" ;
ljuta_V = irregV "ljuta" "ljöt" "ljutit" ;
mottaga_V = irregV "mottaga" "mottog" "mottagit" ;
nerstiga_V = irregV "nerstiga" "nersteg" "nerstigit" ;
niga_V = irregV "niga" "neg" "nigit" ;
njuta_V = irregV "njuta" "njöt" "njutit" ;
omgiva_V = irregV "omgiva" "omgav" "omgivit" ;
överfalla_V = irregV "överfalla" "överföll" "överfallit" ;
övergiva_V = irregV "övergiva" "övergav" "övergivit" ;
pipa_V = irregV "pipa" "pep" "pipit" ;
rida_V = irregV "rida" "red" "ridit" ;
rinna_V = irregV "rinna" "rann" "runnit" ;
riva_V = irregV "riva" "rev" "rivit" ;
ryta_V = irregV "ryta" "röt" "rutit" ;
säga_V = irregV "säga" "sade" "sagt" ;
se_V = irregV "se" "såg" "sett" ;
sitta_V = irregV "sitta" "satt" "suttit" ;
sjuda_V = irregV "sjuda" "sjöd" "sjudit" ;
sjunga_V = irregV "sjunga" "sjöng" "sjungit" ;
sjunka_V = irregV "sjunka" "sjönk" "sjunkit" ;
skära_V = mkV "skära" "skär" "skär" "skar" "skurit" "skuren" ;
skina_V = irregV "skina" "sken" "skinit" ;
skita_V = irregV "skita" "sket" "skitit" ;
skjuta_V = irregV "skjuta" "skjöt" "skjutit" ;
skrida_V = irregV "skrida" "skred" "skridit" ;
skrika_V = irregV "skrika" "skrek" "skrikit" ;
skriva_V = irregV "skriva" "skrev" "skrivit" ;
skryta_V = irregV "skryta" "skröt" "skrutit" ;
slå_V = irregV "slå" "slog" "slagit" ;
slinka_V = irregV "slinka" "slank" "slunkit" ;
slippa_V = irregV "slippa" "slapp" "sluppit" ;
slita_V = irregV "slita" "slet" "slitit" ;
sluta_V = irregV "sluta" "slöt" "slutit" ;
smörja_V = irregV "smörja" "smorjde" "smort" ;
smita_V = irregV "smita" "smet" "smitit" ;
snyta_V = irregV "snyta" "snöt" "snutit" ;
sova_V = irregV "sova" "sov" "sovit" ;
spinna_V = irregV "spinna" "spann" "spunnit" ;
spricka_V = irregV "spricka" "sprack" "spruckit" ;
sprida_V = irregV "sprida" "spred" "spridit" ;
springa_V = irregV "springa" "sprang" "sprungit" ;
stå_V = irregV "stå" "stod" "stått" ;
sticka_V = irregV "sticka" "stack" "stuckit" ;
stiga_V = irregV "stiga" "steg" "stigit" ;
stinka_V = irregV "stinka" "stank" "stunkit" ;
strida_V = irregV "strida" "stred" "stridit" ;
strypa_V = irregV "strypa" "ströp" "strupit" ;
suga_V = irregV "suga" "sög" "sugit" ;
supa_V = irregV "supa" "söp" "supit" ;
svälla_V = irregV "svälla" "svällde" "svällt" ;
svida_V = irregV "svida" "sved" "svidit" ;
svika_V = irregV "svika" "svek" "svikit" ;
sy_V = irregV "sy" "sydde" "sytt" ;
taga_V = irregV "taga" "tog" "tagit" ;
tiga_V = irregV "tiga" "teg" "tigit" ;
tillåta_V = irregV "tillåta" "tillät" "tillåtit" ;
tillsluta_V = irregV "tillsluta" "tillslöt" "tillslutit" ;
tjuta_V = irregV "tjuta" "tjöt" "tjutit" ;
tryta_V = irregV "tryta" "tröt" "trutit" ;
tvinga_V = irregV "tvinga" "tvang" "tvungit" ;
uppfinna_V = irregV "uppfinna" "uppfann" "uppfunnit" ;
uppgiva_V = irregV "uppgiva" "uppgav" "uppgivit" ;
upplåta_V = irregV "upplåta" "upplät" "upplåtit" ;
uppstiga_V = irregV "uppstiga" "uppsteg" "uppstigit" ;
upptaga_V = irregV "upptaga" "upptog" "upptagit" ;
utbjuda_V = irregV "utbjuda" "utbjöd" "utbjudit" ;
utbrista_V = irregV "utbrista" "utbrast" "utbrustit" ;
utesluta_V = irregV "utesluta" "uteslöt" "uteslutit" ;
utskriva_V = irregV "utskriva" "utskrev" "utskrivit" ;
veta_V = mkV "veta" "vet" "vet" "visste" "vetat" (variants {}) ;
vända_V = irregV "vända" "vände" "vänt" ;
vina_V = irregV "vina" "ven" "vinit" ;
vinna_V = irregV "vinna" "vann" "vunnit" ;
vrida_V = irregV "vrida" "vred" "vridit" ;
}

View File

@@ -0,0 +1,178 @@
abstract VerbsSweAbs = Categories ** {
fun
anfalla_V : V ;
angiva_V : V ;
angripa_V : V ;
anhĺlla_V : V ;
antaga_V : V ;
äta_V : V ;
ĺterfinna_V : V ;
avbryta_V : V ;
avfalla_V : V ;
avhugga_V : V ;
avleda_V : V ;
avlida_V : V ;
avnjuta_V : V ;
avsitta_V : V ;
avskriva_V : V ;
avstiga_V : V ;
bära_V : V ;
bedraga_V : V ;
bedriva_V : V ;
befinna_V : V ;
begrava_V : V ;
behĺlla_V : V ;
beljuga_V : V ;
berida_V : V ;
besitta_V : V ;
beskriva_V : V ;
besluta_V : V ;
bestiga_V : V ;
bestrida_V : V ;
bidraga_V : V ;
bifalla_V : V ;
binda_V : V ;
bita_V : V ;
bjuda_V : V ;
bliva_V : V ;
borttaga_V : V ;
brinna_V : V ;
brista_V : V ;
bryta_V : V ;
dö_V : V ;
draga_V : V ;
dricka_V : V ;
driva_V : V ;
drypa_V : V ;
duga_V : V ;
dyka_V : V ;
erbjuda_V : V ;
erfara_V : V ;
erhĺlla_V : V ;
falla_V : V ;
fĺnga_V : V ;
fara_V : V ;
finna_V : V ;
flyga_V : V ;
flyta_V : V ;
förbehĺlla_V : V ;
förbinda_V : V ;
förbjuda_V : V ;
fördriva_V : V ;
föreskriva_V : V ;
företaga_V : V ;
förfrysa_V : V ;
förlĺta_V : V ;
förnimma_V : V ;
försitta_V : V ;
försvinna_V : V ;
förtiga_V : V ;
frysa_V : V ;
gĺ_V : V ;
genomdriva_V : V ;
gilla_V : V ;
giva_V : V ;
gjuta_V : V ;
glida_V : V ;
gnida_V : V ;
grĺta_V : V ;
gripa_V : V ;
hĺlla_V : V ;
hinna_V : V ;
hugga_V : V ;
iakttaga_V : V ;
inbegripa_V : V ;
inbjuda_V : V ;
indraga_V : V ;
innesluta_V : V ;
inskriva_V : V ;
intaga_V : V ;
känna_V : V ;
klämma_V : V ;
kliva_V : V ;
klyva_V : V ;
knipa_V : V ;
knyta_V : V ;
komma_V : V ;
krypa_V : V ;
kunna_V : V ;
kvida_V : V ;
lĺta_V : V ;
leva_V : V ;
ligga_V : V ;
ljuda_V : V ;
ljuga_V : V ;
ljuta_V : V ;
mottaga_V : V ;
nerstiga_V : V ;
niga_V : V ;
njuta_V : V ;
omgiva_V : V ;
överfalla_V : V ;
övergiva_V : V ;
pipa_V : V ;
rida_V : V ;
rinna_V : V ;
riva_V : V ;
ryta_V : V ;
säga_V : V ;
se_V : V ;
sitta_V : V ;
sjuda_V : V ;
sjunga_V : V ;
sjunka_V : V ;
skära_V : V ;
skina_V : V ;
skita_V : V ;
skjuta_V : V ;
skrida_V : V ;
skrika_V : V ;
skriva_V : V ;
skryta_V : V ;
slĺ_V : V ;
slinka_V : V ;
slippa_V : V ;
slita_V : V ;
sluta_V : V ;
smörja_V : V ;
smita_V : V ;
snyta_V : V ;
sova_V : V ;
spinna_V : V ;
spricka_V : V ;
sprida_V : V ;
springa_V : V ;
stĺ_V : V ;
sticka_V : V ;
stiga_V : V ;
stinka_V : V ;
strida_V : V ;
strypa_V : V ;
suga_V : V ;
supa_V : V ;
svälla_V : V ;
svida_V : V ;
svika_V : V ;
sy_V : V ;
taga_V : V ;
tiga_V : V ;
tillĺta_V : V ;
tillsluta_V : V ;
tjuta_V : V ;
tryta_V : V ;
tvinga_V : V ;
uppfinna_V : V ;
uppgiva_V : V ;
upplĺta_V : V ;
uppstiga_V : V ;
upptaga_V : V ;
utbjuda_V : V ;
utbrista_V : V ;
utesluta_V : V ;
utskriva_V : V ;
vända_V : V ;
veta_V : V ;
vina_V : V ;
vinna_V : V ;
vrida_V : V ;
}

View File

@@ -0,0 +1,48 @@
+ 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"