swedish complete

This commit is contained in:
aarne
2006-01-17 13:45:40 +00:00
parent a31fbfc305
commit 0430f8eb05
9 changed files with 71 additions and 88 deletions

View File

@@ -28,6 +28,8 @@ interface DiffScand = open ResScand, Prelude in {
verbHave : {s : VForm => Str ; vtype : VType} ;
verbBe : {s : VForm => Str ; vtype : VType} ;
verbBecome : {s : VForm => Str ; vtype : VType} ;
auxFut : Str ;
auxCond : Str ;

View File

@@ -12,7 +12,7 @@ incomplete concrete PhraseScand of Phrase =
UttIP ip = {s = ip.s ! nominative} ; --- Acc also
UttIAdv iadv = iadv ;
UttNP np = {s = np.s ! accusative} ;
---- UttVP vp = {s = infMark ++ infVP vp (agrP3 Sg)} ;
UttVP vp = {s = infMark ++ infVP vp (agrP3 Utr Sg)} ;
UttAdv adv = adv ;
NoPConj = {s = []} ;

View File

@@ -190,30 +190,4 @@ resource ResScand = ParamScand ** open Prelude in {
}
} ;
---- For $Numeral$.
--
-- mkNum : Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} =
-- \two, twelve, twenty, second ->
-- {s = table {
-- unit => table {NCard => two ; NOrd => second} ;
-- teen => \\c => mkCard c twelve ;
-- ten => \\c => mkCard c twenty
-- }
-- } ;
--
-- regNum : Str -> {s : DForm => CardOrd => Str} =
-- \six -> mkNum six (six + "teen") (six + "ty") (regOrd six) ;
--
-- regCardOrd : Str -> {s : CardOrd => Str} = \ten ->
-- {s = table {NCard => ten ; NOrd => regOrd ten}} ;
--
-- mkCard : CardOrd -> Str -> Str = \c,ten ->
-- (regCardOrd ten).s ! c ;
--
-- regOrd : Str -> Str = \ten ->
-- case last ten of {
-- "y" => init ten + "ieth" ;
-- _ => ten + "th"
-- } ;
--
}

View File

@@ -33,9 +33,10 @@ incomplete concrete VerbScand of Verb = CatScand ** open DiffScand, ResScand in
ReflV2 v = insertObj (\\a => v.c2 ++ reflPron a) (predV v) ;
-- PassV2 v = {s = \\_ => v.s ! VPPart} ;
-- UseComp comp = insertObj (\\a => comp.s ! agrAdj a.gn DIndef) (predV verbBe) ;
PassV2 v =
insertObj
(\\a => v.s ! VI (VPtPret (agrAdj a.gn DIndef) Nom))
(predV verbBecome) ;
UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; vtype = vv.vtype} ;

View File

@@ -36,6 +36,8 @@ instance DiffSwe of DiffScand = open ResScand, Prelude in {
mkVerb "ha" "har" "ha" "hade" "haft" "havd" "havt" "havda" ;
verbBe =
mkVerb "vara" "är" "var" "var" "varit" "varen" "varet" "varna" ;
verbBecome =
mkVerb "bli" "blir" "bli" "blev" "blivit" "bliven" "blivet" "blivna" ;
auxFut = "ska" ; -- "skall" in ExtSwe
auxCond = "skulle" ;

View File

@@ -256,21 +256,36 @@ conj3 : Str -> Verb = \bo ->
-- for $Structural$
-- for Numerals
-- For $Numeral$.
param DForm = ental | ton | tiotal ;
oper
LinDigit = {s : DForm => Str} ;
LinDigit = {s : DForm => CardOrd => Str} ;
mkTal : Str -> Str -> Str -> LinDigit = \två, tolv, tjugo ->
{s = table {ental => två ; ton => tolv ; tiotal => tjugo}} ;
cardOrd : Str -> Str -> CardOrd => Str = \tre,tredje ->
table {
NCard _ => tre ;
NOrd a => tredje ---- a
} ;
regTal : Str -> LinDigit = \fem ->
mkTal fem (fem + "ton") (fem + "tio") ;
cardReg : Str -> CardOrd => Str = \tio ->
cardOrd tio (tio + "nde") ;
mkTal : (x1,_,_,_,x5 : Str) -> LinDigit =
\två, tolv, tjugo, andra, tolfte ->
{s = table {
ental => cardOrd två andra ;
ton => cardOrd tolv tolfte ;
tiotal => cardReg tjugo
}
} ;
numPl : (CardOrd => Str) -> {s : CardOrd => Str ; n : Number} = \n ->
{s = n ; n = Pl} ;
invNum : CardOrd = NCard Neutr ;
numPl : Str -> {s : Gender => Str ; n : Number} = \n ->
{s = \\_ => n ; n = Pl} ;
} ;

View File

@@ -1,47 +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 = {s : CardOrd => Str ; n : Number} ;
Sub1000 = {s : CardOrd => Str ; n : Number} ;
Sub1000000 = {s : CardOrd => Str ; n : Number} ;
Sub100, Sub1000, Sub1000000 =
{s : CardOrd => Str ; n : Number} ;
lin num x = x ;
lin n2 = let two = mkNum "two" "twelve" "twenty" "second" in
{s = \\f,c => case <f,c> of {
<teen,NOrd> => "twelfth" ;
_ => two.s ! f ! c
}
} ;
lin
num x = x ;
lin n3 = mkNum "three" "thirteen" "thirty" "third" ;
lin n4 = mkNum "four" "fourteen" "forty" "fourth" ;
lin n5 = mkNum "five" "fifteen" "fifty" "fifth" ;
lin n6 = regNum "six" ;
lin n7 = regNum "seven" ;
lin n8 = mkNum "eight" "eighteen" "eighty" "eighth" ;
lin n9 = regNum "nine" ;
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" "sextion" "sjätte" "sextonde" ;
n7 = mkTal "sju" "sjutton" "sjuttio" "sjunde" "sjuttonde" ;
n8 = mkTal "åtta" "arton" "åttio" "åttonde" "artonde" ;
n9 = mkTal "nio" "nitton" "nittio" "nionde" "nittonde" ;
lin pot01 = mkNum "one" "eleven" "ten" "first" ** {n = Sg} ;
lin pot0 d = d ** {n = Pl} ;
lin pot110 = regCardOrd "ten" ** {n = Pl} ;
lin pot111 = regCardOrd "eleven" ** {n = Pl} ;
lin pot1to19 d = {s = d.s ! teen} ** {n = Pl} ;
lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ;
lin pot1 d = {s = d.s ! ten} ** {n = Pl} ;
lin pot1plus d e = {
s = \\c => d.s ! ten ! NCard ++ "-" ++ e.s ! unit ! c ; n = Pl} ;
lin pot1as2 n = n ;
lin pot2 d = {s = \\c => d.s ! unit ! NCard ++ mkCard c "hundred"} ** {n = Pl} ;
lin pot2plus d e = {
s = \\c => d.s ! unit ! NCard ++ "hundred" ++ "and" ++ e.s ! c ; n = Pl} ;
lin pot2as3 n = n ;
lin pot3 n = {
s = \\c => n.s ! NCard ++ mkCard c "thousand" ; n = Pl} ;
lin pot3plus n m = {
s = \\c => n.s ! NCard ++ "thousand" ++ m.s ! c ; n = Pl} ;
-}
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 ++ "tusen" ++ cardOrd "tusen" "tusende" ! g) ;
pot3plus n m =
{s = \\g => n.s ! invNum ++ "tusen" ++ m.s ! g ; n = Pl} ;
}

View File

@@ -167,15 +167,6 @@ oper
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

View File

@@ -90,15 +90,13 @@ concrete StructuralSwe of Structural = CatSwe **
mkVerb6 "vilja" "vill" "vilj" "ville" "velat" "velad" **
{c2 = [] ; lock_VV = <>} ;
we_Pron = mkNP "vi" "oss" "vår" "vårt" "våra" Plg P1 ;
---- whatPl_IP = intPronWhat plural ;
---- whatSg_IP = intPronWhat singular ;
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" ;
whichPl_IDet = {s = \\_ => "vilka" ; n = Pl ; det = DIndef} ;
whichSg_IDet = {s = genderForms "vilken" "vilket" ; n = Sg ; det = DIndef} ;
---- whichPl_IDet = vilkenDet ;
---- whichSg_IDet = mkDeterminerPl "vilka" IndefP ;
whoSg_IP = {s = vem.s ; gn = SgUtr} ;
whoPl_IP = {s = vem.s ; gn = Plg} ;
why_IAdv = ss "varför" ;