diff options
| author | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
| commit | e89fdae2fa1626348d8025824a7469252fa85e42 (patch) | |
| tree | c7d46bbd0494043b4bd6f917a25a7687517d0547 /next-lib/src/scandinavian | |
| parent | 3049b59b35b25381a7c6787444165c200d66e08b (diff) | |
next-lib renamed to lib, lib to old-lib
Diffstat (limited to 'next-lib/src/scandinavian')
| -rw-r--r-- | next-lib/src/scandinavian/AdjectiveScand.gf | 62 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/AdverbScand.gf | 27 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/CatScand.gf | 105 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/CommonScand.gf | 311 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/ConjunctionScand.gf | 44 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/DiffScand.gf | 64 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/ExtEngAbs.gf | 15 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/ExtraScand.gf | 47 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/ExtraScandAbs.gf | 3 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/NounScand.gf | 202 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/PhraseScand.gf | 25 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/QuestionScand.gf | 96 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/RelativeScand.gf | 52 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/ResScand.gf | 75 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/SentenceScand.gf | 64 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/SymbolScand.gf | 38 | ||||
| -rw-r--r-- | next-lib/src/scandinavian/VerbScand.gf | 69 |
17 files changed, 0 insertions, 1299 deletions
diff --git a/next-lib/src/scandinavian/AdjectiveScand.gf b/next-lib/src/scandinavian/AdjectiveScand.gf deleted file mode 100644 index f6243e4a5..000000000 --- a/next-lib/src/scandinavian/AdjectiveScand.gf +++ /dev/null @@ -1,62 +0,0 @@ -incomplete concrete AdjectiveScand of Adjective = - CatScand ** open CommonScand, ResScand, Prelude in { - - lin - - PositA a = { - s = \\ap => a.s ! AF (APosit ap) Nom ; - isPre = True - } ; - ComparA a np = { - s = \\ap => case a.isComp of { - True => compMore ++ a.s ! AF (APosit ap) Nom ; - _ => a.s ! AF ACompar Nom - } - ++ conjThan ++ np.s ! nominative ; - isPre = False - } ; - UseComparA a = { - s = \\ap => case a.isComp of { - True => compMore ++ a.s ! AF (APosit ap) Nom ; - _ => a.s ! AF ACompar Nom - } ; - isPre = False - } ; - - CAdvAP ad ap np = { - s = \\a => ad.s ++ ap.s ! a ++ ad.p ++ np.s ! nominative ; - isPre = False - } ; - - AdjOrd ord = { - s = \\_ => ord.s ; - isPre = True - } ; - - ComplA2 a np = { - s = \\ap => a.s ! AF (APosit ap) Nom ++ a.c2.s ++ np.s ! accusative ; - isPre = False - } ; - - ReflA2 a = { - s = \\ap => a.s ! AF (APosit ap) Nom ++ a.c2.s ++ - reflPron (agrP3 utrum Sg) ; ---- - isPre = False - } ; - - SentAP ap sc = { - s = \\a => ap.s ! a ++ sc.s ; - isPre = False - } ; - - AdAP ada ap = { - s = \\a => ada.s ++ ap.s ! a ; - isPre = ap.isPre - } ; - - UseA2 a = { - s = \\ap => a.s ! AF (APosit ap) Nom ; - isPre = True - } ; - -} diff --git a/next-lib/src/scandinavian/AdverbScand.gf b/next-lib/src/scandinavian/AdverbScand.gf deleted file mode 100644 index ba25954ef..000000000 --- a/next-lib/src/scandinavian/AdverbScand.gf +++ /dev/null @@ -1,27 +0,0 @@ -incomplete concrete AdverbScand of Adverb = CatScand ** open CommonScand, ResScand, Prelude in { - - lin - PositAdvAdj a = { - s = a.s ! adverbForm - } ; - ComparAdvAdj cadv a np = { - s = cadv.s ++ a.s ! adverbForm ++ cadv.p ++ np.s ! nominative - } ; - ComparAdvAdjS cadv a s = { - s = cadv.s ++ a.s ! adverbForm ++ cadv.p ++ s.s ! Sub - } ; - - PrepNP prep np = {s = prep.s ++ np.s ! accusative} ; - - AdAdv = cc2 ; - - SubjS subj s = { - s = subj.s ++ s.s ! Sub - } ; - - AdnCAdv cadv = {s = cadv.s ++ conjThan} ; - - oper - adverbForm : AForm = AF (APosit (Strong SgNeutr)) Nom ; - -} diff --git a/next-lib/src/scandinavian/CatScand.gf b/next-lib/src/scandinavian/CatScand.gf deleted file mode 100644 index 6b9b34b47..000000000 --- a/next-lib/src/scandinavian/CatScand.gf +++ /dev/null @@ -1,105 +0,0 @@ -incomplete concrete CatScand of Cat = - CommonX ** open ResScand, Prelude, CommonScand, (R = ParamX) in { - - flags optimize=all_subs ; - - lincat - --- Tensed/Untensed - - S = {s : Order => Str} ; - QS = {s : QForm => Str} ; - RS = {s : Agr => Str ; c : NPForm} ; - SSlash = {s : Order => Str ; n3 : Agr => Str ; c2 : Complement} ; - --- Sentence - - Cl = {s : R.Tense => Anteriority => Polarity => Order => Str} ; - ClSlash = { - s : R.Tense => Anteriority => Polarity => Order => Str ; - n3 : Agr => Str ; - c2 : Complement - } ; - Imp = {s : Polarity => Number => Str} ; - --- Question - - QCl = {s : R.Tense => Anteriority => Polarity => QForm => Str} ; - IP = {s : NPForm => Str ; gn : GenNum} ; - IComp = {s : AFormPos => Str} ; - IDet = {s : Gender => Str ; n : Number ; det : DetSpecies} ; - IQuant = {s : Number => Gender => Str ; det : DetSpecies} ; - --- Relative; the case $c$ is for "det" clefts. - - RCl = {s : R.Tense => Anteriority => Polarity => Agr => Str ; c : NPForm} ; - RP = {s : GenNum => RCase => Str ; a : RAgr} ; - --- Verb - - VP = { - s : VPForm => { - fin : Str ; -- V1 har ---s1 - inf : Str -- V2 sagt ---s4 - } ; - a1 : Polarity => Str ; -- A1 inte ---s3 - n2 : Agr => Str ; -- N2 dig ---s5 - a2 : Str ; -- A2 idag ---s6 - ext : Str ; -- S-Ext att hon går ---s7 - en2,ea2,eext : Bool -- indicate if the field exists - } ; - VPSlash = CommonScand.VP ** { - n3 : Agr => Str ; -- object-control complement - c2 : Complement - } ; - Comp = {s : AFormPos => Str} ; - - --- Adjective - - AP = {s : AFormPos => Str ; isPre : Bool} ; - --- Noun - --- The fields $isMod$ and $isDet$, and the boolean parameter of --- determiners, are a hack (the simples possible we found) that --- permits treating definite articles "huset - de fem husen - det gamla huset" --- as $Quant$. - - CN = {s : Number => DetSpecies => Case => Str ; g : Gender ; isMod : Bool} ; - NP,Pron = {s : NPForm => Str ; a : Agr} ; - Det = {s,sp : Bool => Gender => Str ; n : Number ; det : DetSpecies} ; - Quant = {s,sp : Number => Bool => Bool => Gender => Str ; det : DetSpecies} ; - Predet = {s : GenNum => Str} ; - Num = {s : Gender => Str ; isDet : Bool ; n : Number} ; - Card = {s : Gender => Str ; n : Number} ; - Ord = {s : Str} ; - --- Numeral - - Numeral = {s : CardOrd => Str ; n : Number} ; - Digits = {s : CardOrd => Str ; n : Number} ; - --- Structural - - Conj = {s1,s2 : Str ; n : Number} ; - Subj = {s : Str} ; - Prep = {s : Str} ; - --- Open lexical classes, e.g. Lexicon - - V, VS, VQ, VA = Verb ; - V2, VV, V2Q, V2S, V2A = Verb ** {c2 : Complement} ; - V3, V2V = Verb ** {c2,c3 : Complement} ; - - A = Adjective ** {isComp : Bool} ; - -- {s : AForm => Str} ; - A2 = Adjective ** {isComp : Bool ; c2 : Complement} ; - - N = Noun ; - -- {s : Number => Species => Case => Str ; g : Gender} ; - N2 = Noun ** {c2 : Complement} ; - N3 = Noun ** {c2,c3 : Complement} ; - PN = {s : Case => Str ; g : Gender} ; - -} diff --git a/next-lib/src/scandinavian/CommonScand.gf b/next-lib/src/scandinavian/CommonScand.gf deleted file mode 100644 index aa1220338..000000000 --- a/next-lib/src/scandinavian/CommonScand.gf +++ /dev/null @@ -1,311 +0,0 @@ ---1 Auxiliary operations common for Scandinavian languages. --- --- This module contains operations that are shared by the Scandinavian --- languages. The complete set of auxiliary operations needed to --- implement [Test Test.html] is defined in [ResScandinavian ResScandinavian.html], --- which depends on [DiffScandinavian DiffScandinavian.html]. - -resource CommonScand = ParamX ** open Prelude in { - - flags optimize=all ; - -param - Species = Indef | Def ; - Case = Nom | Gen ; - Voice = Act | Pass ; - - Order = Main | Inv | Sub ; - - DetSpecies = DIndef | DDef Species ; - - GenNum = SgUtr | SgNeutr | Plg ; - - AForm = AF AFormGrad Case ; - - AFormGrad = - APosit AFormPos - | ACompar - | ASuperl AFormSup ; - --- The $Number$ in $Weak$ only matters in "lilla"/"små". - - AFormPos = Strong GenNum | Weak Number ; - AFormSup = SupStrong | SupWeak ; - - VForm = - VF VFin - | VI VInf ; - - VFin = - VPres Voice - | VPret Voice --# notpresent - | VImper Voice - ; - - VInf = - VInfin Voice - | VSupin Voice --# notpresent - | VPtPret AFormPos Case - ; - - VPForm = - VPFinite Tense Anteriority - | VPImperat - | VPInfinit Anteriority ; - - VType = VAct | VPass | VRefl ; - - NPForm = NPNom | NPAcc | NPPoss GenNum ; ---- AdjPronForm = APron GenNum Case ; ---- AuxVerbForm = AuxInf | AuxPres | AuxPret | AuxSup ; - - RCase = RNom | RGen | RPrep Bool ; - - RAgr = RNoAg | RAg {gn : GenNum ; p : Person} ; - -oper - Complement : Type = {s : Str ; hasPrep : Bool} ; - - Agr : PType = {gn : GenNum ; p : Person} ; - - nominative : NPForm = NPNom ; - accusative : NPForm = NPAcc ; - - caseNP : NPForm -> Case = \np -> case np of { - NPPoss _ => Gen ; - _ => Nom - } ; - - specDet : DetSpecies -> Species = \d -> case d of { - DDef Def => Def ; - _ => Indef - } ; - - mkComplement : Str -> Complement = \s -> { - s = s ; - hasPrep = case s of { - "" => False ; - _ => True - } - } ; --- Used in $Noun.AdjCN$. - ------ agrAdj : GenNum -> DetSpecies -> AFormPos = \gn,d -> Strong gn ; --- debug - agrAdj : GenNum -> DetSpecies -> AFormPos = \gn,d -> - case <<gn,d> : GenNum * DetSpecies> of { - <_, DIndef> => Strong gn ; - <Plg,DDef _> => Weak Pl ; - _ => Weak Sg - } ; - --- Used in $DiffScand.predV$. - - vFin : Tense -> Voice -> VForm = \t,v -> case t of { - Pres => VF (VPres v) - ; --# notpresent - Past => VF (VPret v) ; --# notpresent - _ => VI (VInfin v) --# notpresent - } ; - --- Used in $ConjunctionScand$. - - conjGenNum : (_,_ : GenNum) -> GenNum = \g,h -> case <g,h> of { - <SgUtr,SgUtr> => SgUtr ; - <Plg, _> => Plg ; - <_, Plg> => Plg ; - _ => SgNeutr - } ; - - conjAgr : (_,_ : Agr) -> Agr = \a,b -> { - gn = conjGenNum a.gn b.gn ; - p = conjPerson a.p b.p - } ; - ---- - --- For $Lex$. - --- For each lexical category, here are the worst-case constructors. --- --- But $mkNoun$ is fully defined only for each language, since --- $Gender$ varies. - - nounForms : (x1,_,_,x4 : Str) -> (Number => Species => Case => Str) = - \man,mannen,men,mennen -> \\n,d,c => case <n,d> of { - <Sg,Indef> => mkCase c man ; - <Sg,Def> => mkCase c mannen ; - <Pl,Indef> => mkCase c men ; - <Pl,Def> => mkCase c mennen - } ; - - Adjective : Type = {s : AForm => Str} ; - - mkAdjective : (x1,_,_,_,_,_,x7 : Str) -> {s : AForm => Str} = - \liten, litet, lilla, sma, mindre, minst, minsta -> { - s = table { - AF (APosit a) c => mkCase c (mkAdjPos a liten litet lilla sma) ; - AF ACompar c => mkCase c mindre ; - AF (ASuperl SupStrong) c => mkCase c minst ; - AF (ASuperl SupWeak) c => mkCase c minsta - } - } ; - - mkVerb : (x1,_,_,_,_,_,_,x8 : Str) -> {s : VForm => Str ; vtype : VType} = - \finna,finner,finn,fann,funnit,funnen,funnet,funna -> { - s = table { - VF (VPres Act) => finner ; - VF (VPres Pass) => mkVoice Pass finn ; - VF (VPret v) => mkVoice v fann ; --# notpresent - VF (VImper v) => mkVoice v finn ; - VI (VInfin v) => mkVoice v finna ; - VI (VSupin v) => mkVoice v funnit ; --# notpresent - VI (VPtPret a c)=> mkCase c (mkAdjPos a funnen funnet funna funna) - } ; - vtype = VAct - } ; - --- These are useful auxiliaries. - - mkCase : Case -> Str -> Str = \c,f -> case c of { - Nom => f ; - Gen => f + case last f of { - "s" | "z" | "x" => [] ; - _ => "s" - } - } ; - - mkAdjPos : AFormPos -> (s1,_,_,s4 : Str) -> Str = - \a, liten, litet, lilla, sma -> - case a of { - Strong gn => case gn of { - SgUtr => liten ; - SgNeutr => litet ; - Plg => sma - } ; - Weak Sg => lilla ; - Weak Pl => sma - } ; - - mkVoice : Voice -> Str -> Str = \v,s -> case v of { - Act => s ; - Pass => s + case last s of { - "s" => "es" ; - _ => "s" - } - } ; - - --- For $Noun$. - - artDef : GenNum -> Str = \gn -> gennumForms "den" "det" "de" ! gn ; - - mkNP : (x1,_,_,_,x5 : Str) -> GenNum -> Person -> - {s : NPForm => Str ; a : Agr} = \du,dig,din,ditt,dina,gn,p -> { - s = table { - NPNom => du ; - NPAcc => dig ; - NPPoss g => gennumForms din ditt dina ! g - } ; - a = { - gn = gn ; - p = p - } - } ; - - gennumForms : (x1,x2,x3 : Str) -> GenNum => Str = \den,det,de -> - table { - SgUtr => den ; - SgNeutr => det ; - _ => de - } ; - - regNP : Str -> Str -> GenNum -> {s : NPForm => Str ; a : Agr} = - \det,dess,gn -> - mkNP det det dess dess dess gn P3 ; - - --- For $Verb$. - - VP = { - s : VPForm => { - fin : Str ; -- V1 har ---s1 - inf : Str -- V2 sagt ---s4 - } ; - a1 : Polarity => Str ; -- A1 inte ---s3 - n2 : Agr => Str ; -- N2 dig ---s5 - a2 : Str ; -- A2 idag ---s6 - ext : Str ; -- S-Ext att hon går ---s7 - --- ea1,ev2, --- these depend on params of v and a1 - en2,ea2,eext : Bool -- indicate if the field exists - } ; - - - insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> { - s = vp.s ; - a1 = vp.a1 ; - n2 = \\a => obj ! a ++ vp.n2 ! a ; - a2 = vp.a2 ; - ext = vp.ext ; - en2 = True ; - ea2 = vp.ea2 ; - eext = vp.eext - } ; - - insertObjPost : (Agr => Str) -> VP -> VP = \obj,vp -> { - s = vp.s ; - a1 = vp.a1 ; - n2 = \\a => vp.n2 ! a ++ obj ! a ; - a2 = vp.a2 ; - ext = vp.ext ; - en2 = True ; - ea2 = vp.ea2 ; - eext = vp.eext - } ; - - insertAdv : Str -> VP -> VP = \adv,vp -> { - s = vp.s ; - a1 = vp.a1 ; - n2 = vp.n2 ; - a2 = vp.a2 ++ adv ; - ext = vp.ext ; - en2 = vp.en2 ; - ea2 = True ; - eext = vp.eext - } ; - - insertAdV : Str -> VP -> VP = \adv,vp -> { - s = vp.s ; - a1 = \\b => vp.a1 ! b ++ adv ; - n2 = vp.n2 ; - a2 = vp.a2 ; - ext = vp.ext ; - en2 = vp.en2 ; - ea2 = vp.ea2 ; - eext = vp.eext - } ; - - infVP : VP -> Agr -> Str = \vp,a -> - vp.a1 ! Pos ++ (vp.s ! VPInfinit Simul).inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; --- a1 - - --- For $Sentence$. - - Clause : Type = { - s : Tense => Anteriority => Polarity => Order => Str - } ; - - mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> { - s = \\t,a,b,o => - let - verb = vp.s ! VPFinite t a ; - neg = vp.a1 ! b ; - compl = vp.n2 ! agr ++ vp.a2 ++ vp.ext - in - case o of { - Main => subj ++ verb.fin ++ neg ++ verb.inf ++ compl ; - Inv => verb.fin ++ subj ++ neg ++ verb.inf ++ compl ; - Sub => subj ++ neg ++ verb.fin ++ verb.inf ++ compl - } - } ; - -} diff --git a/next-lib/src/scandinavian/ConjunctionScand.gf b/next-lib/src/scandinavian/ConjunctionScand.gf deleted file mode 100644 index 6a85a74cb..000000000 --- a/next-lib/src/scandinavian/ConjunctionScand.gf +++ /dev/null @@ -1,44 +0,0 @@ -incomplete concrete ConjunctionScand of Conjunction = - CatScand ** open CommonScand, ResScand, Coordination, Prelude in { - - flags optimize=all_subs ; - - lin - - ConjS conj ss = conjunctDistrTable Order conj ss ; - - ConjAdv conj ss = conjunctDistrSS conj ss ; - - ConjNP conj ss = conjunctDistrTable NPForm conj ss ** { - a = {gn = conjGenNum (gennum utrum conj.n) ss.a.gn ; p = ss.a.p} - } ; - - ConjAP conj ss = conjunctDistrTable AFormPos conj ss ** { - isPre = ss.isPre - } ; - - ConjRS conj ss = conjunctDistrTable Agr conj ss ** { - c = ss.c - } ; - --- These fun's are generated from the list cat's. - - BaseS = twoTable Order ; - ConsS = consrTable Order comma ; - BaseAdv = twoSS ; - ConsAdv = consrSS comma ; - BaseNP x y = twoTable NPForm x y ** {a = conjAgr x.a y.a} ; - ConsNP xs x = consrTable NPForm comma xs x ** {a = conjAgr xs.a x.a} ; - BaseAP x y = twoTable AFormPos x y ** {isPre = andB x.isPre y.isPre} ; - ConsAP xs x = consrTable AFormPos comma xs x ** {isPre = andB xs.isPre x.isPre} ; - BaseRS x y = twoTable Agr x y ** {c = y.c} ; - ConsRS xs x = consrTable Agr comma xs x ** {c = xs.c} ; - - lincat - [S] = {s1,s2 : Order => Str} ; - [Adv] = {s1,s2 : Str} ; - [NP] = {s1,s2 : NPForm => Str ; a : Agr} ; - [AP] = {s1,s2 : AFormPos => Str ; isPre : Bool} ; - [RS] = {s1,s2 : Agr => Str ; c : NPForm} ; - -} diff --git a/next-lib/src/scandinavian/DiffScand.gf b/next-lib/src/scandinavian/DiffScand.gf deleted file mode 100644 index 7b1e6b319..000000000 --- a/next-lib/src/scandinavian/DiffScand.gf +++ /dev/null @@ -1,64 +0,0 @@ -interface DiffScand = open CommonScand, Prelude in { - ---1 Differences between Scandinavian languages - --- Norway has three genders, Danish and Swedish have two. - - param - Gender ; - - oper - neutrum, utrum : Gender ; - - gennum : Gender -> Number -> GenNum ; - --- This is the form of the noun in "det stora berget"/"det store berg". - - detDef : Species ; - --- Danish and Norwegian verbs, but not Swedish verbs, --- have two possible compound-tense auxiliaries ("have" or "være"). - - Verb : Type ; - - hasAuxBe : Verb -> Bool ; - --- The rest of the parameters are function words used in the syntax modules. - - conjThat : Str ; - conjThan : Str ; - compMore : Str ; - conjAnd : Str ; - infMark : Str ; - - subjIf : Str ; - - artIndef : Gender => Str ; - detIndefPl : Str ; - - verbHave : Verb ; - verbBe : Verb ; - - verbBecome : Verb ; - - auxFut : Str ; - auxCond : Str ; - - negation : Polarity => Str ; - --- For determiners; mostly two-valued even in Norwegian. - - genderForms : (x1,x2 : Str) -> Gender => Str ; - --- The forms of a relative pronoun ("som", "vars", "i vilken"). - - relPron : GenNum => RCase => Str ; - --- Pronoun "sådan" used in $Relative.RelCl$. - - pronSuch : GenNum => Str ; - - reflPron : Agr -> Str ; - -} - diff --git a/next-lib/src/scandinavian/ExtEngAbs.gf b/next-lib/src/scandinavian/ExtEngAbs.gf deleted file mode 100644 index 85c117e47..000000000 --- a/next-lib/src/scandinavian/ExtEngAbs.gf +++ /dev/null @@ -1,15 +0,0 @@ -abstract ExtEngAbs = Cat ** { - - cat - Aux ; -- auxiliary verbs: "can", "must", etc - --- Notice that $Aux$ cannot form $VP$ with infinitive, imperative, etc. - - fun - PredAux : NP -> Aux -> VP -> Cl ; - QuestAux : IP -> Aux -> VP -> QCl ; - - can_Aux : Aux ; - must_Aux : Aux ; - -} diff --git a/next-lib/src/scandinavian/ExtraScand.gf b/next-lib/src/scandinavian/ExtraScand.gf deleted file mode 100644 index 32ec58bc2..000000000 --- a/next-lib/src/scandinavian/ExtraScand.gf +++ /dev/null @@ -1,47 +0,0 @@ -incomplete concrete ExtraScand of ExtraScandAbs = CatScand ** - open CommonScand,Coordination,ResScand in { - lin - GenNP np = { - s,sp = \\n,_,_,g => np.s ! NPPoss (gennum g n) ; - det = DDef Indef - } ; - - ComplBareVS v s = insertObj (\\_ => s.s ! Sub) (predV v) ; - - StrandRelSlash rp slash = { - s = \\t,a,p,ag => - rp.s ! ag.gn ! RNom ++ slash.s ! t ! a ! p ! Sub ++ slash.c2.s ; - c = NPAcc - } ; - EmptyRelSlash slash = { - s = \\t,a,p,ag => - slash.s ! t ! a ! p ! Sub ++ slash.c2.s ; - c = NPAcc - } ; - - StrandQuestSlash ip slash = { - s = \\t,a,p => - let - cls = slash.s ! t ! a ! p ; - who = ip.s ! accusative - in table { - QDir => who ++ cls ! Inv ++ slash.c2.s ; - QIndir => who ++ cls ! Sub ++ slash.c2.s - } - } ; - - lincat - VPI = {s : VPIForm => Agr => Str} ; - [VPI] = {s1,s2 : VPIForm => Agr => Str} ; - - lin - BaseVPI = twoTable2 VPIForm Agr ; - ConsVPI = consrTable2 VPIForm Agr comma ; - - MkVPI vp = { - s = \\v,a => infVP vp a ---- no sup - } ; - ConjVPI = conjunctDistrTable2 VPIForm Agr ; - ComplVPIVV vv vpi = insertObj (\\a => vv.c2.s ++ vpi.s ! VPIInf ! a) (predV vv) ; - -} diff --git a/next-lib/src/scandinavian/ExtraScandAbs.gf b/next-lib/src/scandinavian/ExtraScandAbs.gf deleted file mode 100644 index 7f0fb1651..000000000 --- a/next-lib/src/scandinavian/ExtraScandAbs.gf +++ /dev/null @@ -1,3 +0,0 @@ -abstract ExtraScandAbs = Extra ** { - -} diff --git a/next-lib/src/scandinavian/NounScand.gf b/next-lib/src/scandinavian/NounScand.gf deleted file mode 100644 index 4cd697eae..000000000 --- a/next-lib/src/scandinavian/NounScand.gf +++ /dev/null @@ -1,202 +0,0 @@ -incomplete concrete NounScand of Noun = - CatScand ** open CommonScand, ResScand, Prelude in { - - flags optimize=all_subs ; - --- The rule defines $Det Quant Num Ord CN$ where $Det$ is empty if --- it is the definite article ($DefSg$ or $DefPl$) and both $Num$ and --- $Ord$ are empty and $CN$ is not adjectivally modified --- ($AdjCN$). Thus we get $huset$ but $de fem husen$, $det gamla huset$. - - lin - DetCN det cn = - let - g = cn.g ; - m = cn.isMod ; - dd = case <det.det,detDef,m> of { - <DDef Def, Indef, True> => DDef Indef ; - <d,_,_> => d - } - in { - s = \\c => det.s ! m ! g ++ - cn.s ! det.n ! dd ! caseNP c ; - a = agrP3 g det.n - } ; - - UsePN pn = { - s = \\c => pn.s ! caseNP c ; - a = agrP3 pn.g Sg - } ; - - UsePron p = p ; - - PredetNP pred np = { - s = \\c => pred.s ! np.a.gn ++ np.s ! c ; - a = np.a - } ; - - PPartNP np v2 = { - s = \\c => np.s ! c ++ v2.s ! (VI (VPtPret (agrAdj np.a.gn DIndef) Nom)) ; - a = np.a - } ; - - AdvNP np adv = { - s = \\c => np.s ! c ++ adv.s ; - a = np.a - } ; - - DetQuantOrd quant num ord = { - s = \\b,g => quant.s ! num.n ! b ! (orB b num.isDet) ! g ++ - num.s ! g ++ ord.s ; - sp = \\b,g => quant.s ! num.n ! b ! (orB b num.isDet) ! g ++ - num.s ! g ++ ord.s ; - n = num.n ; - det = quant.det - } ; - - DetQuant quant num = - let - md : Bool -> Bool = \b -> case quant.det of { - DDef _ => orB b num.isDet ; - DIndef => num.isDet - -- _ => False - } - in { - s = \\b,g => quant.s ! num.n ! b ! md b ! g ++ - num.s ! g ; - sp = \\b,g => quant.sp ! num.n ! b ! md b ! g ++ - num.s ! g ; - n = num.n ; - det = quant.det - } ; - - DetNP det = - let - g = Neutr ; ---- - m = True ; ---- is this needed for other than Art? - in { - s = \\c => det.sp ! m ! g ; - a = agrP3 g det.n - } ; - - PossPron p = { - s,sp = \\n,_,_,g => p.s ! NPPoss (gennum g n) ; - det = DDef Indef - } ; - - NumCard c = c ** {isDet = True} ; - - NumSg = {s = \\_ => [] ; isDet = False ; n = Sg} ; - NumPl = {s = \\_ => [] ; isDet = False ; n = Pl} ; - - NumDigits nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ; - OrdDigits nu = {s = nu.s ! NOrd SupWeak} ; - - NumNumeral nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ; - OrdNumeral nu = {s = nu.s ! NOrd SupWeak} ; - - AdNum adn num = {s = \\g => adn.s ++ num.s ! g ; isDet = True ; n = num.n} ; - - OrdSuperl a = { - s = case a.isComp of { - True => "mest" ++ a.s ! AF (APosit (Weak Sg)) Nom ; - _ => a.s ! AF (ASuperl SupWeak) Nom - } ; - isDet = True - } ; - - DefArt = { - s = \\n,bm,bn,g => if_then_Str (orB bm bn) (artDef (gennum g n)) [] ; - sp = \\n,bm,bn,g => artDef (gennum g n) ; - det = DDef Def - } ; - - IndefArt = { - s = table { - Sg => \\_,bn,g => if_then_Str bn [] (artIndef ! g) ; - Pl => \\_,bn,_ => [] - } ; - sp = table { - Sg => \\_,bn,g => artIndef ! g ; - Pl => \\_,bn,_ => detIndefPl - } ; - det = DIndef - } ; - - MassNP cn = { - s = \\c => cn.s ! Sg ! DIndef ! caseNP c ; - a = agrP3 cn.g Sg - } ; - - UseN, UseN2 = \noun -> { - s = \\n,d,c => noun.s ! n ! specDet d ! c ; - ---- part app wo c shows editor bug. AR 8/7/2007 - g = noun.g ; - isMod = False - } ; - - Use2N3 f = { - s = f.s ; - g = f.g ; - c2 = f.c2 ; - isMod = False - } ; - - Use3N3 f = { - s = f.s ; - g = f.g ; - c2 = f.c3 ; - isMod = False - } ; - --- The genitive of this $NP$ is not correct: "sonen till mig" (not "migs"). - - ComplN2 f x = { - s = \\n,d,c => f.s ! n ! specDet d ! Nom ++ f.c2.s ++ x.s ! accusative ; - g = f.g ; - isMod = False - } ; - ComplN3 f x = { - s = \\n,d,c => f.s ! n ! d ! Nom ++ f.c2.s ++ x.s ! accusative ; - g = f.g ; - c2 = f.c3 ; - isMod = False - } ; - - AdjCN ap cn = let g = cn.g in { - s = \\n,d,c => - preOrPost ap.isPre - (ap.s ! agrAdj (gennum g n) d) - (cn.s ! n ! d ! c) ; - g = g ; - isMod = True - } ; - - RelCN cn rs = let g = cn.g in { - s = \\n,d,c => cn.s ! n ! d ! c ++ rs.s ! agrP3 g n ; - g = g ; - isMod = cn.isMod - } ; - - RelNP np rs = { - s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ; - a = np.a ; - isMod = np.isMod - } ; - - AdvCN cn sc = let g = cn.g in { - s = \\n,d,c => cn.s ! n ! d ! c ++ sc.s ; - g = g ; - isMod = cn.isMod - } ; - SentCN cn sc = let g = cn.g in { - s = \\n,d,c => cn.s ! n ! d ! c ++ sc.s ; - g = g ; - isMod = cn.isMod - } ; - ApposCN cn np = let g = cn.g in { - s = \\n,d,c => cn.s ! n ! d ! Nom ++ np.s ! NPNom ; --c - g = g ; - isMod = cn.isMod - } ; -} diff --git a/next-lib/src/scandinavian/PhraseScand.gf b/next-lib/src/scandinavian/PhraseScand.gf deleted file mode 100644 index f417b6041..000000000 --- a/next-lib/src/scandinavian/PhraseScand.gf +++ /dev/null @@ -1,25 +0,0 @@ -incomplete concrete PhraseScand of Phrase = - CatScand ** open CommonScand, ResScand, Prelude in { - - lin - PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; - - UttS s = {s = s.s ! Main} ; - UttQS qs = {s = qs.s ! QDir} ; - UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg} ; - UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ; - UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg} ; --- works for adj but not for refl - - UttIP ip = {s = ip.s ! nominative} ; --- Acc also - UttIAdv iadv = iadv ; - UttNP np = {s = np.s ! accusative} ; - UttVP vp = {s = infMark ++ infVP vp (agrP3 utrum Sg)} ; - UttAdv adv = adv ; - - NoPConj = {s = []} ; - PConjConj conj = {s = conj.s2} ; - - NoVoc = {s = []} ; - VocNP np = {s = "," ++ np.s ! nominative} ; - -} diff --git a/next-lib/src/scandinavian/QuestionScand.gf b/next-lib/src/scandinavian/QuestionScand.gf deleted file mode 100644 index f053e71cc..000000000 --- a/next-lib/src/scandinavian/QuestionScand.gf +++ /dev/null @@ -1,96 +0,0 @@ -incomplete concrete QuestionScand of Question = - CatScand ** open CommonScand, ResScand in { - - flags optimize=all_subs ; - - lin - - QuestCl cl = { - s = \\t,a,p => - let cls = cl.s ! t ! a ! p - in table { - QDir => cls ! Inv ; - QIndir => subjIf ++ cls ! Sub - } - } ; - - QuestVP qp vp = { - s = \\t,a,b,q => - let - somo = case q of { - QIndir => <"som",Sub> ; - _ => <[], Main> - } ; - cl = mkClause (qp.s ! nominative ++ somo.p1) {gn = qp.gn ; p = P3} vp - in - cl.s ! t ! a ! b ! somo.p2 - } ; - - QuestSlash ip slash = { - s = \\t,a,p => - let - agr = {gn = ip.gn ; p = P3} ; - cls : Order => Str = \\o => slash.s ! t ! a ! p ! o ++ slash.n3 ! agr ; - who = slash.c2.s ++ ip.s ! accusative --- stranding in ExtScand - in table { - QDir => who ++ cls ! Inv ; - QIndir => who ++ cls ! Sub - } - } ; - - QuestIAdv iadv cl = { - s = \\t,a,p => - let - cls = cl.s ! t ! a ! p ; - why = iadv.s - in table { - QDir => why ++ cls ! Inv ; - QIndir => why ++ cls ! Sub - } - } ; - - QuestIComp icomp np = { - s = \\t,a,p => - let - cls = - (mkClause (np.s ! nominative) np.a (predV verbBe)).s ! t ! a ! p ; - why = icomp.s ! agrAdj np.a.gn DIndef - in table { - QDir => why ++ cls ! Inv ; - QIndir => why ++ cls ! Sub - } - } ; - - PrepIP p ip = { - s = p.s ++ ip.s ! accusative - } ; - - AdvIP ip adv = { - s = \\c => ip.s ! c ++ adv.s ; - gn = ip.gn - } ; - - IdetCN idet cn = let g = cn.g in { - s = \\c => - idet.s ! g ++ cn.s ! idet.n ! idet.det ! caseNP c ; - gn = gennum g idet.n - } ; - - IdetIP idet = - let - g = Neutr ; - in { - s = \\c => idet.s ! g ; - gn = (agrP3 g idet.n).gn - } ; - - IdetQuant idet num = { - s = \\g => idet.s ! num.n ! g ++ num.s ! g ; - n = num.n ; - det = idet.det - } ; - - CompIAdv a = {s = \\_ => a.s} ; - CompIP ip = {s = \\_ => ip.s ! nominative} ; - -} diff --git a/next-lib/src/scandinavian/RelativeScand.gf b/next-lib/src/scandinavian/RelativeScand.gf deleted file mode 100644 index c5c0abc17..000000000 --- a/next-lib/src/scandinavian/RelativeScand.gf +++ /dev/null @@ -1,52 +0,0 @@ -incomplete concrete RelativeScand of Relative = - CatScand ** open CommonScand, ResScand, Prelude in { - - flags optimize=all_subs ; - - lin - - RelCl cl = { - s = \\t,a,p,ag => pronSuch ! ag.gn ++ conjThat ++ cl.s ! t ! a ! p ! Sub ; - c = NPAcc - } ; - - RelVP rp vp = { - s = \\t,ant,b,ag => - let - agr = case rp.a of { - RNoAg => ag ; - RAg a => a - } ; - cl = mkClause (rp.s ! ag.gn ! RNom) agr vp - in - cl.s ! t ! ant ! b ! Sub ; - c = NPNom - } ; - --- This rule uses pied piping ("huset i vilket hon bor") --- Preposition stranding ("huset som hon bor i") --- and the empty relative ("huset hon bor i") are defined in $ExtraScand$. - - RelSlash rp slash = { - s = \\t,a,p,ag => - let - agr = case rp.a of { - RNoAg => ag ; - RAg agg => agg - } - in - slash.c2.s ++ rp.s ! ag.gn ! RPrep slash.c2.hasPrep ++ - slash.s ! t ! a ! p ! Sub ++ slash.n3 ! agr ; - c = NPAcc - } ; - ---- The case here could be genitive. - - FunRP p np rp = { - s = \\gn,c => np.s ! nominative ++ p.s ++ rp.s ! gn ! RPrep True ; - a = RAg np.a - } ; - - IdRP = {s = relPron ; a = RNoAg} ; - -} diff --git a/next-lib/src/scandinavian/ResScand.gf b/next-lib/src/scandinavian/ResScand.gf deleted file mode 100644 index bcd1c7497..000000000 --- a/next-lib/src/scandinavian/ResScand.gf +++ /dev/null @@ -1,75 +0,0 @@ ---1 Scandinavian auxiliary operations - -interface ResScand = DiffScand ** open CommonScand, Prelude in { - ---2 Constants uniformly defined in terms of language-dependent constants - - param - CardOrd = NCard Gender | NOrd AFormSup ; -- sic! (AFormSup) - - oper - agrP3 : Gender -> Number -> Agr = \g,n -> { - gn = gennum g n ; - p = P3 - } ; - - Noun = {s : Number => Species => Case => Str ; g : Gender} ; - --- This function is here because it depends on $verbHave, auxFut, auxCond$. - - predV : Verb -> VP = \verb -> - let - diath = case verb.vtype of { - VPass => Pass ; - _ => Act - } ; - vfin : Tense -> Str = \t -> verb.s ! vFin t diath ; - vsup = verb.s ! VI (VSupin diath) ; --# notpresent - vinf = verb.s ! VI (VInfin diath) ; - - auxv = case hasAuxBe verb of { - True => verbBe.s ; - _ => verbHave.s - } ; - - har : Tense -> Str = \t -> auxv ! vFin t Act ; - ha : Str = auxv ! VI (VInfin Act) ; - - vf : Str -> Str -> {fin,inf : Str} = \fin,inf -> { - fin = fin ; inf = inf ++ verb.part - } ; - - in { - s = table { - VPFinite t Simul => case t of { --- Pres | Past => vf (vfin t) [] ; -- the general rule - Past => vf (vfin t) [] ; --# notpresent - Fut => vf auxFut vinf ; --# notpresent - Cond => vf auxCond vinf ; --# notpresent - Pres => vf (vfin t) [] - } ; - VPFinite t Anter => case t of { --# notpresent - Pres | Past => vf (har t) vsup ; --# notpresent - Fut => vf auxFut (ha ++ vsup) ; --# notpresent - Cond => vf auxCond (ha ++ vsup) --# notpresent - } ; --# notpresent - VPImperat => vf (verb.s ! VF (VImper diath)) [] ; - VPInfinit Anter => vf [] (ha ++ vsup) ; --# notpresent - VPInfinit Simul => vf [] vinf - } ; - a1 : Polarity => Str = negation ; - n2 : Agr => Str = \\a => case verb.vtype of { - VRefl => reflPron a ; - _ => [] - } ; - a2 : Str = [] ; - ext : Str = [] ; - en2,ea2,eext : Bool = False -- indicate if the field exists - } ; - --- needed for VP conjunction - param - VPIForm = VPIInf | VPISup ; ---- sup not yet used - - -} diff --git a/next-lib/src/scandinavian/SentenceScand.gf b/next-lib/src/scandinavian/SentenceScand.gf deleted file mode 100644 index 16bcd0b94..000000000 --- a/next-lib/src/scandinavian/SentenceScand.gf +++ /dev/null @@ -1,64 +0,0 @@ -incomplete concrete SentenceScand of Sentence = - CatScand ** open CommonScand, ResScand, Prelude in { - - flags optimize=all_subs ; - - lin - PredVP np vp = mkClause (np.s ! nominative) np.a vp ; - - PredSCVP sc vp = mkClause sc.s (agrP3 neutrum Sg) vp ; - - ImpVP vp = { - s = \\pol,n => - let - agr = {gn = gennum utrum n ; p = P2} ; - verb = vp.s ! VPImperat ; - in - verb.fin ++ vp.a1 ! pol ++ verb.inf ++ vp.n2 ! agr ++ vp.a2 ++ vp.ext - } ; - - SlashVP np vp = - mkClause - (np.s ! nominative) np.a - vp ** - {n3 = vp.n3 ; c2 = vp.c2} ; - - AdvSlash slash adv = { - s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ; - n3 = slash.n3 ; - c2 = slash.c2 - } ; - - SlashPrep cl prep = cl ** {n3 = \\_ => [] ; c2 = {s = prep.s ; hasPrep = True}} ; - - SlashVS np vs slash = - mkClause - (np.s ! nominative) np.a - (insertObj (\\_ => conjThat ++ slash.s ! Sub) (predV vs)) ** - {n3 = slash.n3 ; c2 = slash.c2} ; - - EmbedS s = {s = conjThat ++ s.s ! Sub} ; - EmbedQS qs = {s = qs.s ! QIndir} ; - EmbedVP vp = {s = infMark ++ infVP vp (agrP3 utrum Sg)} ; --- agr - - UseCl t p cl = { - s = \\o => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! o - } ; - UseQCl t p cl = { - s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! q - } ; - UseRCl t p cl = { - s = \\r => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! r ; - c = cl.c - } ; - UseSlash t p cl = { - s = \\o => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! o ; - n3 = cl.n3 ; - c2 = cl.c2 - } ; - - AdvS a s = {s = \\o => a.s ++ s.s ! Inv} ; - - RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! agrP3 Neutr Sg} ; --- vilket - -} diff --git a/next-lib/src/scandinavian/SymbolScand.gf b/next-lib/src/scandinavian/SymbolScand.gf deleted file mode 100644 index 8bde4e1a4..000000000 --- a/next-lib/src/scandinavian/SymbolScand.gf +++ /dev/null @@ -1,38 +0,0 @@ -incomplete concrete SymbolScand of Symbol = - CatScand ** open Prelude, ResScand, CommonScand in { - -lin - SymbPN i = {s = \\c => i.s ; g = Neutr} ; --- c - IntPN i = {s = \\c => i.s ; g = Neutr} ; --- c - FloatPN i = {s = \\c => i.s ; g = Neutr} ; --- c - NumPN i = {s = \\c => i.s!neutrum ; g = Neutr} ; --- c - CNIntNP cn i = { - s = \\c => (cn.s ! Sg ! DIndef ! Nom ++ i.s) ; - a = agrP3 cn.g Sg - } ; - CNSymbNP det cn xs = let g = cn.g in { - s = \\c => det.s ! cn.isMod ! g ++ cn.s ! det.n ! det.det ! caseNP c ++ xs.s ; - a = agrP3 g det.n - } ; - CNNumNP cn i = { - s = \\c => (cn.s ! Sg ! DIndef ! Nom ++ i.s ! neutrum) ; - a = agrP3 cn.g Sg - } ; - - SymbS sy = {s = \\_ => sy.s} ; - - SymbNum n = {s = \\_ => n.s ; isDet = True ; n = Pl} ; - SymbOrd n = {s = n.s ++ ":te" ; isDet = True} ; --- - -lincat - - Symb, [Symb] = SS ; - -lin - - MkSymb s = s ; - - BaseSymb = infixSS conjAnd ; - ConsSymb = infixSS "," ; - -} diff --git a/next-lib/src/scandinavian/VerbScand.gf b/next-lib/src/scandinavian/VerbScand.gf deleted file mode 100644 index 5ec40157c..000000000 --- a/next-lib/src/scandinavian/VerbScand.gf +++ /dev/null @@ -1,69 +0,0 @@ -incomplete concrete VerbScand of Verb = CatScand ** open CommonScand, ResScand in { - - flags optimize=all_subs ; - - lin - UseV = predV ; - - SlashV2a v = predV v ** {n3 = \\_ => [] ; c2 = v.c2} ; - - Slash2V3 v np = - insertObj (\\_ => v.c2.s ++ np.s ! accusative) (predV v) ** - {n3 = \\_ => [] ; c2 = v.c3} ; -- to preserve the order of args - Slash3V3 v np = predV v ** { - n3 = \\_ => v.c3.s ++ np.s ! accusative ; - c2 = v.c2 - } ; - - ComplVV v vp = insertObj (\\a => v.c2.s ++ infVP vp a) (predV v) ; - ComplVS v s = insertObj (\\_ => conjThat ++ s.s ! Sub) (predV v) ; - ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ; - ComplVA v ap = insertObj (\\a => ap.s ! agrAdj a.gn DIndef) (predV v) ; - - SlashV2V v vp = predV v ** { - n3 = \\a => v.c3.s ++ infVP vp a ; - c2 = v.c2 - } ; - SlashV2S v s = predV v ** { - n3 = \\_ => conjThat ++ s.s ! Sub ; - c2 = v.c2 - } ; - SlashV2Q v q = predV v ** { - n3 = \\_ => q.s ! QIndir ; - c2 = v.c2 - } ; - SlashV2A v ap = predV v ** { - n3 = \\a => ap.s ! agrAdj a.gn DIndef ; - c2 = v.c2 - } ; - - ComplSlash vp np = - insertObj - (\\_ => vp.c2.s ++ np.s ! accusative ++ vp.n3 ! np.a) vp ; - - SlashVV v vp = - insertObj (\\a => v.c2.s ++ infVP vp a) (predV v) ** {n3 = vp.n3 ; c2 = vp.c2} ; - - SlashV2VNP v np vp = - insertObj - (\\a => v.c2.s ++ np.s ! accusative ++ v.c3.s ++ infVP vp a) (predV v) - ** {n3 = vp.n3 ; c2 = v.c2} ; - - UseComp comp = insertObj (\\a => comp.s ! agrAdj a.gn DIndef) (predV verbBe) ; - - CompAP ap = ap ; - CompNP np = {s = \\_ => np.s ! accusative} ; - CompAdv a = {s = \\_ => a.s} ; - - AdvVP vp adv = insertAdv adv.s vp ; - AdVVP adv vp = insertAdV adv.s vp ; - - - ReflVP vp = insertObj (\\a => vp.c2.s ++ reflPron a ++ vp.n3 ! a) vp ; - - PassV2 v = - insertObj - (\\a => v.s ! VI (VPtPret (agrAdj a.gn DIndef) Nom)) - (predV verbBecome) ; - -} |
