Skip to content
This repository has been archived by the owner on Jul 26, 2018. It is now read-only.

Commit

Permalink
a fairly complete Nynorsk implementation added
Browse files Browse the repository at this point in the history
  • Loading branch information
stian committed Jun 16, 2016
1 parent aa0412e commit b8f50d4
Show file tree
Hide file tree
Showing 35 changed files with 1,687 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/src/api/CombinatorsNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
--# -path=.:alltenses:prelude

resource CombinatorsNno = Combinators with
(Cat = CatNno),
(Structural = StructuralNno),
(Constructors = ConstructorsNno) ;
3 changes: 3 additions & 0 deletions lib/src/api/ConstructorsNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
--# -path=.:alltenses:prelude

resource ConstructorsNno = Constructors with (Grammar = GrammarNno) ;
5 changes: 5 additions & 0 deletions lib/src/api/SymbolicNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
--# -path=.:../nynorsk:../scandinavian:../common:../abstract:../prelude

resource SymbolicNno = Symbolic with
(Symbol = SymbolNno),
(Grammar = GrammarNno) ;
5 changes: 5 additions & 0 deletions lib/src/api/SyntaxNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
--# -path=.:alltenses:prelude

instance SyntaxNno of Syntax = ConstructorsNno, CatNno, StructuralNno, CombinatorsNno
;

3 changes: 3 additions & 0 deletions lib/src/api/TryNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
--# -path=.:../nynorsk:../scandinavian:../common:../abstract:../prelude

resource TryNno = SyntaxNno, LexiconNno, ParadigmsNno - [mkAdv] ;
2 changes: 2 additions & 0 deletions lib/src/nynorsk/AdjectiveNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
concrete AdjectiveNno of Adjective = CatNno ** AdjectiveScand with
(ResScand = ResNno) ;
2 changes: 2 additions & 0 deletions lib/src/nynorsk/AdverbNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
concrete AdverbNno of Adverb = CatNno ** AdverbScand with
(ResScand = ResNno) ;
7 changes: 7 additions & 0 deletions lib/src/nynorsk/AllNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
--# -path=.:../scandinavian:../abstract:../common:../prelude

concrete AllNno of AllNnoAbs =
LangNno,
IrregNno - [fly_V],
ExtraNno
** {} ;
5 changes: 5 additions & 0 deletions lib/src/nynorsk/AllNnoAbs.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
abstract AllNnoAbs =
Lang,
IrregNnoAbs - [fly_V],
ExtraNnoAbs
** {} ;
2 changes: 2 additions & 0 deletions lib/src/nynorsk/CatNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
concrete CatNno of Cat = CommonX - [Tense, Temp] ** CatScand with
(ResScand = ResNno) ;
2 changes: 2 additions & 0 deletions lib/src/nynorsk/ConjunctionNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
concrete ConjunctionNno of Conjunction = CatNno ** ConjunctionScand with
(ResScand = ResNno) ;
114 changes: 114 additions & 0 deletions lib/src/nynorsk/DiffNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
instance DiffNno of DiffScand = open CommonScand, Prelude in {
flags coding=utf8 ;

-- Parameters.

oper
NGender = NGenderNno ;

ngen2gen g = case g of {NUtr _ => Utr ; NNeutr => Neutr} ;

param
NGenderNno = NUtr Sex | NNeutr ;
Sex = Masc | Fem ;

oper
utrum = NUtr Masc ;
neutrum = NNeutr ;

detDef : Species = Def ;

Verb : Type = {
s : VForm => Str ;
part : Str ;
vtype : VType ;
isVaere : Bool
} ;

hasAuxBe v = v.isVaere ;

-- Strings.

conjThat = "at" ;
conjThan = "enn" ;
conjAnd = "og" ;
compMore = "meir" ;
infMark = "å" ;

subjIf = "viss" ;

-- artDef : GenNum -> Str = \gn -> gennumForms "den" "det" "dei" ! gn ;

artIndef : NGender => Str = table {
NUtr Masc => "ein" ;
NUtr Fem => "ei" ;
NNeutr => "eit"
} ;
detIndefPl = "noko" ;

verbHave =
mkVerb9 "ha" "har" "ha" "hadde" "hatt" "haven" "havet" "havne" "havande"
** {part = [] ; isVaere = False} ;
verbBe =
mkVerb9 "vere" "er" "var" "var" "vore" "veren" "veret" "verne" "verande"
** {part = [] ; isVaere = False} ;
verbBecome =
mkVerb9 "verte" "vert" "verte" "vart" "vorte" "vorte" "vorte" "vorte" "vertande"
** {part = [] ; isVaere = True} ;

-- auxiliary
noPart = {part = []} ;

auxFut = "vil" ; -- "skal" in ExtNno
auxFutKommer = "kjem" ;
auxFutPart = "til" ;
auxCond = "ville" ;

negation : Polarity => Str = table {
Pos => [] ;
Neg => "ikkje"
} ;

genderForms : (x1,x2 : Str) -> NGender => Str = \all,allt ->
table {
NUtr _ => all ;
NNeutr => allt
} ;

relPron : Gender => Number => RCase => Str = \\g,n,c => case c of {
RNom | RAcc | RPrep False => "som" ;
RGen => "viss" ;
RPrep _ => gennumForms "kva" "kva" "kva" ! gennum g n
} ;

pronSuch = gennumForms "slik" "slikt" "slike" ;

reflPron : Agr -> Str = \a -> case <a.n,a.p> of {
<Pl,P1> => "oss" ;
<Pl,P2> => "dykk" ;
<Sg,P1> => "meg" ;
<Sg,P2> => "deg" ;
<_, P3> => "seg"
} ;

hur_IAdv = {s = "kvar"} ;

av_Prep = "av" ;

---- added by AR
possPron : Number -> Person -> Number -> Gender -> Str = \sn,sb,on,og -> case <sn,sb,on,og> of {
<Sg,P1,Sg,Utr> => "min" ;
<Sg,P1,Sg,Neutr> => "mitt" ;
<Sg,P1,Pl,_> => "mine" ;
<Sg,P2,Sg,Utr> => "din" ;
<Sg,P2,Sg,Neutr> => "ditt" ;
<Sg,P2,Pl,_> => "dine" ;
<Pl,P1,Sg,Utr> => "vår" ;
<Pl,P1,Sg,Neutr> => "vårt" ;
<Pl,P1,Pl,_> => "våre" ;
<Pl,P2,_,_> => "dykkar" ;
<_,_,Sg,Utr> => "sin" ;
<_,_,Sg,Neutr> => "sitt" ;
<_,_,Pl,_> => "sine"
} ;
}
12 changes: 12 additions & 0 deletions lib/src/nynorsk/ExtraNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
concrete ExtraNno of ExtraNnoAbs = ExtraScandNno ** open CommonScand, ResNno, Prelude in {

lin
PossNPPron np pro = {
s = \\c => np.s ! NPNom ++ pro.s ! NPPoss (gennumAgr np.a) (caseNP c) ;
a = np.a ;
isPron = False ;
} ;

TFutKommer = {s = []} ** {t = SFutKommer} ; --# notpresent

}
9 changes: 9 additions & 0 deletions lib/src/nynorsk/ExtraNnoAbs.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-- Structures special for Norwegian. These are not implemented in other
-- Scandinavian languages.

abstract ExtraNnoAbs = ExtraScandAbs ** {

fun
PossNPPron : NP -> Pron -> NP ; -- bilen min

}
2 changes: 2 additions & 0 deletions lib/src/nynorsk/ExtraScandNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
concrete ExtraScandNno of ExtraScandAbs = CatNno ** ExtraScand with
(ResScand = ResNno) ;
22 changes: 22 additions & 0 deletions lib/src/nynorsk/GrammarNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
--# -path=.:../scandinavian:../abstract:../common:prelude

concrete GrammarNno of Grammar =
NounNno,
VerbNno,
AdjectiveNno,
AdverbNno,
NumeralNno,
SentenceNno,
QuestionNno,
RelativeNno,
ConjunctionNno,
PhraseNno,
TextX - [Tense,Temp] ,
IdiomNno,
StructuralNno,
TenseNno
** {

flags startcat = Phr ; unlexer = text ; lexer = text ;

} ;
40 changes: 40 additions & 0 deletions lib/src/nynorsk/IdiomNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
concrete IdiomNno of Idiom = CatNno **
open MorphoNno, ParadigmsNno, IrregNno, Prelude in {

flags optimize=all_subs ;
coding=utf8 ;

lin

ImpersCl vp = mkClause "det" (agrP3 Neutr Sg) vp ;
GenericCl vp = mkClause "eine" (agrP3 Utr Sg) vp ;

CleftNP np rs = mkClause "det" (agrP3 Neutr Sg)
(insertObj (\\_ => np.s ! rs.c ++ rs.s ! np.a ! RNom) (predV verbBe)) ;

CleftAdv ad s = mkClause "det" (agrP3 Neutr Sg)
(insertObj (\\_ => ad.s ++ s.s ! Sub) (predV verbBe)) ;

ExistNP np =
mkClause "det" (agrP3 Neutr Sg) (insertObj
(\\_ => np.s ! accusative) (predV (depV finnast_V))) ;

ExistIP ip = {
s = \\t,a,p =>
let
cls =
(mkClause "det" (agrP3 Neutr Sg) (predV (depV finnast_V))).s ! t ! a ! p ;
who = ip.s ! accusative
in table {
QDir => who ++ cls ! Inv ;
QIndir => who ++ cls ! Sub
}
} ;

ProgrVP vp =
insertObj (\\a => ["ved å"] ++ infVP vp a) (predV verbBe) ;

ImpPl1 vp = {s = ["lat oss"] ++ infVP vp {g = Utr ; n = Pl ; p = P1}} ;


}
75 changes: 75 additions & 0 deletions lib/src/nynorsk/IrregNno.gf
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
--# -path=.:../scandinavian:../common:../abstract:../../prelude

-- see: http://frodo.bruderhof.com/norskklassen/commonverbs.htm

concrete IrregNno of IrregNnoAbs = CatNno ** open ParadigmsNno in {

flags optimize=values ;
coding=utf8 ;

lin be_V = mkV "be" "ber" "bes" "bad" "bede" "be" ;
lin bite_V = mkV "bite" "bit" "bitast" "beit" "bite" "bit" ;
lin verte_V = mkV "verte" "vert" "vertast" "vart" "vorte" "vert" ;
lin brenne_V = mkV "brenne" "brenn" "brenn" "brann" "brunne" "brenn" ;
lin blase_V = mkV "blåse" "blæs" "blåsast" "bles" "blåse" "blås" ;
lin bringe_V = mkV "bringe" "bringar" "bringast" "bringa" "bringa" "bring" ;
lin burde_V = mkV "burde" "bør" "burdest" "burde" "burda" "burde" ;
lin bære_V = mkV "bere" "ber" "berast" "bar" "bore" "ber" ;
lin dra_V = mkV "dra" "dreg" "dragast" "drog" "drege" "dra" ;
lin drikke_V = mkV "drikke" "drikk" "drikkast" "drakk" "drukke" "drikk" ;
lin drive_V = irregV "drive" "dreiv" "drive" ;
lin dø_V = mkV "døy" "døyr" "døyast" "døydde" "døydd" "døy" ;
lin eie_V = mkV "eige" "eig" "eigast" "eigde" "eigd" "eig" ;
lin falle_V = mkV "falle" "fell" "fallast" "fall" "falle" "fall" ;
lin finne_V = mkV "finne" "finn" "finnas" "fann" "funne" "finn" ;
lin finnast_V = mkV "finnast" "finst" "finst" "fans" "funnest" "finnast" ;
lin fly_V = mkV "flyge" "flyg" "flygast" "flaug" "flyge" "flyg" ;
lin flyte_V = mkV "flyte" "flyt" "flytast" "flaut" "flyte" "flyt" ;
lin foretrekke_V = mkV "føretrekkje" "føretrekkjer" "føretrekkjast" "føretrekte" "føretrekt" "føretrekk" ;
lin forlate_V = mkV "forlate" "forlèt" "forlatast" "forlét" "forlate" "forlat" ;
lin forstå_V = irregV "forstå" "forstod" "forstått" ;
lin fortelle_V = mkV "fortelje" "fortel" "forteljast" "fortalde" "fortalt" "fortel" ;
lin fryse_V = mkV "fryse" "frys" "frysast" "fraus" "frose" "frys" ;
lin få_V = mkV "få" "får" "fåast" "fekk" "fått" "få" ;
lin gi_V = mkV "gje" "gjev" "gjevast" "gav" "gjeve" "gje" ;
lin gjelde_V = mkV "gjelde" "gjeld" "gjeldast" "gjaldt" "gjeldt" "gjeld";
lin gjøre_V = mkV "gjere" "gjer" "gjerast" "gjorde" "gjort" "gjer";
lin gni_V = irregV "gni" "gnidde" "gnidd" ;
lin gå_V = irregV "gå" "gjekk" "gått" ;
lin ha_V = irregV "ha" "hadde" "hatt" ;
lin hente_V = irregV "hente" "henta" "henta" ;
lin hete_V = irregV "heite" "heitte" "heitt" ;
lin hjelpe_V = irregV "hjelpe" "hjelpte" "hjelpt" ;
lin holde_V = mkV "halde" "held" "haldast" "heldt" "halde" "hald" ;
lin komme_V = mkV "kome" "kjem" "kommast" "kom" "kome" "kom" ;
lin kunne_V = mkV "kunne" "kan" "kan" "kunne" "kunna" "kunn" ;
lin la_V = mkV "la" "lar" "lar" "let" "latt" "la" ;
lin legge_V = mkV "leggje" "legg" "leggast" "la" "lagt" "legg";
lin ligge_V = mkV "liggje" "ligg" "liggast" "låg" "lege" "ligg";
lin løpe_V = springe_V ;
lin måtte_V = mkV "måtte" "må" "måast" "måtte" "måtta" "må";
lin renne_V = mkV "renne" "renn" "rennast" "rant" "rent" "renn" ;
lin se_V = mkV "sjå" "ser" "sjåast" "såg" "sett" "sjå" ;
lin selge_V = mkV "selje" "sel" "seljast" "selde" "selt" "sel" ;
lin sette_V = irregV "sette" "satte" "satt" ;
lin si_V = mkV "seie" "seier" "seiast" "sa" "sagt" "sei" ;
lin sitte_V = mkV "sitje" "sit" "sits" "sat" "sete" "sit" ;
lin skjære_V = irregV "skjere" "skar" "skure" ;
lin skrive_V = irregV "skrive" "skreiv" "skrive" ;
lin skulle_V = irregV "skulle" "skulle" "skulla" ;
lin slå_V = irregV "slå" "slo" "slått" ;
lin slåss_V = mkV "slåss" "slåss" "slåss" "sloss" "slåss" "slåss" ;
lin sove_V = mkV "sove" "søv" "sovast" "sov" "sove" "sov" ;
lin springe_V = mkV "springe" "spring" "springast" "sprang" "sprunge" "spring";
lin spørre_V = mkV "spørje" "spør" "spørjas" "spurte" "spurt" "spør" ;
lin stikke_V = irregV "stikke" "stakk" "stukke" ;
lin stå_V = irregV "stå" "stod" "stått" ;
lin suge_V = mkV "suge" "sug" "sugast" "saug" "sugd" "sug" ;
lin synes_V = irregV "synes" "syntes" (variants {"synes" ; "syns"}) ;
lin synge_V = mkV "synge" "syng" "syngast" "sang" "sunge" "syng";
lin ta_V = mkV "ta" "tek" "tek" "tok" "teke" "ta" ;
lin treffe_V = mkV "treffe" "treff" "treffast" "traff" "truffe" "treff" ;
lin trives_V = mkV "trivast" "trivst" "trivast" "treivst" "trivest" "trivst" ;
lin ville_V = irregV "ville" "ville" "villet" ;
lin vite_V = mkV "vite" "veit" "vitast" "visste" "visst" "vit" ;
}
Loading

0 comments on commit b8f50d4

Please sign in to comment.