mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 13:09:33 -06:00
Norwegian now
This commit is contained in:
4
lib/resource/norwegian/CategoriesNor.gf
Normal file
4
lib/resource/norwegian/CategoriesNor.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete CategoriesNor of Categories =
|
||||
CategoriesScand with (SyntaxScand=SyntaxNor) ;
|
||||
241
lib/resource/norwegian/MorphoNor.gf
Normal file
241
lib/resource/norwegian/MorphoNor.gf
Normal file
@@ -0,0 +1,241 @@
|
||||
--1 A Simple Norwegian Resource Morphology
|
||||
--
|
||||
-- Aarne Ranta 2002
|
||||
--
|
||||
-- This resource morphology contains definitions needed in the resource
|
||||
-- syntax. It moreover contains copies of the most usual inflectional patterns
|
||||
-- as defined in functional morphology (in the Haskell file $RulesSw.hs$).
|
||||
--
|
||||
-- We use the parameter types and word classes defined for morphology.
|
||||
|
||||
resource MorphoNor = open Prelude, TypesNor in {
|
||||
|
||||
-- Danish grammar source: http://users.cybercity.dk/~nmb3879/danish.html
|
||||
|
||||
-- genders
|
||||
|
||||
oper
|
||||
masc = Utr Masc ;
|
||||
fem = Utr NoMasc ;
|
||||
neutr = Neutr ;
|
||||
|
||||
-- nouns
|
||||
|
||||
oper
|
||||
mkSubstantive : (_,_,_,_ : Str) -> {s : SubstForm => Str} =
|
||||
\dreng, drengen, drenger, drengene -> {s = table {
|
||||
SF Sg Indef c => mkCase dreng ! c ;
|
||||
SF Sg Def c => mkCase drengen ! c ;
|
||||
SF Pl Indef c => mkCase drenger ! c ;
|
||||
SF Pl Def c => mkCase drengene ! c
|
||||
}
|
||||
} ;
|
||||
|
||||
mkCase : Str -> Case => Str = \bil -> table {
|
||||
Nom => bil ;
|
||||
Gen => bil + "s" --- but: hus --> hus
|
||||
} ;
|
||||
|
||||
nBil : Str -> Subst = \bil ->
|
||||
mkSubstantive bil (bil + "en") (bil + "er") (bil + "erne") **
|
||||
{h1 = masc} ;
|
||||
|
||||
nUke : Str -> Subst = \uke ->
|
||||
mkSubstantive uke (init uke + "a") (uke + "r") (uke + "ne") **
|
||||
{h1 = fem} ;
|
||||
|
||||
nHus : Str -> Subst = \hus ->
|
||||
mkSubstantive hus (hus + "et") hus (hus + "ene") **
|
||||
{h1 = neutr} ;
|
||||
|
||||
nHotell : Str -> Subst = \hotell ->
|
||||
mkSubstantive hotell (hotell + "et") (hotell + "er") (hotell + "ene") **
|
||||
{h1 = neutr} ;
|
||||
|
||||
-- adjectives
|
||||
|
||||
mkAdjective : (_,_,_,_,_ : Str) -> Adj =
|
||||
\stor,stort,store,storre,storst -> {s = table {
|
||||
AF (Posit (Strong (ASg (Utr _)))) c => mkCase stor ! c ;
|
||||
AF (Posit (Strong (ASg Neutr))) c => mkCase stort ! c ;
|
||||
AF (Posit _) c => mkCase store ! c ;
|
||||
AF Compar c => mkCase storre ! c ;
|
||||
AF (Super SupStrong) c => mkCase storst ! c ;
|
||||
AF (Super SupWeak) c => mkCase (storst + "e") ! c
|
||||
}
|
||||
} ;
|
||||
|
||||
aRod : Str -> Adj = \rod ->
|
||||
mkAdjective rod (rod + "t") (rod + "e") (rod + "ere") (rod + "est") ;
|
||||
|
||||
aAbstrakt : Str -> Adj = \abstrakt ->
|
||||
mkAdjective abstrakt abstrakt (abstrakt + "e") (abstrakt + "ere") (abstrakt + "est") ;
|
||||
|
||||
aRask : Str -> Adj = \rask ->
|
||||
mkAdjective rask rask (rask + "e") (rask + "ere") (rask + "est") ;
|
||||
|
||||
-- verbs
|
||||
|
||||
mkVerb : (_,_,_,_,_,_ : Str) -> Verbum =
|
||||
\spise,spiser,spises,spiste,spist,spis -> {s = table {
|
||||
VI (Inf v) => mkVoice v spise ;
|
||||
VF (Pres m Act) => spiser ;
|
||||
VF (Pres m Pass) => spises ;
|
||||
VF (Pret m v) => mkVoice v spiste ;
|
||||
VI (Supin v) => mkVoice v spist ;
|
||||
VI (PtPret c) => mkCase spist ! c ;
|
||||
VF Imper => spis
|
||||
}
|
||||
} ;
|
||||
|
||||
mkVoice : Voice -> Str -> Str = \v,s -> case v of {
|
||||
Act => s ;
|
||||
Pass => s + case last s of {
|
||||
"t" => "es" ;
|
||||
_ => "s"
|
||||
}
|
||||
} ;
|
||||
|
||||
vHusk : Str -> Verbum = \husk ->
|
||||
mkVerb (husk + "e") (husk + "er") (husk + "es") (husk + "et") (husk + "et") husk ;
|
||||
|
||||
vSpis : Str -> Verbum = \spis ->
|
||||
mkVerb (spis + "e") (spis + "er") (spis + "es") (spis + "te") (spis + "t") spis ;
|
||||
|
||||
vBo : Str -> Verbum = \bo ->
|
||||
mkVerb bo (bo + "r") (bo + "es") (bo + "dde") (bo + "dd") bo ;
|
||||
|
||||
-- pronouns
|
||||
|
||||
oper jag_32 : ProPN =
|
||||
{s = table {
|
||||
PNom => "jeg" ;
|
||||
PAcc => "meg" ;
|
||||
PGen (ASg (Utr Masc)) => "min" ;
|
||||
PGen (ASg (Utr NoMasc)) => "mi" ;
|
||||
PGen (ASg Neutr) => "mitt" ;
|
||||
PGen APl => "mine"
|
||||
} ;
|
||||
h1 = Utr Masc ; -- Masc doesn't matter
|
||||
h2 = Sg ;
|
||||
h3 = P1
|
||||
} ;
|
||||
|
||||
oper du_33 : ProPN =
|
||||
{s = table {
|
||||
PNom => "du" ;
|
||||
PAcc => "deg" ;
|
||||
PGen (ASg (Utr Masc)) => "din" ;
|
||||
PGen (ASg (Utr NoMasc)) => "di" ;
|
||||
PGen (ASg Neutr) => "ditt" ;
|
||||
PGen APl => "dine"
|
||||
} ;
|
||||
h1 = Utr Masc ;
|
||||
h2 = Sg ;
|
||||
h3 = P2
|
||||
} ;
|
||||
|
||||
oper han_34 : ProPN =
|
||||
{s = table {
|
||||
PNom => "han" ;
|
||||
PAcc => "ham" ;
|
||||
PGen (ASg (Utr _)) => "hans" ;
|
||||
PGen (ASg Neutr) => "hans" ;
|
||||
PGen APl => "hans"
|
||||
} ;
|
||||
h1 = masc ;
|
||||
h2 = Sg ;
|
||||
h3 = P3
|
||||
} ;
|
||||
oper hon_35 : ProPN =
|
||||
{s = table {
|
||||
PNom => "hun" ;
|
||||
PAcc => "henne" ;
|
||||
PGen (ASg (Utr _)) => "hennes" ;
|
||||
PGen (ASg Neutr) => "hennes" ;
|
||||
PGen APl => "hennes"
|
||||
} ;
|
||||
h1 = fem ;
|
||||
h2 = Sg ;
|
||||
h3 = P3
|
||||
} ;
|
||||
|
||||
oper vi_36 : ProPN =
|
||||
{s = table {
|
||||
PNom => "vi" ;
|
||||
PAcc => "oss" ;
|
||||
PGen (ASg (Utr _)) => "vår" ;
|
||||
PGen (ASg Neutr) => "vårt" ;
|
||||
PGen APl => "våre"
|
||||
} ;
|
||||
h1 = Utr Masc ;
|
||||
h2 = Pl ;
|
||||
h3 = P1
|
||||
} ;
|
||||
|
||||
oper ni_37 : ProPN =
|
||||
{s = table {
|
||||
PNom => "dere" ;
|
||||
PAcc => "dere" ;
|
||||
PGen _ => "deres"
|
||||
} ;
|
||||
h1 = Utr Masc ;
|
||||
h2 = Pl ;
|
||||
h3 = P2
|
||||
} ;
|
||||
|
||||
oper de_38 : ProPN =
|
||||
{s = table {
|
||||
PNom => "de" ;
|
||||
PAcc => "dem" ;
|
||||
PGen _ => "deres"
|
||||
} ;
|
||||
h1 = Utr Masc ;
|
||||
h2 = Pl ;
|
||||
h3 = P3
|
||||
} ;
|
||||
|
||||
oper De_38 : ProPN =
|
||||
{s = table {
|
||||
PNom => "Dere" ;
|
||||
PAcc => "Dere" ;
|
||||
PGen _ => "Deres"
|
||||
} ;
|
||||
h1 = Utr Masc ;
|
||||
h2 = Sg ;
|
||||
h3 = P2
|
||||
} ;
|
||||
|
||||
oper den_39 : ProPN =
|
||||
{s = table {
|
||||
PNom => "de " ;
|
||||
PAcc => "den" ;
|
||||
PGen _ => "dens"
|
||||
} ;
|
||||
h1 = Utr Masc ;
|
||||
h2 = Sg ;
|
||||
h3 = P3
|
||||
} ;
|
||||
|
||||
oper det_40 : ProPN =
|
||||
{s = table {
|
||||
PNom => "det" ;
|
||||
PAcc => "det" ;
|
||||
PGen _ => "dets"
|
||||
} ;
|
||||
h1 = Neutr ;
|
||||
h2 = Sg ;
|
||||
h3 = P3
|
||||
} ;
|
||||
|
||||
|
||||
-- from Numerals
|
||||
|
||||
param DForm = ental | ton | tiotal ;
|
||||
|
||||
oper mkTal : Str -> Str -> Str -> {s : DForm => Str} =
|
||||
\två -> \tolv -> \tjugo ->
|
||||
{s = table {ental => två ; ton => tolv ; tiotal => tjugo}} ;
|
||||
oper regTal : Str -> {s : DForm => Str} = \fem -> mkTal fem (fem + "ten") (fem + "ti") ;
|
||||
|
||||
}
|
||||
41
lib/resource/norwegian/NumeralsNor.gf
Normal file
41
lib/resource/norwegian/NumeralsNor.gf
Normal file
@@ -0,0 +1,41 @@
|
||||
-- norsk bokmol, by Herman R Jervell herman.jervell@ilf.uio.no,
|
||||
-- 6/3/2001
|
||||
|
||||
concrete NumeralsNor of Numerals = open Prelude, MorphoNor in {
|
||||
|
||||
|
||||
lincat Numeral = {s : Str} ;
|
||||
lincat Digit = {s : DForm => Str} ;
|
||||
lincat Sub10 = {s : DForm => Str} ;
|
||||
lincat Sub100 = {s : Str} ;
|
||||
lincat Sub1000 = {s : Str} ;
|
||||
lincat Sub1000000 = {s : Str} ;
|
||||
|
||||
lin num x = x ;
|
||||
|
||||
lin n2 = mkTal "to" "tolv" "tjue" ;
|
||||
lin n3 = mkTal "tre" "tretten" "tretti" ;
|
||||
lin n4 = mkTal "fire" "fjorten" "førti" ;
|
||||
lin n5 = regTal "fem" ;
|
||||
lin n6 = regTal "seks" ;
|
||||
lin n7 = mkTal "sju" "sytten" "sytti" ;
|
||||
lin n8 = mkTal "åtte" "atten" "åtti" ;
|
||||
lin n9 = mkTal "ni" "nitten" "nitti" ;
|
||||
|
||||
lin pot01 = {s = table {f => "et"}} ;
|
||||
lin pot0 d = {s = table {f => d.s ! f}} ;
|
||||
lin pot110 = ss "ti" ;
|
||||
lin pot111 = ss "elve" ;
|
||||
lin pot1to19 d = ss (d.s ! ton) ;
|
||||
lin pot0as1 n = ss (n.s ! ental) ;
|
||||
lin pot1 d = ss (d.s ! tiotal) ;
|
||||
lin pot1plus d e = ss (d.s ! tiotal ++ e.s ! ental) ;
|
||||
lin pot1as2 n = n ;
|
||||
lin pot2 d = ss (d.s ! ental ++ "hundre") ;
|
||||
lin pot2plus d e = ss (d.s ! ental ++ "hundre" ++ "og" ++ e.s) ;
|
||||
lin pot2as3 n = n ;
|
||||
lin pot3 n = ss (n.s ++ "tusen") ;
|
||||
lin pot3plus n m = ss (n.s ++ "tusen" ++ "og" ++ m.s) ;
|
||||
|
||||
|
||||
}
|
||||
4
lib/resource/norwegian/RulesNor.gf
Normal file
4
lib/resource/norwegian/RulesNor.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete RulesNor of Rules =
|
||||
RulesScand with (SyntaxScand=SyntaxNor) ;
|
||||
118
lib/resource/norwegian/StructuralNor.gf
Normal file
118
lib/resource/norwegian/StructuralNor.gf
Normal file
@@ -0,0 +1,118 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
--1 The Top-Level Norwegian Resource Grammar: Structural Words
|
||||
--
|
||||
-- Aarne Ranta 2002 -- 2004
|
||||
--
|
||||
concrete StructuralNor of Structural =
|
||||
CategoriesNor, NumeralsNor ** open Prelude, MorphoNor, SyntaxNor in {
|
||||
lin
|
||||
|
||||
INP = pronNounPhrase jag_32 ;
|
||||
ThouNP = pronNounPhrase du_33 ;
|
||||
HeNP = pronNounPhrase han_34 ;
|
||||
SheNP = pronNounPhrase hon_35 ;
|
||||
WeNumNP n = pronNounPhrase (pronWithNum vi_36 n) ;
|
||||
YeNumNP n = pronNounPhrase (pronWithNum ni_37 n) ;
|
||||
TheyNP = pronNounPhrase de_38 ;
|
||||
TheyFemNP = pronNounPhrase de_38 ;
|
||||
|
||||
YouNP = pronNounPhrase De_38 ;
|
||||
|
||||
ItNP = pronNounPhrase det_40 ; ----
|
||||
ThisNP = regNameNounPhrase ["dette"] NNeutr ;
|
||||
ThatNP = regNameNounPhrase ["det"] NNeutr ;
|
||||
TheseNumNP n =
|
||||
{s = \\c => ["disse"] ++ n.s ! npCase c ; g = Neutr ; n = Pl} ;
|
||||
ThoseNumNP n =
|
||||
{s = \\c => ["de der"] ++ n.s ! npCase c ; g = Neutr ; n = Pl} ;
|
||||
|
||||
EveryDet = varjeDet ;
|
||||
AllMassDet = mkDeterminerSgGender2 "all" "alt" IndefP ;
|
||||
AllNumDet = mkDeterminerPlNum "alle" IndefP ;
|
||||
AnyDet = mkDeterminerSgGender2 "noen" "noe" IndefP ;
|
||||
AnyNumDet = mkDeterminerPlNum "noen" IndefP ;
|
||||
SomeDet = mkDeterminerSgGender2 "noen" "noe" IndefP ;
|
||||
SomeNumDet = mkDeterminerPlNum "noen" IndefP ;
|
||||
ManyDet = mkDeterminerPl "mange" IndefP ;
|
||||
HowManyDet = mkDeterminerPl ["hvor mange"] IndefP ;
|
||||
NoDet = mkDeterminerSgGender2 "ingen" "ingen" IndefP ;
|
||||
NoNumDet = mkDeterminerPlNum "ingen" IndefP ;
|
||||
WhichNumDet = mkDeterminerPlNum "hvilke" IndefP ;
|
||||
|
||||
UseNumeral i = {s = table {Nom => i.s ; Gen => i.s ++ "s"}} ; ---
|
||||
|
||||
WhichDet = vilkenDet ;
|
||||
MostDet = mkDeterminerSgGender2 ["den meste"] ["det meste"] (DefP Def) ;
|
||||
MostsDet = flestaDet ;
|
||||
MuchDet = mkDeterminerSg (detSgInvar "mye") IndefP ;
|
||||
|
||||
ThisDet = mkDeterminerSgGender2 ["denne"] ["dette"] (DefP Def) ;
|
||||
ThatDet = mkDeterminerSgGender2 ["den der"] ["det der"] (DefP Indef) ;
|
||||
TheseNumDet = mkDeterminerPlNum ["disse"] (DefP Def) ;
|
||||
ThoseNumDet = mkDeterminerPlNum ["de der"] (DefP Def) ;
|
||||
|
||||
HowIAdv = ss "hvor" ;
|
||||
WhenIAdv = ss "når" ;
|
||||
WhereIAdv = ss "hver" ;
|
||||
WhyIAdv = ss "hvorfor" ;
|
||||
|
||||
AndConj = ss "og" ** {n = Pl} ;
|
||||
OrConj = ss "eller" ** {n = Sg} ;
|
||||
BothAnd = sd2 "både" "og" ** {n = Pl} ;
|
||||
EitherOr = sd2 "enten" "eller" ** {n = Sg} ;
|
||||
NeitherNor = sd2 "verken" "eller" ** {n = Sg} ;
|
||||
IfSubj = ss "hvis" ;
|
||||
WhenSubj = ss "når" ;
|
||||
|
||||
PhrYes = ss ["Ja ."] ;
|
||||
PhrNo = ss ["Nei ."] ;
|
||||
|
||||
VeryAdv = ss "meget" ;
|
||||
TooAdv = ss "for" ; ---- ?
|
||||
OtherwiseAdv = ss "annerledes" ; ---- ?
|
||||
ThereforeAdv = ss "derfor" ;
|
||||
|
||||
EverybodyNP = let alla = table {Nom => "alle" ; Gen => "alles"} in
|
||||
{s = \\c => alla ! npCase c ; g = Utr Masc ; n = Pl} ;
|
||||
SomebodyNP = nameNounPhrase (mkProperName "noen" (NUtr Masc)) ;
|
||||
NobodyNP = nameNounPhrase (mkProperName "ingen" (NUtr Masc)) ;
|
||||
EverythingNP = nameNounPhrase (mkProperName "alt" NNeutr) ;
|
||||
SomethingNP = nameNounPhrase (mkProperName "noe" NNeutr) ;
|
||||
NothingNP = nameNounPhrase (mkProperName "intet" NNeutr) ;
|
||||
|
||||
CanVV = mkVerb "kunne" "kan" nonExist "kunne" "kunnet" nonExist ** {s1 = [] ; isAux = True} ;
|
||||
CanKnowVV = mkVerb "kunne" "kan" nonExist "kunne" "kunnet" nonExist ** {s1 = [] ; isAux = True} ;
|
||||
MustVV = mkVerb "måtte" "må" "mås" "måtte" "måttet" "mått" ** {s1 = [] ; isAux = True} ; ---- ?
|
||||
WantVV = mkVerb "ville" "vil" nonExist "ville" "villet" "vill" ** {s1 = [] ; isAux = True} ; ---
|
||||
|
||||
EverywhereNP = advPost "overalt" ;
|
||||
SomewhereNP = advPost ["et eller annet sted"] ; ---- ?
|
||||
NowhereNP = advPost "ingensteds" ;
|
||||
|
||||
AlthoughSubj = ss ["selv om"] ;
|
||||
|
||||
AlmostAdv = ss "nesten" ;
|
||||
QuiteAdv = ss "temmelig" ;
|
||||
|
||||
InPrep = ss "i" ;
|
||||
OnPrep = ss "på" ;
|
||||
ToPrep = ss "til" ;
|
||||
ThroughPrep = ss "gjennom" ;
|
||||
AbovePrep = ss "ovenfor" ;
|
||||
UnderPrep = ss "under" ;
|
||||
InFrontPrep = ss "foran" ;
|
||||
BehindPrep = ss "bakom" ;
|
||||
BetweenPrep = ss "mellom" ;
|
||||
FromPrep = ss "fra" ;
|
||||
BeforePrep = ss "før" ;
|
||||
DuringPrep = ss "under" ;
|
||||
AfterPrep = ss "etter" ;
|
||||
WithPrep = ss "med" ;
|
||||
WithoutPrep = ss "uten" ;
|
||||
ByMeansPrep = ss "med" ;
|
||||
PossessPrep = ss "av" ;
|
||||
PartPrep = ss "av" ;
|
||||
AgentPrep = ss "av" ;
|
||||
|
||||
}
|
||||
115
lib/resource/norwegian/SyntaxNor.gf
Normal file
115
lib/resource/norwegian/SyntaxNor.gf
Normal file
@@ -0,0 +1,115 @@
|
||||
--# -path=.:../scandinavian:../../prelude
|
||||
|
||||
instance SyntaxNor of SyntaxScand = TypesNor **
|
||||
open Prelude, (CO = Coordination), MorphoNor in {
|
||||
|
||||
oper
|
||||
|
||||
------ mkAdjForm
|
||||
|
||||
-- When common nouns are extracted from lexicon, the composite noun form is ignored.
|
||||
|
||||
extCommonNounMasc = extCommNoun ;
|
||||
|
||||
npMan : NounPhrase = nameNounPhrase (mkProperName "man" (NUtr Masc)) ;
|
||||
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, _> => Weak
|
||||
} ;
|
||||
|
||||
deponentVerb : Verb -> Verb = \finna -> {
|
||||
s = table {
|
||||
VF (Pres m _) => finna.s ! VF (Pres m Pass) ;
|
||||
VF (Pret m _) => finna.s ! VF (Pret m Pass) ;
|
||||
VI (Inf _) => finna.s ! VI (Inf Pass) ;
|
||||
VI (Supin _) => finna.s ! VI (Supin Pass) ;
|
||||
v => finna.s ! v --- Imper !
|
||||
} ;
|
||||
s1 = finna.s1
|
||||
} ;
|
||||
|
||||
verbFinnas : Verb =
|
||||
deponentVerb (mkVerb "finne" "finner" "finnes" "fant" "funnet" "finn" ** {s1 = []}) ;
|
||||
verbVara = mkVerb "være" "er" nonExist "var" "vært" "vær" ** {s1 = []} ;
|
||||
verbHava = mkVerb "ha" "ha" "has" "hadde" "hatt" "ha" ** {s1 = []} ;
|
||||
|
||||
relPronForms : RelCase => GenNum => Str = table {
|
||||
RNom => \\_ => "som" ;
|
||||
RAcc => \\_ => variants {"som" ; []} ;
|
||||
RGen => \\_ => "hvis" ;
|
||||
RPrep => pronVilken
|
||||
} ;
|
||||
|
||||
pronVilken = table {
|
||||
ASg (Utr Masc) => "hvilken" ; --- cannot reduce patter _ in Rules
|
||||
ASg (Utr NoMasc) => "hvilken" ;
|
||||
ASg Neutr => "hvilket" ;
|
||||
APl => "hvilke"
|
||||
} ;
|
||||
|
||||
pronSådan = table {
|
||||
ASg (Utr _) => "sådan" ;
|
||||
ASg Neutr => "sådant" ;
|
||||
APl => "sådanne"
|
||||
} ;
|
||||
|
||||
pronNågon = table {
|
||||
ASg (Utr _) => "noen" ;
|
||||
ASg Neutr => "noe" ;
|
||||
APl => "noen"
|
||||
} ;
|
||||
|
||||
specDefPhrase : Bool -> Species = \b ->
|
||||
Def ;
|
||||
|
||||
superlSpecies = Def ;
|
||||
|
||||
artIndef = table {Utr Masc => "en" ; Utr NoMasc => "ei" ; Neutr => "et"} ;
|
||||
|
||||
artDef : Bool => GenNum => Str = table {
|
||||
True => table {
|
||||
ASg (Utr _) => "den" ;
|
||||
ASg Neutr => "det" ; -- det gamla huset
|
||||
APl => variants {"de"}
|
||||
} ;
|
||||
False => table {_ => []} -- huset
|
||||
} ;
|
||||
|
||||
auxHar = "har" ;
|
||||
auxHade = "hadde" ;
|
||||
auxHa = "ha" ;
|
||||
auxSka = "vil" ;
|
||||
auxSkulle = "ville" ;
|
||||
|
||||
infinAtt = "at" ;
|
||||
|
||||
varjeDet : Determiner = mkDeterminerSg (detSgInvar "hver") IndefP ;
|
||||
allaDet : Determiner = mkDeterminerPl "alle" IndefP ;
|
||||
flestaDet : Determiner = mkDeterminerPl ["de fleste"] IndefP ;
|
||||
|
||||
prepÄn = "enn" ;
|
||||
negInte = "ikke" ;
|
||||
|
||||
conjOm = "hvis" ;
|
||||
|
||||
pronVars = "hvis" ;
|
||||
pronVem = "hvem" ;
|
||||
pronVems = "hvis" ; ---- ??
|
||||
pronVad = "hva" ;
|
||||
|
||||
--- added with Nor
|
||||
|
||||
conjGender : Gender -> Gender -> Gender = \m,n -> Neutr ;
|
||||
---- case <m,n> of {
|
||||
---- _ => Neutr ----- bug in type check <Utr _, Utr _>
|
||||
---- } ;
|
||||
|
||||
mkDeterminerSgGender3 : Str -> Str -> Str -> SpeciesP -> Determiner = \en,ei,ett ->
|
||||
mkDeterminerSgGender (table {Utr Masc => en ; Utr NoMasc => ei ; Neutr => ett}) ;
|
||||
|
||||
}
|
||||
49
lib/resource/norwegian/TestResourceNor.gf
Normal file
49
lib/resource/norwegian/TestResourceNor.gf
Normal file
@@ -0,0 +1,49 @@
|
||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||
|
||||
concrete TestResourceNor of TestResource = RulesNor, StructuralNor ** open MorphoNor, SyntaxNor in {
|
||||
|
||||
flags startcat=Phr ; lexer=text ; unlexer=text ;
|
||||
|
||||
-- a random sample from the lexicon
|
||||
|
||||
lin
|
||||
Big = mkAdjective "stor" "stort" "store" "større" "størst" ;
|
||||
Small = mkAdjective "liten" "litet" "små" "mindre" "minst" ; ---- ?
|
||||
Old = mkAdjective "gammel" "gammelt" "gamle" "eldre" "eldst" ;
|
||||
Young = mkAdjective "ung" "ungt" "unge" "yngre" "yngst" ;
|
||||
American = extAdjective (aAbstrakt "amerikansk") ;
|
||||
Finnish = extAdjective (aAbstrakt "finsk") ;
|
||||
Happy = aAbstrakt "heldig" ;
|
||||
Married = extAdjective (aAbstrakt "gift") ** {s2 = "med"} ;
|
||||
Man = extCommNoun (mkSubstantive "mann" "mannen" "menn" "mennen" ** {h1 = masc}) ;
|
||||
Bar = extCommNoun (nBil "bar") ; ---- ?
|
||||
Bottle = extCommNoun (nUke "flaske") ;
|
||||
Woman = extCommNoun (nUke "kvinne") ;
|
||||
Car = extCommNoun (nBil "bil") ;
|
||||
House = extCommNoun (nHus "hus") ;
|
||||
Light = extCommNoun (nHus "lys") ;
|
||||
Wine = extCommNoun (nHus "vin") ; ---- ?
|
||||
Walk = mkVerb "gå" "går" "gås" "gikk" "gått" "gå" ** {s1 = []} ;
|
||||
Run = mkVerb "springe" "springer" "springes" "sprang" "sprunget" "spring" ** {s1 = []} ;
|
||||
Drink = extTransVerb (mkVerb "drikke" "drikker" "drikkes" "drakk" "drukket" "drikk" ** {s1 = []}) [] ;
|
||||
Love = extTransVerb (vNopart (vHusk "elsk")) [] ;
|
||||
Send = extTransVerb (vNopart (vSpis "send")) [] ; ---- ?
|
||||
Wait = extTransVerb (vNopart (vSpis "vent")) "på" ;
|
||||
Give = extTransVerb (vNopart (mkVerb "gi" "gir" "gives" "gav" "givet" "gi")) [] ** {s3 = "til"} ; ---- ?
|
||||
Prefer = extTransVerb (vNopart (vSpis "foretrekk")) [] ** {s3 = "for"} ;
|
||||
|
||||
Say = vNopart (mkVerb "si" "sier" "sies" "sagde" "sagt" "sig") ; ---- ?
|
||||
Prove = vNopart (vSpis "bevis") ;
|
||||
SwitchOn = mkDirectVerb (vHusk "lukk" ** {s1 = "opp"}) ;
|
||||
SwitchOff = mkDirectVerb (vHusk "slukk" ** {s1 = []}) ;
|
||||
|
||||
Mother = mkFun (extCommNoun (mkSubstantive "mor" "moderen" "mødre" "mødrene" ** {h1 = fem})) "til" ; ---- ?
|
||||
Uncle = mkFun (extCommNoun (mkSubstantive "onkel" "onkelen" "onkler" "onklene" ** {h1 = masc})) "til" ; ---- ?
|
||||
Connection = mkFun (extCommNoun (nUke "forbindelse")) "fra" ** {s3 = "til"} ;
|
||||
|
||||
Always = advPre "altid" ;
|
||||
Well = advPost "godt" ;
|
||||
|
||||
John = mkProperName "Johan" (NUtr Masc) ;
|
||||
Mary = mkProperName "Maria" (NUtr NoMasc) ;
|
||||
} ;
|
||||
38
lib/resource/norwegian/TypesNor.gf
Normal file
38
lib/resource/norwegian/TypesNor.gf
Normal file
@@ -0,0 +1,38 @@
|
||||
--1 Norwegian Word Classes and Morphological Parameters
|
||||
--
|
||||
-- This is a resource module for Italian 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 TypesNor of TypesScand = {
|
||||
|
||||
param
|
||||
Gender = Utr Sex | Neutr ;
|
||||
NounGender = NUtr Sex | NNeutr ;
|
||||
|
||||
oper
|
||||
utrum : Gender = Utr Masc ; --- where it doesn't matter
|
||||
neutrum : Gender = Neutr ;
|
||||
|
||||
oper
|
||||
genNoun = \s -> case s of {NUtr x => Utr x ; NNeutr => Neutr} ;
|
||||
sexNoun _ = NoMasc ;
|
||||
gen2nounGen = \s -> case s of {Utr x => NUtr x ; Neutr => NNeutr} ;
|
||||
|
||||
param
|
||||
AdjFormPos = Strong GenNum | Weak ;
|
||||
|
||||
VFin =
|
||||
Pres Mode Voice
|
||||
| Pret Mode Voice
|
||||
| Imper ; --- no passive
|
||||
|
||||
VInf =
|
||||
Inf Voice
|
||||
| Supin Voice
|
||||
| PtPret Case ; ---- number and gender
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user