mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-10-25 09:13:18 -06:00
updates from Codex
This commit is contained in:
1 parent
badbadc59a
commit
a51cc57018
15 files changed
+355
-71
No files matched your search
@@ -3,6 +3,7 @@ concrete CatIce of Cat = CommonX ** open ResIce, Prelude in {
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lincat
|
||||
GN, LN, SN = {s : Str} ;
|
||||
|
||||
--2 Sentences and clauses
|
||||
|
||||
|
||||
@@ -1,6 +1,105 @@
|
||||
--# -path=.:../abstract
|
||||
|
||||
concrete ConstructionIce of Construction = CatIce **
|
||||
open SyntaxIce, SymbolicIce, ParadigmsIce, (L = LexiconIce), (E = ExtraIce), (G = GrammarIce), (R = ResIce), (S = StructuralIce), Prelude in {
|
||||
concrete ConstructionIce of Construction = CatIce **
|
||||
open SyntaxIce, ParadigmsIce, (L = LexiconIce), (G = GrammarIce), (R = ResIce), (S = StructuralIce), Prelude in {
|
||||
|
||||
lincat
|
||||
Timeunit, Hour, Weekday, Month, Monthday, Year = {s : Str} ;
|
||||
|
||||
lin
|
||||
hungry_VP = G.UseComp (G.CompAP (G.PositA (mkA "svangur"))) ;
|
||||
thirsty_VP = G.UseComp (G.CompAP (G.PositA (mkA "þyrstur"))) ;
|
||||
tired_VP = G.UseComp (G.CompAP (G.PositA (mkA "þreyttur"))) ;
|
||||
scared_VP = G.UseComp (G.CompAP (G.PositA (mkA "hræddur"))) ;
|
||||
ill_VP = G.UseComp (G.CompAP (G.PositA (mkA "veikur"))) ;
|
||||
ready_VP = G.UseComp (G.CompAP (G.PositA (mkA "tilbúinn"))) ;
|
||||
|
||||
has_age_VP card = G.UseComp {s = \\a =>
|
||||
card.s ! R.Neutr ! R.Nom ++ "ára" ++ (mkA "gamall").s ! R.APosit R.Strong a.n a.g R.Nom
|
||||
} ;
|
||||
|
||||
n_units_AP card unit adj = {s = \\n,g,d,c =>
|
||||
card.s ! R.Neutr ! R.Nom ++
|
||||
unit.s ! R.Pl ! R.Free ! R.Strong ! R.Gen ++
|
||||
adj.s ! R.APosit d n g c
|
||||
} ;
|
||||
|
||||
n_units_of_NP card unit np = {
|
||||
s = \\_ => card.s ! R.Neutr ! R.Nom ++
|
||||
unit.s ! R.Pl ! R.Free ! R.Strong ! R.Nom ++ "af" ++ np.s ! R.NCase R.Dat ;
|
||||
a = np.a ;
|
||||
isPron = False
|
||||
} ;
|
||||
|
||||
n_unit_CN card unit cn = {
|
||||
s = \\n,sp,d,c => card.s ! R.Neutr ! c ++
|
||||
unit.s ! R.Sg ! R.Free ! R.Strong ! R.Gen ++ cn.s ! n ! sp ! d ! c ;
|
||||
comp = cn.comp ;
|
||||
g = cn.g
|
||||
} ;
|
||||
|
||||
bottle_of_CN np = containerCN (mkN "flaska") np ;
|
||||
cup_of_CN np = containerCN (mkN "bolli") np ;
|
||||
glass_of_CN np = containerCN (mkN "glas") np ;
|
||||
|
||||
timeunitAdv card unit = {s = "í" ++ card.s ! R.Neutr ! R.Nom ++ unit.s} ;
|
||||
timeunitRange c1 c2 unit = {s = "í" ++ c1.s ! R.Neutr ! R.Nom ++ "til" ++ c2.s ! R.Neutr ! R.Nom ++ unit.s} ;
|
||||
|
||||
oneHour = ss "eitt" ; twoHour = ss "tvö" ; threeHour = ss "þrjú" ;
|
||||
fourHour = ss "fjögur" ; fiveHour = ss "fimm" ; sixHour = ss "sex" ;
|
||||
sevenHour = ss "sjö" ; eightHour = ss "átta" ; nineHour = ss "níu" ;
|
||||
tenHour = ss "tíu" ; elevenHour = ss "ellefu" ; twelveHour = ss "tólf" ;
|
||||
thirteenHour = ss "þrettán" ; fourteenHour = ss "fjórtán" ; fifteenHour = ss "fimmtán" ;
|
||||
sixteenHour = ss "sextán" ; seventeenHour = ss "sautján" ; eighteenHour = ss "átján" ;
|
||||
nineteenHour = ss "nítján" ; twentyHour = ss "tuttugu" ;
|
||||
twentyOneHour = ss "tuttugu og eitt" ; twentyTwoHour = ss "tuttugu og tvö" ;
|
||||
twentyThreeHour = ss "tuttugu og þrjú" ; twentyFourHour = ss "tuttugu og fjögur" ;
|
||||
|
||||
timeHour h = {s = "klukkan" ++ h.s} ;
|
||||
timeHourMinute h m = {s = "klukkan" ++ h.s ++ m.s ! R.Neutr ! R.Nom} ;
|
||||
|
||||
weekdayPunctualAdv w = {s = "á" ++ w.s} ;
|
||||
weekdayHabitualAdv w = {s = "á" ++ w.s ++ "dögum"} ;
|
||||
weekdayLastAdv w = {s = "síðasta" ++ w.s} ;
|
||||
weekdayNextAdv w = {s = "næsta" ++ w.s} ;
|
||||
monthAdv m = {s = "í" ++ m.s} ;
|
||||
yearAdv y = {s = "árið" ++ y.s} ;
|
||||
dayMonthAdv d m = {s = d.s ++ m.s} ;
|
||||
monthYearAdv m y = {s = m.s ++ y.s} ;
|
||||
dayMonthYearAdv d m y = {s = d.s ++ m.s ++ y.s} ;
|
||||
intYear i = {s = i.s} ;
|
||||
intMonthday i = {s = i.s ++ BIND ++ "."} ;
|
||||
|
||||
weekdayN w = nameN w.s R.Masc ;
|
||||
monthN m = nameN m.s R.Masc ;
|
||||
weekdayPN w = {s = \\_ => w.s ; g = R.Masc} ;
|
||||
monthPN m = {s = \\_ => m.s ; g = R.Masc} ;
|
||||
|
||||
second_Timeunit = ss "sekúndu" ; minute_Timeunit = ss "mínútur" ;
|
||||
hour_Timeunit = ss "klukkustundir" ; day_Timeunit = ss "daga" ;
|
||||
week_Timeunit = ss "vikur" ; month_Timeunit = ss "mánuði" ; year_Timeunit = ss "ár" ;
|
||||
|
||||
monday_Weekday = ss "mánudag" ; tuesday_Weekday = ss "þriðjudag" ;
|
||||
wednesday_Weekday = ss "miðvikudag" ; thursday_Weekday = ss "fimmtudag" ;
|
||||
friday_Weekday = ss "föstudag" ; saturday_Weekday = ss "laugardag" ;
|
||||
sunday_Weekday = ss "sunnudag" ;
|
||||
|
||||
january_Month = ss "janúar" ; february_Month = ss "febrúar" ;
|
||||
march_Month = ss "mars" ; april_Month = ss "apríl" ; may_Month = ss "maí" ;
|
||||
june_Month = ss "júní" ; july_Month = ss "júlí" ; august_Month = ss "ágúst" ;
|
||||
september_Month = ss "september" ; october_Month = ss "október" ;
|
||||
november_Month = ss "nóvember" ; december_Month = ss "desember" ;
|
||||
|
||||
oper
|
||||
nameN : Str -> R.Gender -> N = \s,g -> lin N {
|
||||
s = \\_,_,_ => s ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
containerCN : N -> NP -> CN = \noun,np -> lin CN {
|
||||
s = \\n,sp,d,c => noun.s ! n ! sp ! c ;
|
||||
comp = \\_,_ => "af" ++ np.s ! R.NCase R.Dat ;
|
||||
g = noun.g
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -14,7 +14,8 @@ concrete GrammarIce of Grammar =
|
||||
TextX,
|
||||
StructuralIce,
|
||||
IdiomIce,
|
||||
TenseX
|
||||
TenseX,
|
||||
NamesIce
|
||||
** open ResIce, Prelude in {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
@@ -27,17 +27,14 @@ concrete IdiomIce of Idiom = CatIce ** open Prelude, ResIce in {
|
||||
cl = mkClause (ip.s ! Masc ! Nom) vp {g = Masc ; n = ip.n ; p = P3}
|
||||
in {s = \\ten,ant,pol,_ => cl.s ! ten ! ant ! pol ! ODir ++ adv.s} ;
|
||||
|
||||
ProgrVP vp = let vvp = predV verbBe in
|
||||
vvp ** {dirObj = \\a => vp.p ! PPres ++ vp.dirObj ! a} ;
|
||||
ProgrVP vp = let vvp = predV verbBe in vvp ** {
|
||||
dirObj = \\a => "að" ++ infVPPlus vp VPInf Pos a
|
||||
} ;
|
||||
|
||||
ImpPl1 vp = { s = let
|
||||
agr = gennumperToAgr Masc Pl P1 ;
|
||||
verb = vp.s ! VPMood Pres Simul ! Pos ! agr
|
||||
in verb.fin ++ verb.inf ++ vp.dirObj ! agr } ;
|
||||
ImpPl1 vp = {s = infVPPlus vp (VPMood Pres Simul) Pos (gennumperToAgr Masc Pl P1)} ;
|
||||
|
||||
ImpP3 np vp = {s = let
|
||||
verb = vp.s ! VPMood Pres Simul ! Pos ! np.a
|
||||
in verbLet.s ! VPres Active Indicative np.a.n np.a.p ++ np.s ! NCase Acc ++ verb.inf} ;
|
||||
ImpP3 np vp = {s = verbLet.s ! VPres Active Indicative np.a.n np.a.p ++
|
||||
np.s ! NCase Acc ++ infVPPlus vp VPInf Pos np.a} ;
|
||||
|
||||
SelfAdvVP vp = vp ** {dirObj = \\a => vp.dirObj ! a ++ reflPron a.p a.n a.g Nom} ;
|
||||
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
concrete LangIce of Lang =
|
||||
GrammarIce
|
||||
,LexiconIce
|
||||
,ConstructionIce
|
||||
,DocumentationIce --# notpresent
|
||||
--,ConstructionIce
|
||||
** {} ;
|
||||
@@ -499,6 +499,14 @@ resource MorphoIce = ResIce ** open Prelude, (Predef=Predef), ResIce in {
|
||||
smá smá (smá + "um") (smá + "rra") ;
|
||||
in nForms2AForms mas fem neut ;
|
||||
|
||||
-- Indeclinable adjectives are frequent among loanwords, adverbial
|
||||
-- modifiers used adjectivally, and the first parts of compounds. The
|
||||
-- old smart paradigm sent these through dSmár/dI, which produced forms
|
||||
-- such as "fyrirframr" and "a posteriorii".
|
||||
dInvar : Str -> AForms = \s ->
|
||||
let forms = nForms8 s s s s s s s s
|
||||
in nForms2AForms forms forms forms ;
|
||||
|
||||
dFarinn : Str -> AForms = \farinn ->
|
||||
let
|
||||
farin = init farinn ;
|
||||
@@ -770,7 +778,7 @@ resource MorphoIce = ResIce ** open Prelude, (Predef=Predef), ResIce in {
|
||||
köll = a2ö kall ;
|
||||
kölluð = köll + "uð";
|
||||
presInd = tForms6 kalla (kalla + "r") (kalla + "r") (köll + "um") (kall + "ið") kalla ;
|
||||
pastInd = tForms6 kallaði (kallaði + "r") kallaði (kölluð + "um") (kölluð + "u") (kölluð + "u") ;
|
||||
pastInd = tForms6 kallaði (kallaði + "r") kallaði (kölluð + "um") (kölluð + "uð") (kölluð + "u") ;
|
||||
presSub = tForms6 (kall + "i") (kall + "ir") (kall + "i") (köll + "um") (kall + "ið") (kall + "i") ;
|
||||
pastSub = tForms6 kallaði (kallaði + "r") kallaði (kölluð + "um") (kölluð + "uð") (kölluð + "u")
|
||||
in tForms2MForms presInd pastInd presSub pastSub ;
|
||||
@@ -932,6 +940,8 @@ resource MorphoIce = ResIce ** open Prelude, (Predef=Predef), ResIce in {
|
||||
PStrong Pl Neutr c => caseList (pastPartS ! Neutr ! 4) (pastPartS ! Neutr ! 5) (pastPartS ! Neutr ! 6) (pastPartS ! Neutr ! 7) ! c ;
|
||||
PPres => presPart
|
||||
} ;
|
||||
refl = NonReflexive ;
|
||||
part = [] ;
|
||||
} ;
|
||||
|
||||
-- AR 2019-08-02: deponent verbs use the Middle voice everywhere, instead of Active
|
||||
@@ -1083,11 +1093,12 @@ resource MorphoIce = ResIce ** open Prelude, (Predef=Predef), ResIce in {
|
||||
ðiditi : Str -> Str = \stem -> case stem of {
|
||||
-- ði
|
||||
_ + #vowel => stem + "ði" ;
|
||||
front + ("f" | "j") => front + "ði" ;
|
||||
_ + "f" => stem + "ði" ;
|
||||
front + "j" => front + "ði" ;
|
||||
_ + #vowel + ("r" | "rf" | "rg") => stem + "ði" ;
|
||||
_ + "rr" => stem + "ði" ; -- somethimes - otherwise + "ti", e.g., sperra-sperrti
|
||||
-- ti
|
||||
front@(_ + #consonant) + "t" => front + "i" ;
|
||||
_ + "t" => stem + "i" ;
|
||||
_ + ("p" | "t" | "k") => stem + "ti" ;
|
||||
front@(_ + "r") + "ð" => front + "ti" ;
|
||||
front@(_ + ("l" | "n")) + "d" => front + "ti" ; -- usually otherwise + "di", e.g., ýlda-ýldi, senda-sendi
|
||||
|
||||
@@ -219,11 +219,15 @@ concrete NounIce of Noun = CatIce ** open MorphoIce, ResIce, Prelude in {
|
||||
-- 2 Possessive and partitive constructs
|
||||
|
||||
PossNP cn np = {
|
||||
s = \\n,s,d,c => case np.isPron of {
|
||||
True => cn.s ! n ! Suffix ! d ! Nom ++ np.s ! NPPoss n cn.g c ;
|
||||
False => cn.s ! n ! Free ! d ! c ++ np.s ! NPPoss n cn.g Gen
|
||||
-- Keep the possessor in the complement field. Besides preserving
|
||||
-- the case of the head, this lets an outer determiner occur directly
|
||||
-- after the head ("meðferð hans barnanna", not
|
||||
-- "meðferð barnanna hans").
|
||||
s = \\n,s,d,c => cn.s ! n ! s ! d ! c ;
|
||||
comp = \\n,c => cn.comp ! n ! c ++ case np.isPron of {
|
||||
True => np.s ! NPPoss n cn.g Gen ;
|
||||
False => np.s ! NCase Gen
|
||||
} ;
|
||||
comp = cn.comp ;
|
||||
g = cn.g
|
||||
} ;
|
||||
|
||||
@@ -250,4 +254,13 @@ concrete NounIce of Noun = CatIce ** open MorphoIce, ResIce, Prelude in {
|
||||
} ;
|
||||
|
||||
DetDAP det = det ;
|
||||
|
||||
QuantityNP dec mu = {
|
||||
s = \\_ => case mu.isPre of {
|
||||
True => mu.s ++ dec.s ! NCard Pl Neutr Nom ;
|
||||
False => dec.s ! NCard Pl Neutr Nom ++ mu.s
|
||||
} ;
|
||||
a = gennumperToAgr Neutr Pl P3 ;
|
||||
isPron = False
|
||||
} ;
|
||||
}
|
||||
@@ -101,6 +101,7 @@ concrete NumeralIce of Numeral = CatIce [Numeral,Digits,Decimal] ** open Prelude
|
||||
pot1 d = {s = d.s ! ten ; size = pl} ;
|
||||
pot1plus d e = { s = \\ngc => d.s ! ten ! ngc ++ "og" ++ e.s ! unit ! ngc ; size = pl} ;
|
||||
pot1as2 n = n ;
|
||||
pot21 = {s = hundrað ; size = pl} ;
|
||||
pot2 d = { s = \\ngc => (omitsg (d.s ! unit ! NCard Sg Neutr Nom) d.size) ++ hundrað ! ngc ; size = pl} ;
|
||||
pot2plus d e = {
|
||||
s = table {
|
||||
@@ -110,6 +111,7 @@ concrete NumeralIce of Numeral = CatIce [Numeral,Digits,Decimal] ** open Prelude
|
||||
size = pl
|
||||
} ;
|
||||
pot2as3 n = n ;
|
||||
pot31 = {s = þúsund ; size = pl} ;
|
||||
pot3 d = { s = \\ngc => (omitsg (d.s ! NCard Sg Neutr Nom) d.size) ++ þúsund ! ngc ; size = pl} ;
|
||||
pot3plus d e = {
|
||||
s = table {
|
||||
@@ -119,8 +121,39 @@ concrete NumeralIce of Numeral = CatIce [Numeral,Digits,Decimal] ** open Prelude
|
||||
size = pl
|
||||
} ;
|
||||
pot3as4 n = n ;
|
||||
pot3decimal d = {s = \\_ => d.s ! NCard Pl Neutr Nom ++ "þúsund" ; size = pl} ;
|
||||
|
||||
pot41 = {s = \\co => case co of {
|
||||
NCard _ _ c => pot01.s ! unit ! NCard Sg Fem c ++ milljón ! Sg ! c ;
|
||||
NOrd n g c => (mkRegOrd "milljónast" "milljónust") ! n ! g ! c
|
||||
} ; size = pl} ;
|
||||
pot4 d = {s = \\co => d.s ! NCard Pl Fem (cardOrdCase co) ++ case co of {
|
||||
NCard _ _ c => milljón ! Pl ! c ;
|
||||
NOrd n g c => (mkRegOrd "milljónast" "milljónust") ! n ! g ! c
|
||||
} ; size = pl} ;
|
||||
pot4plus d e = {s = \\co => d.s ! NCard Pl Fem (cardOrdCase co) ++ milljón ! Pl ! (cardOrdCase co) ++
|
||||
case co of {
|
||||
NCard n g c => e.s ! NCard n g c ;
|
||||
NOrd n g c => "og" ++ e.s ! NOrd n g c
|
||||
} ; size = pl} ;
|
||||
|
||||
pot4as5 n = n ;
|
||||
pot4decimal d = {s = \\co => d.s ! NCard Pl Neutr Nom ++ milljón ! Pl ! (cardOrdCase co) ; size = pl} ;
|
||||
|
||||
pot51 = {s = \\co => case co of {
|
||||
NCard _ _ c => pot01.s ! unit ! NCard Sg Masc c ++ milljarður ! Sg ! c ;
|
||||
NOrd n g c => (mkRegOrd "milljarðast" "milljörðust") ! n ! g ! c
|
||||
} ; size = pl} ;
|
||||
pot5 d = {s = \\co => d.s ! NCard Pl Masc (cardOrdCase co) ++ case co of {
|
||||
NCard _ _ c => milljarður ! Pl ! c ;
|
||||
NOrd n g c => (mkRegOrd "milljarðast" "milljörðust") ! n ! g ! c
|
||||
} ; size = pl} ;
|
||||
pot5plus d e = {s = \\co => d.s ! NCard Pl Masc (cardOrdCase co) ++ milljarður ! Pl ! (cardOrdCase co) ++
|
||||
case co of {
|
||||
NCard n g c => e.s ! NCard n g c ;
|
||||
NOrd n g c => "og" ++ e.s ! NOrd n g c
|
||||
} ; size = pl} ;
|
||||
pot5decimal d = {s = \\co => d.s ! NCard Pl Neutr Nom ++ milljarður ! Pl ! (cardOrdCase co) ; size = pl} ;
|
||||
|
||||
oper
|
||||
|
||||
@@ -168,6 +201,21 @@ concrete NumeralIce of Numeral = CatIce [Numeral,Digits,Decimal] ** open Prelude
|
||||
NCard _ _ _ => "þúsund" ;
|
||||
NOrd n g c => (mkRegOrd "þúsundast" "þúsundust") ! n ! g ! c
|
||||
} ;
|
||||
|
||||
milljón : Number => Case => Str = table {
|
||||
Sg => caseList "milljón" "milljón" "milljón" "milljónar" ;
|
||||
Pl => caseList "milljónir" "milljónir" "milljónum" "milljóna"
|
||||
} ;
|
||||
|
||||
milljarður : Number => Case => Str = table {
|
||||
Sg => caseList "milljarður" "milljarð" "milljarði" "milljarðs" ;
|
||||
Pl => caseList "milljarðar" "milljarða" "milljörðum" "milljarða"
|
||||
} ;
|
||||
|
||||
cardOrdCase : CardOrd -> Case = \co -> case co of {
|
||||
NCard _ _ c => c ;
|
||||
NOrd _ _ c => c
|
||||
} ;
|
||||
|
||||
sizeToNumber : Size -> Number = \size -> case size of {
|
||||
sg => Sg ;
|
||||
|
||||
@@ -56,6 +56,56 @@ resource ParadigmsIce = open
|
||||
dative : Case ;
|
||||
genitive : Case ;
|
||||
|
||||
--2 Invariant closed categories
|
||||
|
||||
mkPredet : Str -> Predet = \word -> lin Predet {
|
||||
s = \\_,_,_ => word
|
||||
} ;
|
||||
|
||||
mkCard : Str -> Number -> Card = \word, number -> lin Card {
|
||||
s = \\_,_ => word ;
|
||||
n = number
|
||||
} ;
|
||||
|
||||
mkACard : Str -> ACard = \word -> lin ACard {
|
||||
s = word
|
||||
} ;
|
||||
|
||||
mkIDet : Str -> Number -> IDet = \word, number -> lin IDet {
|
||||
s = \\_,_ => word ;
|
||||
n = number
|
||||
} ;
|
||||
|
||||
mkDet : Str -> Number -> Det = \word, number -> lin Det {
|
||||
s = \\_,_ => word ;
|
||||
pron = \\_,_ => [] ;
|
||||
n = number ;
|
||||
b = Free ;
|
||||
d = Strong
|
||||
} ;
|
||||
|
||||
mkQuant : Str -> Quant = \word -> lin Quant {
|
||||
s = \\_,_,_ => word ;
|
||||
b = Free ;
|
||||
d = Strong ;
|
||||
isPron = False
|
||||
} ;
|
||||
|
||||
detFromA : A -> Number -> Det = \adj, number -> lin Det {
|
||||
s = \\gender, c => adj.s ! APosit Strong number gender c ;
|
||||
pron = \\_,_ => [] ;
|
||||
n = number ;
|
||||
b = Free ;
|
||||
d = Strong
|
||||
} ;
|
||||
|
||||
quantFromA : A -> Quant = \adj -> lin Quant {
|
||||
s = \\number, gender, c => adj.s ! APosit Strong number gender c ;
|
||||
b = Free ;
|
||||
d = Strong ;
|
||||
isPron = False
|
||||
} ;
|
||||
|
||||
--2 Nouns
|
||||
|
||||
-- Nouns are constructed by the function $mkN$, which takes a varying
|
||||
@@ -293,8 +343,17 @@ resource ParadigmsIce = open
|
||||
mkA : (_,_,_ : Str) -> A = mk3A ;
|
||||
} ;
|
||||
|
||||
mk1A : Str -> A = \s -> lin A (aForms2Adjective
|
||||
(weakPosit s s) (strongPosit1 s) (compar1 s) (weakSuperl s s) (strongSuperl1 s) (regAAdv1 s)) ; --- AR 2019-08-08: second arguments of weak declensions were [], producing only endings
|
||||
mk1A : Str -> A = \s -> case s of {
|
||||
-- These are not Icelandic masculine citation forms and must not be
|
||||
-- supplied with Icelandic agreement suffixes.
|
||||
_ + "ar" => invarA s ;
|
||||
_ + "i" => invarA s ;
|
||||
_ => lin A (aForms2Adjective
|
||||
(weakPosit s s) (strongPosit1 s) (compar1 s) (weakSuperl s s) (strongSuperl1 s) (regAAdv1 s))
|
||||
} ; --- AR 2019-08-08: second arguments of weak declensions were [], producing only endings
|
||||
|
||||
invarA : Str -> A = \s -> lin A (aForms2Adjective
|
||||
(dInvar s) (dInvar s) (dInvar s) (dInvar s) (dInvar s) s) ;
|
||||
|
||||
mk2A : (_,_ : Str) -> A = \mas,fem -> case mas of {
|
||||
_ + ("ll"|"nn") => mk1A mas ; ---- AR 2019-08-08 ; the case below does not work
|
||||
@@ -314,8 +373,8 @@ resource ParadigmsIce = open
|
||||
_ + "ill" => dLítill s ;
|
||||
#consonant* + #vowel + ("ll" | "nn") => dSeinn s ;
|
||||
stem + "ur" => dFalur s (a2ö stem) ;
|
||||
_ + "i" => dI s ; ---- AR 2019-08-02 guess to prevent failure
|
||||
_ => dSmár s ---- AR 2019-08-02 guess to prevent failure
|
||||
_ + ("r" | "s" | (#consonant + "n")) => dDýr s ;
|
||||
_ => dInvar s
|
||||
} ;
|
||||
|
||||
strongPosit2 : (_,_ : Str) -> AForms = \mas,fem -> case <mas,fem> of {
|
||||
@@ -459,9 +518,16 @@ resource ParadigmsIce = open
|
||||
plFemNom plFemAcc plFemDat plFemGen plNeutNom plNeutAcc plNeutDat plNeutGen
|
||||
weakSgMascNom weakSgMascAccDatGen weakSgFemNom weakSgFemAccDatGen weakSgNeut weakPl flogið) ;
|
||||
|
||||
mkV : V -> Str -> V = \v,part -> v ;
|
||||
mkV : V -> Str -> V = \v,part -> v ** {part = v.part ++ part} ;
|
||||
};
|
||||
|
||||
prefixV : Str -> V -> V = \prefix, v -> lin V {
|
||||
s = \\form => prefix + v.s ! form ;
|
||||
p = \\form => prefix + v.p ! form ;
|
||||
refl = v.refl ;
|
||||
part = v.part
|
||||
} ;
|
||||
|
||||
depV : V -> V = \verb -> lin V (deponentVerb verb) ;
|
||||
|
||||
mk1V : Str -> V = \inf ->
|
||||
@@ -488,7 +554,10 @@ resource ParadigmsIce = open
|
||||
oper mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = mkPrep "" accusative}) ;
|
||||
oper mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = mkPrep "" accusative}) ;
|
||||
|
||||
oper reflV : V -> V = \v -> v;
|
||||
oper reflV = overload {
|
||||
reflV : V -> V = \v -> lin V (v ** {refl = Reflexive Acc}) ;
|
||||
reflV : V -> Case -> V = \v,c -> lin V (v ** {refl = Reflexive c})
|
||||
} ;
|
||||
|
||||
|
||||
indsub1 : Str -> MForms = \inf -> case inf of {
|
||||
@@ -497,7 +566,13 @@ resource ParadigmsIce = open
|
||||
stem@(front + "ý" + c) + "ja" => cTelja inf stem (ðiditi (front + "ú" + c)) ;
|
||||
stem@(front + "æ" + c) + "ja" => cTelja inf stem (ðiditi (front + "á" + c)) ;
|
||||
stem + "ja" => cTelja inf stem (ðiditi stem) ;
|
||||
stem + "a" => cDæma inf (stem + "i") (ðiditi stem)
|
||||
-- With only the infinitive available, the productive -aði class is
|
||||
-- a substantially better default (borðaði, dansaði, kallaði) than
|
||||
-- the old -di/-ti guess (borðdi, dansdi). Irregular and i-present
|
||||
-- verbs can still use the multi-principal-part overloads.
|
||||
stem@(_ + ("r" | "m" | "f" | "gn" | "nd" | "tt")) + "a"
|
||||
=> cDæma inf (stem + "i") (ðiditi stem) ;
|
||||
_ + "a" => cKalla inf (ðiditi inf)
|
||||
} ;
|
||||
|
||||
indsub2 : (_,_ : Str) -> MForms = \telja,tel -> case <telja,tel> of {
|
||||
|
||||
@@ -20,8 +20,7 @@ concrete PhraseIce of Phrase = CatIce ** open Prelude, ResIce in {
|
||||
|
||||
UttAdv adv = adv ;
|
||||
|
||||
UttVP vp = let verb = vp.s ! VPInf ! Pos ! {g = Masc ; n = Sg ; p = P3}
|
||||
in {s = verb.fin ++ verb.a1.p1 ++ verb.inf ++ verb.a1.p2} ;
|
||||
UttVP vp = {s = infVP vp} ;
|
||||
|
||||
UttCN cn = {s = cn.s ! Sg ! Free ! Strong ! Nom ++ cn.comp ! Sg ! Nom} ;
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ concrete QuestionIce of Question = CatIce ** open ResIce, Prelude in {
|
||||
in {s = \\ten,ant,pol,_ => cl.s ! ten ! ant ! pol ! ODir} ;
|
||||
|
||||
QuestSlash ip cls = {
|
||||
s = \\ten,ant,pol,_ => ip.s ! Masc ! Nom ++ cls.s ! ten ! ant ! pol ! ODir ++ cls.c2.s
|
||||
s = \\ten,ant,pol,_ => cls.c2.s ++ ip.s ! Masc ! cls.c2.c ++ cls.s ! ten ! ant ! pol ! OQuestion
|
||||
} ;
|
||||
|
||||
QuestIComp icomp np =
|
||||
|
||||
+21
-9
@@ -37,6 +37,7 @@ resource ResIce = ParamX ** open Prelude in {
|
||||
Mood = Indicative | Subjunctive ;
|
||||
|
||||
Voice = Active | Middle ;
|
||||
Reflexivity = NonReflexive | Reflexive Case ;
|
||||
|
||||
PForm = PWeak Number Gender Case | PStrong Number Gender Case | PPres ;
|
||||
|
||||
@@ -130,6 +131,8 @@ param
|
||||
Verb : Type = {
|
||||
s : VForm => Str ;
|
||||
p : PForm => Str ;
|
||||
part : Str ;
|
||||
refl : Reflexivity ;
|
||||
} ;
|
||||
|
||||
mkVoice : Voice -> Str -> Str = \v,s ->
|
||||
@@ -197,6 +200,8 @@ param
|
||||
PStrong Pl Neutr c => caseList plNeutNom plNeutAcc plNeutDat plNeutGen ! c ;
|
||||
PPres => fljúgandi
|
||||
} ;
|
||||
refl = NonReflexive ;
|
||||
part = [] ;
|
||||
} ;
|
||||
|
||||
VP : Type = {
|
||||
@@ -228,21 +233,28 @@ param
|
||||
} ;
|
||||
|
||||
predV : Verb -> VP = \v -> {
|
||||
s = \\vpform,pol,agr => case vpform of {
|
||||
VPInf => vf (v.s ! vInf) [] (negation pol) False ;
|
||||
VPImp => vf (v.s ! VImp Active agr.n) [] (negation pol) False ;
|
||||
VPMood ten ant => vff v ten ant pol agr
|
||||
s = \\vpform,pol,agr =>
|
||||
let verb = case vpform of {
|
||||
VPInf => vf (v.s ! vInf) [] (negation pol) False ;
|
||||
VPImp => vf (v.s ! VImp Active agr.n) [] (negation pol) False ;
|
||||
VPMood ten ant => vff v ten ant pol agr
|
||||
}
|
||||
in verb ** {a1 = <verb.a1.p1, verb.a1.p2 ++ v.part>} ;
|
||||
p = \\pform => v.p ! pform ++ v.part ;
|
||||
indObj = \\agr => case v.refl of {
|
||||
NonReflexive => [] ;
|
||||
Reflexive c => reflPron agr.p agr.n agr.g c
|
||||
} ;
|
||||
p = \\pform => v.p ! pform ;
|
||||
indObj = \\_ => [] ;
|
||||
dirObj = \\_ => [] ;
|
||||
a2 = [] ;
|
||||
indShift = False ;
|
||||
indShift = case v.refl of {
|
||||
NonReflexive => False ;
|
||||
Reflexive _ => True
|
||||
} ;
|
||||
dirShift = False
|
||||
} ;
|
||||
|
||||
predVV : { s : VForm => Str ; p : PForm => Str ; sup : Voice => Str ; c2 : Preposition } -> VP = \vv ->
|
||||
predV {s = vv.s ; p = vv.p} ;
|
||||
predVV : Verb ** {c2 : Preposition} -> VP = \vv -> predV vv ;
|
||||
|
||||
|
||||
negation : Polarity -> Str = \pol -> case pol of {
|
||||
|
||||
@@ -46,6 +46,8 @@ concrete SentenceIce of Sentence = CatIce ** open Prelude, ResIce in {
|
||||
} ;
|
||||
} ;
|
||||
|
||||
AdvImp adv imp = {s = \\pol,num => adv.s ++ imp.s ! pol ! num} ;
|
||||
|
||||
--2 Embedded sentences
|
||||
|
||||
EmbedS ss = {s = "að" ++ ss.s} ;
|
||||
|
||||
@@ -141,6 +141,14 @@ concrete StructuralIce of Structural = CatIce **
|
||||
but_PConj = ss "en" ;
|
||||
how_IAdv = ss "hvernig" ;
|
||||
how8much_IAdv = ss "hversu mikið" ;
|
||||
how8many_IDet = {
|
||||
s = table {
|
||||
Masc => caseList "hversu margir" "hversu marga" "hversu mörgum" "hversu margra" ;
|
||||
Fem => caseList "hversu margar" "hversu margar" "hversu mörgum" "hversu margra" ;
|
||||
Neutr => caseList "hversu mörg" "hversu mörg" "hversu mörgum" "hversu margra"
|
||||
} ;
|
||||
n = Pl
|
||||
} ;
|
||||
if_Subj = ss "ef" ;
|
||||
please_Voc = ss "vinsamlegast" ;
|
||||
when_Subj = ss "þegar" ;
|
||||
@@ -158,34 +166,34 @@ concrete StructuralIce of Structural = CatIce **
|
||||
-- dont be afraid to be awkward :)
|
||||
|
||||
he_Pron = mkPronPers "hann" "hann" "honum" "hans"
|
||||
"sinn" "sinn" "sínum" "síns"
|
||||
"sín" "sína" "sinni" "sinnar"
|
||||
"sitt" "sitt" "sínu" "síns"
|
||||
"sínir" "sína" "sínum" "sinna"
|
||||
"sínar" "sínar" "sín" "sín" Masc Sg P3 ;
|
||||
"sinn" "hans" "hans" "hans"
|
||||
"sín" "hans" "hans" "hans"
|
||||
"sitt" "hans" "hans" "hans"
|
||||
"sínir" "hans" "hans" "hans"
|
||||
"sínar" "hans" "hans" "hans" Masc Sg P3 ;
|
||||
|
||||
she_Pron = mkPronPers "hún" "hana" "henni" "hennar"
|
||||
"sinn" "sinn" "sínum" "síns"
|
||||
"sín" "sína" "sinni" "sinnar"
|
||||
"sitt" "sitt" "sínu" "síns"
|
||||
"sínir" "sína" "sínum" "sinna"
|
||||
"sínar" "sínar" "sín" "sín" Fem Sg P3 ;
|
||||
she_Pron = mkPronPers "hún" "hana" "henni" "hennar"
|
||||
"sinn" "hennar" "hennar" "hennar"
|
||||
"sín" "hennar" "hennar" "hennar"
|
||||
"sitt" "hennar" "hennar" "hennar"
|
||||
"sínir" "hennar" "hennar" "hennar"
|
||||
"sínar" "hennar" "hennar" "hennar" Fem Sg P3 ;
|
||||
|
||||
it_Pron = mkPronPers "það" "það" "því" "þess"
|
||||
"sinn" "sinn" "sínum" "síns"
|
||||
"sín" "sína" "sinni" "sinnar"
|
||||
"sitt" "sitt" "sínu" "síns"
|
||||
"sínir" "sína" "sínum" "sinna"
|
||||
"sínar" "sínar" "sín" "sín" Neutr Sg P3 ;
|
||||
"sinn" "þess" "þess" "þess"
|
||||
"sín" "þess" "þess" "þess"
|
||||
"sitt" "þess" "þess" "þess"
|
||||
"sínir" "þess" "þess" "þess"
|
||||
"sínar" "þess" "þess" "þess" Neutr Sg P3 ;
|
||||
|
||||
-- "They" depends on gender,i.e. has 3x4 forms for personal pronouns
|
||||
-- the masculine is given here, neuter and feminine are given in Extra
|
||||
they_Pron = mkPronPers "þeir" "þá" "þeim" "þeirra"
|
||||
"sinn" "sinn" "sínum" "síns"
|
||||
"sín" "sína" "sinni" "sinnar"
|
||||
"sitt" "sitt" "sínu" "síns"
|
||||
"sínir" "sína" "sínum" "sinna"
|
||||
"sínar" "sínar" "sín" "sín" Masc Pl P3 ;
|
||||
"sinn" "þeirra" "þeirra" "þeirra"
|
||||
"sín" "þeirra" "þeirra" "þeirra"
|
||||
"sitt" "þeirra" "þeirra" "þeirra"
|
||||
"sínir" "þeirra" "þeirra" "þeirra"
|
||||
"sínar" "þeirra" "þeirra" "þeirra" Masc Pl P3 ;
|
||||
|
||||
-- the possesive equivalent, vor, is mostly used in elevated style.
|
||||
we_Pron = mkPronPers "við" "okkur" "okkur" "okkar"
|
||||
@@ -212,14 +220,32 @@ concrete StructuralIce of Structural = CatIce **
|
||||
-- only in the nominative), and hvert/hvað corresponds to what.
|
||||
whatSg_IP = {
|
||||
s = \\_ => caseList "hvað" "hvað" "hverju" "hvers" ;
|
||||
n = Pl
|
||||
n = Sg
|
||||
} ;
|
||||
|
||||
whatPl_IP = {
|
||||
s = \\_ => caseList "hver" "hver" "hverjum" "hverra" ;
|
||||
n = Sg
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
|
||||
no_Quant = {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Masc => caseList "enginn" "engan" "engum" "engins" ;
|
||||
Fem => caseList "engin" "enga" "engri" "engrar" ;
|
||||
Neutr => caseList "ekkert" "ekkert" "engu" "einskis"
|
||||
} ;
|
||||
Pl => table {
|
||||
Masc => caseList "engir" "enga" "engum" "engra" ;
|
||||
Fem => caseList "engar" "engar" "engum" "engra" ;
|
||||
Neutr => caseList "engin" "engin" "engum" "engra"
|
||||
}
|
||||
} ;
|
||||
b = Free ;
|
||||
d = Strong ;
|
||||
isPron = False
|
||||
} ;
|
||||
|
||||
-- whoPl_IP = mkIP "who" "whom" "whose" plural ;
|
||||
whoPl_IP = {
|
||||
s = table {
|
||||
|
||||
@@ -5,7 +5,7 @@ concrete VerbIce of Verb = CatIce ** open ResIce, Prelude in {
|
||||
lin
|
||||
UseV v = predV v;
|
||||
|
||||
ComplVV vv vp = insertDir (predV vv) (\\_ => vv.c2.s ++ infVP vp) ;
|
||||
ComplVV vv vp = insertDir (predV vv) (\\a => vv.c2.s ++ infVPPlus vp VPInf Pos a) ;
|
||||
|
||||
ComplVS vs s = insertDir (predV vs) (\\_ => s.s) ;
|
||||
|
||||
@@ -29,17 +29,17 @@ concrete VerbIce of Verb = CatIce ** open ResIce, Prelude in {
|
||||
|
||||
ComplSlash vps np = insertDir vps (\\a => vps.c2.s ++ np.s ! NCase vps.c2.c ++ vps.dirObj ! np.a );
|
||||
|
||||
SlashVV vv vps = (insertDir (predV vv) (\\_ => vv.c2.s ++ infVP vps)) ** {c2 = vps.c2} ;
|
||||
SlashVV vv vps = (insertDir (predV vv) (\\a => vv.c2.s ++ infVPPlus vps VPInf Pos a)) ** {c2 = vps.c2} ;
|
||||
|
||||
SlashV2VNP v2v np vps = (insertDir
|
||||
(predV v2v)
|
||||
(\\_ => v2v.c2.s ++ np.s ! NCase v2v.c2.c ++ v2v.c3.s ++ infVP vps)
|
||||
(\\_ => v2v.c2.s ++ np.s ! NCase v2v.c2.c ++ v2v.c3.s ++ infVPPlus vps VPInf Pos np.a)
|
||||
) ** {c2 = vps.c2} ;
|
||||
|
||||
ReflVP vps = (insertInd
|
||||
vps
|
||||
(\\a => vps.indObj ! a ++ reflPron a.p a.n a.g vps.c2.c ++ vps.c2.s)
|
||||
) ** {indShift = True} ;
|
||||
ReflVP vps = (insertDir
|
||||
vps
|
||||
(\\a => vps.c2.s ++ reflPron a.p a.n a.g vps.c2.c ++ vps.dirObj ! a)
|
||||
) ** {dirShift = True} ;
|
||||
|
||||
UseComp comp = insertDir (predV verbBe) (\\a => comp.s ! a) ;
|
||||
|
||||
@@ -88,7 +88,7 @@ concrete VerbIce of Verb = CatIce ** open ResIce, Prelude in {
|
||||
} ;
|
||||
|
||||
insertInd : ResIce.VP -> (Agr => Str) -> ResIce.VP =\vp,obj -> vp ** {
|
||||
indObj = obj
|
||||
indObj = \\a => vp.indObj ! a ++ obj ! a
|
||||
} ;
|
||||
|
||||
insertAdV : Str -> ResIce.VP -> ResIce.VP = \adv,vp -> vp ** {
|
||||
|
||||
Reference in new issue
Block a user