mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-28 01:18:57 -06:00
Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl
This commit is contained in:
@@ -58,7 +58,7 @@ categories.png: categories.dot
|
|||||||
|
|
||||||
categories-imagemap.html: categories.dot
|
categories-imagemap.html: categories.dot
|
||||||
rm -f $@
|
rm -f $@
|
||||||
echo '<img src="categories.png" usemap="#categories">' > $@
|
echo '<img src="categories.png" usemap="#categoriesmap" alt="RGL categories">' > $@
|
||||||
dot -Tcmapx $^ >> $@
|
dot -Tcmapx $^ >> $@
|
||||||
|
|
||||||
api-examples.gfs: api-examples.txt MkExx.hs
|
api-examples.gfs: api-examples.txt MkExx.hs
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
digraph categories {
|
digraph categoriesmap {
|
||||||
|
|
||||||
size = "11,11" ;
|
size = "11,11" ;
|
||||||
node [href="#\N"];
|
node [href="#\N"];
|
||||||
|
|||||||
@@ -13,18 +13,16 @@ to the relevant source files, which give more information. Some of the files hav
|
|||||||
not yet been prepared so that the machine generated documentation has the nicest
|
not yet been prepared so that the machine generated documentation has the nicest
|
||||||
possible format.
|
possible format.
|
||||||
|
|
||||||
|
% These hardcoded TOC links (chapter 4 onwards) need to be updated as new languages are added.
|
||||||
|
|
||||||
The main contents are:
|
The main contents are:
|
||||||
- [Chapter 1 #toc2]: categories, with links to the functions for
|
- [Chapter 1 #toc2]: categories, with links to the functions for constructing trees in them.
|
||||||
constructing trees in them.
|
- [Chapter 2 #toc5]: syntactic construction functions, with cross-links and examples.
|
||||||
- [Chapter 2 #toc5]: syntactic construction functions, with cross-links and
|
- [Chapter 3 #toc85]: morphological (lexical) paradigms.
|
||||||
examples.
|
- [Chapter 4 #toc121]: additional libraries.
|
||||||
- [Chapter 3 #toc85]: morphological paradigms.
|
- [Chapter 5 #toc127]: how to "browse" the library by loading the grammars into the ``gf`` command editor.
|
||||||
- [Chapter 4 #toc120]: additional libraries.
|
- [Chapter 6 #toc128]: a brief example of how application grammars can use the resource modules.
|
||||||
- [Chapter 5 #toc126]: how to "browse" the library by
|
- [Detailed table of contents #toc129].
|
||||||
loading the grammars into the ``gf`` command editor.
|
|
||||||
- [Chapter 6 #toc127]: a brief example of how application grammars can
|
|
||||||
use the resource modules.
|
|
||||||
- [Detailed table of contents #toc128].
|
|
||||||
|
|
||||||
|
|
||||||
The [RGL Browser http://www.grammaticalframework.org/~john/rgl-browser/] tool allows you to interactively browse through
|
The [RGL Browser http://www.grammaticalframework.org/~john/rgl-browser/] tool allows you to interactively browse through
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ $endfor$
|
|||||||
$if(title)$
|
$if(title)$
|
||||||
<header id="title-block-header">
|
<header id="title-block-header">
|
||||||
<a href="$rel-root$" title="Home">
|
<a href="$rel-root$" title="Home">
|
||||||
<img src="$rel-root$/doc/Logos/gf1.svg" height="200px" class="float-md-right ml-3 mb-3 bg-white" alt="GF Logo">
|
<img src="$rel-root$/doc/Logos/gf1.svg" height="200" class="float-md-right ml-3 mb-3 bg-white" alt="GF Logo">
|
||||||
</a>
|
</a>
|
||||||
<h1 class="title">$title$</h1>
|
<h1 class="title">$title$</h1>
|
||||||
$if(subtitle)$
|
$if(subtitle)$
|
||||||
@@ -113,8 +113,7 @@ $endif$
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-6 col-sm-3">
|
<div class="col-6 col-sm-3">
|
||||||
<h6 class="text-muted">Contribute</i>
|
<h6 class="text-muted">Contribute</h6>
|
||||||
</h6>
|
|
||||||
<ul class="list-unstyled">
|
<ul class="list-unstyled">
|
||||||
<li><a href="http://groups.google.com/group/gf-dev">Mailing List</a></li>
|
<li><a href="http://groups.google.com/group/gf-dev">Mailing List</a></li>
|
||||||
<li><a href="https://github.com/GrammaticalFramework/gf-core/issues">Issue Tracker</a></li>
|
<li><a href="https://github.com/GrammaticalFramework/gf-core/issues">Issue Tracker</a></li>
|
||||||
@@ -129,8 +128,8 @@ $endif$
|
|||||||
<a href="https://github.com/GrammaticalFramework/gf-rgl">RGL</a> ·
|
<a href="https://github.com/GrammaticalFramework/gf-rgl">RGL</a> ·
|
||||||
<a href="https://github.com/GrammaticalFramework/gf-contrib">Contributions</a>
|
<a href="https://github.com/GrammaticalFramework/gf-contrib">Contributions</a>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
</div>
|
||||||
<div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
$for(include-after)$
|
$for(include-after)$
|
||||||
$include-after$
|
$include-after$
|
||||||
|
|||||||
@@ -6,8 +6,16 @@ oper
|
|||||||
|
|
||||||
vow : pattern Str = #("َ" | "ِ" | "ُ" | "ً" | "ٍ" | "ٌ") ;
|
vow : pattern Str = #("َ" | "ِ" | "ُ" | "ً" | "ٍ" | "ٌ") ;
|
||||||
|
|
||||||
|
vstar : pattern Str = #("َ"|"ِ"|"ُ"|"ً"|"ٍ"|"ٌ"|"ْ"|"ا"|"ي"|"و") ; -- long or short vowels
|
||||||
|
|
||||||
|
astar : pattern Str = #("َ"|"ً"|"ا") ; -- a: short, nunated or long
|
||||||
|
istar : pattern Str = #("ِ"|"ي"|"يْ") ; -- i: short, long or long with sukun
|
||||||
|
ustar : pattern Str = #("ُ"|"و"|"وْ") ; -- u: short, long or long with sukun
|
||||||
|
|
||||||
weak : pattern Str = #("و"|"ي") ;
|
weak : pattern Str = #("و"|"ي") ;
|
||||||
|
|
||||||
|
hamzaseat : pattern Str = #("أ"|"ؤ"|"ئ") ;
|
||||||
|
|
||||||
-- "Sun letters": assimilate with def. article
|
-- "Sun letters": assimilate with def. article
|
||||||
sun : pattern Str = #("ت"|"ث"|"د"|"ذ"|"ر"|"ز"|"س"|"ش"|"ص"|"ض"|"ط"|"ظ"|"ل"|"ن") ;
|
sun : pattern Str = #("ت"|"ث"|"د"|"ذ"|"ر"|"ز"|"س"|"ش"|"ص"|"ض"|"ط"|"ظ"|"ل"|"ن") ;
|
||||||
|
|
||||||
@@ -30,19 +38,19 @@ oper
|
|||||||
|
|
||||||
rectifyHmz : Str -> Str = \word ->
|
rectifyHmz : Str -> Str = \word ->
|
||||||
case word of {
|
case word of {
|
||||||
l@(""|"ال") + ("أ"|"أَ") + #hamza + "ْ" + tail => l + "آ" + tail;
|
l@(""|"ل"|"ال") + ("أ"|"أَ") + #hamza + "ْ" + tail => l + "آ" + tail;
|
||||||
l@(""|"ال") + ("أ"|"أَ") + #hamza + tail => l + "آ" + tail;
|
l@(""|"ل"|"ال") + ("أ"|"أَ") + #hamza + tail => l + "آ" + tail;
|
||||||
l@(""|"ال") + #hamza + v@("َ"|"ُ") + tail => l + "أ" + v + tail;
|
l@(""|"ال") + #hamza + v@("َ"|"ُ") + tail => l + "أ" + v + tail;
|
||||||
l@(""|"ال") + #hamza + v@("ِ") + tail => l + "إ" + v + tail;
|
l@(""|"ال") + #hamza + v@("ِ") + tail => l + "إ" + v + tail;
|
||||||
head + v1@(#vow|"ْ"|"ا"|"ي"|"و")
|
head + v1@#vstar
|
||||||
+ #hamza + v2@(#vow|"ْ") + tail =>
|
+ #hamza + v2@(#vow|"ْ") + tail =>
|
||||||
case v2 of { "ْ" => head + v1 + bHmz v1 v2 + tail ; -- unsure about this /IL
|
case v2 of { "ْ" => head + v1 + bHmz v1 v2 + tail ; -- unsure about this /IL
|
||||||
_ => head + v1 + bHmz v1 v2 + v2 + tail } ;
|
_ => head + v1 + bHmz v1 v2 + v2 + tail } ;
|
||||||
head + v1@(#vow|"ْ"|"ا"|"ي"|"و") -- the same but it ends in vowel
|
head + v1@#vstar -- the same but it ends in vowel
|
||||||
+ #hamza + v2@(#vow|"ْ") =>
|
+ #hamza + v2@(#vow|"ْ") =>
|
||||||
case v2 of { "ْ" => head + v1 + tHmz v1 ;
|
case v2 of { "ْ" => head + v1 + tHmz v1 ;
|
||||||
_ => head + v1 + tHmz v1 + v2 } ;
|
_ => head + v1 + tHmz v1 + v2 } ;
|
||||||
head + v1@(#vow|"ْ"|"ا"|"ي"|"و") -- the same but it ends without vowel
|
head + v1@#vstar -- the same but it ends without vowel
|
||||||
+ #hamza => head + v1 + tHmz v1 ;
|
+ #hamza => head + v1 + tHmz v1 ;
|
||||||
|
|
||||||
head + #hamza + tail => head + (bHmz (dp 2 head) (take 2 tail)) + tail; --last head , take 1 tail
|
head + #hamza + tail => head + (bHmz (dp 2 head) (take 2 tail)) + tail; --last head , take 1 tail
|
||||||
@@ -57,11 +65,12 @@ oper
|
|||||||
};
|
};
|
||||||
|
|
||||||
--hamza in middle of word (body)
|
--hamza in middle of word (body)
|
||||||
|
-- relaxing the pattern matching, so that we can call it from ResAra.sing /IL
|
||||||
bHmz : Str -> Str -> Str = \d1,d2 ->
|
bHmz : Str -> Str -> Str = \d1,d2 ->
|
||||||
case <d1,d2> of {
|
case <d1,d2> of {
|
||||||
<"ِ",_> | <_,"ِ"> => "ئ";
|
<_+#istar,_> | <_,#istar> => "ئ";
|
||||||
<"ُ",_> | <_,"ُ"> => "ؤ";
|
<_+#ustar,_> | <_,#ustar> => "ؤ";
|
||||||
<"َ",_> | <_,"َ"> => "أ";
|
<_+"َ" ,_> | <_,"َ"> => "أ"; -- #astar would allow double alif
|
||||||
_ => "ء"
|
_ => "ء"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -71,7 +80,7 @@ oper
|
|||||||
"ِ" => "ئ";
|
"ِ" => "ئ";
|
||||||
"ُ" => "ؤ";
|
"ُ" => "ؤ";
|
||||||
"َ" => "أ";
|
"َ" => "أ";
|
||||||
"ْ"|"ا"|"و"|"ي" => "ء"
|
_ => "ء" -- long vowels and sukun
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -530,12 +530,11 @@ resource ParadigmsAra = open
|
|||||||
sdfN =
|
sdfN =
|
||||||
\root,sg,gen,spec ->
|
\root,sg,gen,spec ->
|
||||||
let { kalimaStr = mkWord sg root;
|
let { kalimaStr = mkWord sg root;
|
||||||
kalimaRaw = sndf kalimaStr;
|
kalimaRaw : NTable = case gen of {
|
||||||
kalima : NTable = \\n,d,c => case root of {
|
Fem => sndf kalimaStr ;
|
||||||
_ + #hamza + _
|
Masc => sgMsndf kalimaStr } ;
|
||||||
=> rectifyHmz (kalimaRaw ! n ! d ! c);
|
kalima : NTable = \\n,d,c =>
|
||||||
_ => kalimaRaw ! n ! d ! c
|
rectifyHmz (kalimaRaw ! n ! d ! c)
|
||||||
};
|
|
||||||
} in mkFullN kalima gen spec;
|
} in mkFullN kalima gen spec;
|
||||||
|
|
||||||
sdmN =
|
sdmN =
|
||||||
|
|||||||
@@ -75,9 +75,9 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
|
|||||||
-- a word, deducing which root consonant is weak
|
-- a word, deducing which root consonant is weak
|
||||||
mkWeak : Pattern -> Root3 -> Str = \pat,fcl ->
|
mkWeak : Pattern -> Root3 -> Str = \pat,fcl ->
|
||||||
case <fcl.f,fcl.c,fcl.l> of {
|
case <fcl.f,fcl.c,fcl.l> of {
|
||||||
<_,_,("و"|"ي"|"ّ")> => mkDefective pat fcl;
|
<_,_,#weak|"ّ"> => mkDefective pat fcl;
|
||||||
<_,("و"|"ي"),_> => mkHollow pat fcl;
|
<_,#weak,_> => mkHollow pat fcl;
|
||||||
<("و"|"ي"),_,_> => mkAssimilated pat fcl
|
<#weak,_,_> => mkAssimilated pat fcl
|
||||||
};
|
};
|
||||||
|
|
||||||
mkBilit : Pattern -> Root2 -> Str = \p,fcl ->
|
mkBilit : Pattern -> Root2 -> Str = \p,fcl ->
|
||||||
@@ -990,12 +990,12 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
APosit Masc n d c => case n of {
|
APosit Masc n d c => case n of {
|
||||||
Sg => indeclN aHmar ! d ! c ;
|
Sg => indeclN aHmar ! d ! c ;
|
||||||
Dl => dual aHmar ! d ! c ;
|
Dl => dual aHmar ! d ! c ;
|
||||||
Pl => sing Humr ! d ! c
|
Pl => brkPl Humr ! d ! c
|
||||||
};
|
};
|
||||||
APosit Fem n d c => case n of {
|
APosit Fem n d c => case n of {
|
||||||
Sg => indeclN HamrA' ! d ! c;
|
Sg => indeclN HamrA' ! d ! c;
|
||||||
Dl => dual ((tk 2 HamrA') + "و") ! d ! c;
|
Dl => dual ((tk 2 HamrA') + "و") ! d ! c;
|
||||||
Pl => sing Humr ! d ! c
|
Pl => brkPl Humr ! d ! c
|
||||||
};
|
};
|
||||||
AComp d c => indeclN aHmar ! d ! c
|
AComp d c => indeclN aHmar ! d ! c
|
||||||
};
|
};
|
||||||
@@ -1011,7 +1011,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
table {
|
table {
|
||||||
Sg => sing kitAb ;
|
Sg => sing kitAb ;
|
||||||
Dl => dual kitAb ;
|
Dl => dual kitAb ;
|
||||||
Pl => sing kutub
|
Pl => brkPl kutub
|
||||||
};
|
};
|
||||||
|
|
||||||
--takes the sound noun in singular and gives the
|
--takes the sound noun in singular and gives the
|
||||||
@@ -1024,6 +1024,16 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
Pl => plurF lawHa
|
Pl => plurF lawHa
|
||||||
};
|
};
|
||||||
|
|
||||||
|
--takes the sound noun in singular and gives the
|
||||||
|
--complete noun inflection table of sound feminine plural
|
||||||
|
sgMsndf : Str -> NTable =
|
||||||
|
\lawHa ->
|
||||||
|
table {
|
||||||
|
Sg => sing lawHa ;
|
||||||
|
Dl => dual lawHa ;
|
||||||
|
Pl => singMplurF lawHa
|
||||||
|
};
|
||||||
|
|
||||||
--takes the sound noun in singular and gives the
|
--takes the sound noun in singular and gives the
|
||||||
--complete inflection table of sound masculine plural nominals
|
--complete inflection table of sound masculine plural nominals
|
||||||
sndm : Str -> NTable =
|
sndm : Str -> NTable =
|
||||||
@@ -1034,14 +1044,16 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
Pl => plurM muzAric
|
Pl => plurM muzAric
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
-- takes a singular or broken plural word and tests the ending to
|
-- takes a singular or broken plural word and tests the ending to
|
||||||
-- determine the declension and gives the corresponding inf table
|
-- determine the declension and gives the corresponding inf table
|
||||||
sing : Str -> State => Case => Str = \word ->
|
brkPl : Str -> State => Case => Str = \word ->
|
||||||
\\s,c => defArt s c (case word of {
|
\\s,c => defArt s c (case word of {
|
||||||
lemma + "ِيّ" => fixShd word (decNisba ! s ! c) ;
|
lemma + "ِيّ" => fixShd word (decNisba ! s ! c) ;
|
||||||
lemma + "ِي" => fixShd lemma (dec2sg ! s ! c) ;
|
lemma + "ِي" => fixShd lemma (dec2sg ! s ! c) ;
|
||||||
_ + ("ا"|"ى") => fixShd word (dec3sg ! s ! c) ;
|
_ + ("ا"|"ى") => fixShd word (dec3sg ! s ! c) ;
|
||||||
lemma + ("ء"|"أ"|"ئ"|"ؤ") => word + dec1sgNoDoubleAlif ! s ! c ;
|
lemma + (#hamza|#hamzaseat)
|
||||||
|
=> word + dec1sgNoDoubleAlif ! s ! c ;
|
||||||
lemma + "ة" => case s of {
|
lemma + "ة" => case s of {
|
||||||
Poss => lemma + "ت" + dec1sg ! s ! c ;
|
Poss => lemma + "ت" + dec1sg ! s ! c ;
|
||||||
_ => word + dec1sgNoDoubleAlif ! s ! c
|
_ => word + dec1sgNoDoubleAlif ! s ! c
|
||||||
@@ -1049,6 +1061,22 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
_ => fixShd word (dec1sg ! s ! c)
|
_ => fixShd word (dec1sg ! s ! c)
|
||||||
}) ;
|
}) ;
|
||||||
|
|
||||||
|
sing : Str -> State => Case => Str = \word ->
|
||||||
|
\\s,c => case word of {
|
||||||
|
-- This only applies for singular indefinite
|
||||||
|
x + y@? + #hamza => defArt s c (
|
||||||
|
case <s,c> of { -- if hamza was last, it's now in the body
|
||||||
|
<Indef,Acc> =>
|
||||||
|
case y of {
|
||||||
|
#vstar => word + dec1sgNoDoubleAlif ! Indef ! Acc ;
|
||||||
|
_ => let an : Str = dec1sg ! Indef ! Acc ;
|
||||||
|
hmz : Str = bHmz x an ;
|
||||||
|
in x + y + hmz + an } ;
|
||||||
|
_ => word + dec1sg ! s ! c }) ;
|
||||||
|
-- The rest is identical with singulars and broken plurals
|
||||||
|
_ => brkPl word ! s ! c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- takes a singular word and tests the ending to
|
-- takes a singular word and tests the ending to
|
||||||
-- determine the declension and gives the corresponding dual inf table
|
-- determine the declension and gives the corresponding dual inf table
|
||||||
@@ -1065,6 +1093,12 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
\kalima ->
|
\kalima ->
|
||||||
\\s,c => defArt s c (mkAt kalima) + f_pl ! s ! c ;
|
\\s,c => defArt s c (mkAt kalima) + f_pl ! s ! c ;
|
||||||
|
|
||||||
|
-- takes a singular masculine word and gives the corresponding
|
||||||
|
-- sound plural feminine table
|
||||||
|
singMplurF : Str -> State => Case => Str =
|
||||||
|
\ijra' ->
|
||||||
|
\\s,c => defArt s c (mkAtMasc ijra') + f_pl ! s ! c ;
|
||||||
|
|
||||||
-- takes a singular word and gives the corresponding sound
|
-- takes a singular word and gives the corresponding sound
|
||||||
--plural masculine table. FIXME: consider declension 3
|
--plural masculine table. FIXME: consider declension 3
|
||||||
plurM : Str -> State => Case => Str =
|
plurM : Str -> State => Case => Str =
|
||||||
@@ -1196,6 +1230,12 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mkAtMasc : Str -> Str = \x ->
|
||||||
|
case x of {
|
||||||
|
y + "ة" => y + "ات";
|
||||||
|
y + "ى" => y + "يَات"; -- TODO check does this happen?
|
||||||
|
_ => x + "ات"
|
||||||
|
};
|
||||||
|
|
||||||
mkAt : Str -> Str = \bayDo ->
|
mkAt : Str -> Str = \bayDo ->
|
||||||
case bayDo of {
|
case bayDo of {
|
||||||
|
|||||||
@@ -13,17 +13,19 @@ instance DiffCat of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
param
|
param
|
||||||
Prepos = P_de | P_a ;
|
Prepos = P_de | P_a | P_per ;
|
||||||
VType = VHabere | VRefl ;
|
VType = VHabere | VRefl ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
dative : Case = CPrep P_a ;
|
dative : Case = CPrep P_a ;
|
||||||
genitive : Case = CPrep P_de ;
|
genitive : Case = CPrep P_de ;
|
||||||
|
ablative : Case = CPrep P_per ;
|
||||||
|
|
||||||
prepCase = \c -> case c of {
|
prepCase = \c -> case c of {
|
||||||
Nom => [] ;
|
Nom => [] ;
|
||||||
Acc => [] ;
|
Acc => [] ;
|
||||||
CPrep P_de => elisDe ;
|
CPrep P_de => elisDe ;
|
||||||
|
CPrep P_per => "per" ;
|
||||||
CPrep P_a => "a"
|
CPrep P_a => "a"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -32,12 +34,16 @@ oper
|
|||||||
case <g,n,c> of { ---- TODO: check the NP forms
|
case <g,n,c> of { ---- TODO: check the NP forms
|
||||||
<Masc,Sg, CPrep P_de> => pre {"del" ; ("de l'" ++ Predef.BIND) / vocalForta} ;
|
<Masc,Sg, CPrep P_de> => pre {"del" ; ("de l'" ++ Predef.BIND) / vocalForta} ;
|
||||||
<Masc,Sg, CPrep P_a> => pre {"al" ; ("a l'" ++ Predef.BIND) / vocalForta} ;
|
<Masc,Sg, CPrep P_a> => pre {"al" ; ("a l'" ++ Predef.BIND) / vocalForta} ;
|
||||||
<Masc,Sg, _> => elisEl ;
|
|
||||||
<Fem, Sg, _> => prepCase c ++ elisLa ;
|
|
||||||
<Masc,Pl, CPrep P_de> => "dels" ;
|
<Masc,Pl, CPrep P_de> => "dels" ;
|
||||||
<Fem, Pl, CPrep P_de> => ["de les"] ;
|
<Fem, Pl, CPrep P_de> => ["de les"] ;
|
||||||
|
<Masc,Sg, CPrep P_per> => "pel" ;
|
||||||
|
<Fem, Sg, CPrep P_per> => ["per la"] ;
|
||||||
|
<Masc,Pl, CPrep P_per> => "pels" ;
|
||||||
|
<Fem, Pl, CPrep P_per> => ["per les"] ;
|
||||||
<Masc,Pl, CPrep P_a> => "als" ;
|
<Masc,Pl, CPrep P_a> => "als" ;
|
||||||
<Fem, Pl, CPrep P_a> => ["a les"] ;
|
<Fem, Pl, CPrep P_a> => ["a les"] ;
|
||||||
|
<Masc,Sg, _> => elisEl ;
|
||||||
|
<Fem, Sg, _> => prepCase c ++ elisLa ;
|
||||||
<Masc, Pl, _ > => "els" ;
|
<Masc, Pl, _ > => "els" ;
|
||||||
<Fem, Pl, _ > => "les"
|
<Fem, Pl, _ > => "les"
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ lin
|
|||||||
s1 = heading1 (nounHeading adjective_Category).s ;
|
s1 = heading1 (nounHeading adjective_Category).s ;
|
||||||
s2 = frameTable (
|
s2 = frameTable (
|
||||||
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (AF Masc Sg)) ++ td (adj.s ! Posit ! (AF Masc Pl))) ++
|
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Masc Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++
|
||||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (AF Fem Sg)) ++ td (adj.s ! Posit ! (AF Fem Pl)))
|
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Fem Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl)))
|
||||||
)
|
)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||||
|
|
||||||
concrete LexiconCat of Lexicon = CatCat ** open
|
concrete LexiconCat of Lexicon = CatCat ** open
|
||||||
(M=MorphoCat), ParadigmsCat, BeschCat in {
|
(M=MorphoCat), ParadigmsCat, BeschCat, (D = DiffCat) in {
|
||||||
|
|
||||||
flags
|
flags
|
||||||
coding=utf8 ;
|
coding=utf8 ;
|
||||||
@@ -28,7 +28,7 @@ lin
|
|||||||
become_VA = reflV (mkV "tornar") ; -- esdevenir
|
become_VA = reflV (mkV "tornar") ; -- esdevenir
|
||||||
beer_N = regFN "cervesa" ;
|
beer_N = regFN "cervesa" ;
|
||||||
beg_V2V = mkV2V (mkV "demanar") accusative dative ;
|
beg_V2V = mkV2V (mkV "demanar") accusative dative ;
|
||||||
big_A = regADeg "gros" ;
|
big_A = mkA "gros" "grossa" ;
|
||||||
bike_N = regFN "bicicleta" ;
|
bike_N = regFN "bicicleta" ;
|
||||||
bird_N = regMN "ocell" ;
|
bird_N = regMN "ocell" ;
|
||||||
black_A = compADeg (mkA "negre" "negra" "negres" "negres" "negrament") ;
|
black_A = compADeg (mkA "negre" "negra" "negres" "negres" "negrament") ;
|
||||||
@@ -92,7 +92,7 @@ lin
|
|||||||
girl_N = regFN "noia" ;
|
girl_N = regFN "noia" ;
|
||||||
glove_N = regMN "guant" ;
|
glove_N = regMN "guant" ;
|
||||||
gold_N = regMN "or" ;
|
gold_N = regMN "or" ;
|
||||||
good_A = prefA (mkADeg (mkA "bo" "bona") (mkA "millor")) ;
|
good_A = mkA (prefA "bo" "bon") (mkA "millor") ;
|
||||||
go_V = (verbV (anar_4 "anar")) ;
|
go_V = (verbV (anar_4 "anar")) ;
|
||||||
green_A = regADeg "verd" ;
|
green_A = regADeg "verd" ;
|
||||||
harbour_N = regMN "port" ;
|
harbour_N = regMN "port" ;
|
||||||
@@ -361,7 +361,7 @@ lin
|
|||||||
language_N = mkN "llengua" ; -- llengües
|
language_N = mkN "llengua" ; -- llengües
|
||||||
rule_N = regFN "regla" ;
|
rule_N = regFN "regla" ;
|
||||||
question_N = regFN "pregunta" ;
|
question_N = regFN "pregunta" ;
|
||||||
ready_A = regA "preparat" ;
|
ready_A = adjCopula (regA "preparat") D.estarCopula ;
|
||||||
reason_N = regFN "raó" ;
|
reason_N = regFN "raó" ;
|
||||||
uncertain_A = regA "incert" ;
|
uncertain_A = regA "incert" ;
|
||||||
|
|
||||||
|
|||||||
@@ -94,14 +94,19 @@ oper
|
|||||||
-- Here are some patterns. First one that describes the worst case.
|
-- Here are some patterns. First one that describes the worst case.
|
||||||
-- gcc M2.1
|
-- gcc M2.1
|
||||||
|
|
||||||
mkAdj : (_,_,_,_,_ : Str) -> Adj = \prim,prima,prims,primes,primament ->
|
mkAdjFull : (x1,_,_,_,_,x6 : Str) -> Adj = \bon,bo,prima,prims,primes,primament ->
|
||||||
{s = table {
|
{s = table {
|
||||||
AF Masc n => numForms prim prims ! n ;
|
ASg Masc AAttr => bon ;
|
||||||
AF Fem n => numForms prima primes ! n ;
|
ASg Masc APred => bo ;
|
||||||
|
ASg Fem _ => prima ;
|
||||||
|
APl Masc => prims ;
|
||||||
|
APl Fem => primes ;
|
||||||
AA => primament
|
AA => primament
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkAdj : (x1,_,_,_,x5 : Str) -> Adj = \a,b,c,d,e -> mkAdjFull a a b c d e ;
|
||||||
|
|
||||||
--- Then the regular and invariant patterns.
|
--- Then the regular and invariant patterns.
|
||||||
|
|
||||||
adjPrim : Str -> Adj = \prim ->
|
adjPrim : Str -> Adj = \prim ->
|
||||||
@@ -116,16 +121,15 @@ oper
|
|||||||
let fond = Predef.tk 1 fondo
|
let fond = Predef.tk 1 fondo
|
||||||
in adjBlau fondo (fond + "a") ;
|
in adjBlau fondo (fond + "a") ;
|
||||||
|
|
||||||
adjBo : Str -> Adj = \bo ->
|
adjBo : (bo,bon : Str) -> Adj = \bo,bon ->
|
||||||
mkAdj bo (bo + "na") (bo + "ns") (bo + "nes") (bo + "nament") ;
|
mkAdjFull bon bo (bon + "a") (bon + "s") (bon + "es") (bon + "ament") ;
|
||||||
|
|
||||||
adjFidel : Str -> Adj = \fidel ->
|
adjFidel : Str -> Adj = \fidel ->
|
||||||
let fidels : Str = case (last fidel) of {
|
let fidels : Str = case (last fidel) of {
|
||||||
_ + ("s"|"ç"|"x") => fidel + "os" ; --feliç; capaç
|
_ + ("s"|"ç"|"x") => fidel + "os" ; --feliç; capaç
|
||||||
_ => fidel + "s"
|
_ => fidel + "s"
|
||||||
} ;
|
} ;
|
||||||
in mkAdj fidel fidel fidels fidels
|
in mkAdj fidel fidel fidels fidels (fidel + "ment") ;
|
||||||
(fidel + "ment") ;
|
|
||||||
|
|
||||||
--boig, boja, bojos, boges
|
--boig, boja, bojos, boges
|
||||||
--lleig, lletja, lletjos, lletges
|
--lleig, lletja, lletjos, lletges
|
||||||
@@ -300,6 +304,6 @@ oper unaccent : Str -> Str = \vocal ->
|
|||||||
-- Determiners, traditionally called indefinite pronouns, are inflected
|
-- Determiners, traditionally called indefinite pronouns, are inflected
|
||||||
-- in gender and number, like adjectives.
|
-- in gender and number, like adjectives.
|
||||||
|
|
||||||
pronForms : Adj -> Gender -> Number -> Str = \tal,g,n -> tal.s ! AF g n ;
|
pronForms : Adj -> Gender -> Number -> Str = \tal,g,n -> tal.s ! genNum2Aform g n ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -154,7 +154,10 @@ oper
|
|||||||
-- In the worst case, two separate adjectives are given:
|
-- In the worst case, two separate adjectives are given:
|
||||||
-- the positive ("bo"), and the comparative ("millor").
|
-- the positive ("bo"), and the comparative ("millor").
|
||||||
|
|
||||||
mkA : (bo : A) -> (millor : A) -> A -- special comparison (default with "mas")
|
mkA : (bo : A) -> (millor : A) -> A ; -- special comparison (default with "mas")
|
||||||
|
|
||||||
|
mkA : A -> CopulaType -> A -- force copula type
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- The functions above create postfix adjectives. To switch
|
-- The functions above create postfix adjectives. To switch
|
||||||
@@ -164,6 +167,7 @@ oper
|
|||||||
-- JS: What about vi bo -> bon vi ?
|
-- JS: What about vi bo -> bon vi ?
|
||||||
|
|
||||||
prefixA : A -> A ; -- adjective before noun (default: after)
|
prefixA : A -> A ; -- adjective before noun (default: after)
|
||||||
|
adjCopula : A -> CopulaType -> A ; -- force copula type
|
||||||
|
|
||||||
|
|
||||||
--3 Two-place adjectives
|
--3 Two-place adjectives
|
||||||
@@ -324,19 +328,23 @@ oper
|
|||||||
makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False} ** {lock_NP = <>} ;
|
makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False} ** {lock_NP = <>} ;
|
||||||
|
|
||||||
mk5A a b c d e =
|
mk5A a b c d e =
|
||||||
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; lock_A = <>} ;
|
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
mk2A a b = compADeg {s = \\_ => (mkAdj2Reg a b).s ; isPre = False ; lock_A = <>} ;
|
mk2A a b = compADeg {s = \\_ => (mkAdj2Reg a b).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; lock_A = <>} ;
|
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
prefA = overload {
|
||||||
|
prefA : A -> A = \a -> a ** {isPre = True} ;
|
||||||
|
prefA : Str -> Str -> A = \bo,bon ->
|
||||||
|
compADeg (lin A {s = \\_ => (adjBo bo bon).s ; isPre = True ; copTyp = serCopula}) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||||
|
|
||||||
mkADeg a b =
|
mkADeg a b =
|
||||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
|
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
|
||||||
isPre = a.isPre ; lock_A = <>} ;
|
isPre = a.isPre ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
compADeg a =
|
compADeg a =
|
||||||
{s = table {Posit => a.s ! Posit ; _ => \\f => "més" ++ a.s ! Posit ! f} ;
|
{s = table {Posit => a.s ! Posit ; _ => \\f => "més" ++ a.s ! Posit ! f} ;
|
||||||
isPre = a.isPre ;
|
isPre = a.isPre ; copTyp = a.copTyp ;
|
||||||
lock_A = <>} ;
|
lock_A = <>} ;
|
||||||
regADeg a = compADeg (regA a) ;
|
regADeg a = compADeg (regA a) ;
|
||||||
|
|
||||||
@@ -425,7 +433,7 @@ oper
|
|||||||
|
|
||||||
special_ppV ve pa = {
|
special_ppV ve pa = {
|
||||||
s = table {
|
s = table {
|
||||||
VPart g n => (regA pa).s ! Posit ! AF g n ;
|
VPart g n => (regA pa).s ! Posit ! genNum2Aform g n ;
|
||||||
p => ve.s ! p
|
p => ve.s ! p
|
||||||
} ;
|
} ;
|
||||||
lock_V = <> ;
|
lock_V = <> ;
|
||||||
@@ -496,6 +504,7 @@ oper
|
|||||||
mkA : (lleig,lletja : Str) -> A = mk2A ;
|
mkA : (lleig,lletja : Str) -> A = mk2A ;
|
||||||
mkA : (fort,forta,forts,fortes,fortament : Str) -> A = mk5A ;
|
mkA : (fort,forta,forts,fortes,fortament : Str) -> A = mk5A ;
|
||||||
mkA : (bo : A) -> (millor : A) -> A = mkADeg ;
|
mkA : (bo : A) -> (millor : A) -> A = mkADeg ;
|
||||||
|
mkA : A -> CopulaType -> A = adjCopula ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mk5A : (fort,forta,forts,fortes,fortament : Str) -> A ;
|
mk5A : (fort,forta,forts,fortes,fortament : Str) -> A ;
|
||||||
@@ -504,8 +513,12 @@ oper
|
|||||||
mkADeg : A -> A -> A ;
|
mkADeg : A -> A -> A ;
|
||||||
compADeg : A -> A ;
|
compADeg : A -> A ;
|
||||||
regADeg : Str -> A ;
|
regADeg : Str -> A ;
|
||||||
prefA : A -> A ;
|
prefA : overload {
|
||||||
|
prefA : A -> A ; -- gran
|
||||||
|
prefA : (bo,bon : Str) -> A -- predicative masc, attributive masc
|
||||||
|
} ;
|
||||||
prefixA = prefA ;
|
prefixA = prefA ;
|
||||||
|
adjCopula a cop = a ** {copTyp = cop} ;
|
||||||
|
|
||||||
mkV = overload {
|
mkV = overload {
|
||||||
mkV : (cantar : Str) -> V = \x -> verbV (regV x) ;
|
mkV : (cantar : Str) -> V = \x -> verbV (regV x) ;
|
||||||
|
|||||||
@@ -455,6 +455,9 @@ mkInterj : Str -> Interj
|
|||||||
|
|
||||||
mkOrd : Str -> Ord = \x -> lin Ord { s = regGenitiveS x};
|
mkOrd : Str -> Ord = \x -> lin Ord { s = regGenitiveS x};
|
||||||
|
|
||||||
|
invarA : Str -> A ;
|
||||||
|
invarA a = mkAdjective a a a a ;
|
||||||
|
|
||||||
mk2A a b = mkAdjective a a a b ;
|
mk2A a b = mkAdjective a a a b ;
|
||||||
regA a = case a of {
|
regA a = case a of {
|
||||||
_ + ("a" | "e" | "i" | "o" | "u" | "y") + ? + _ +
|
_ + ("a" | "e" | "i" | "o" | "u" | "y") + ? + _ +
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ lin
|
|||||||
s1 = heading1 (nounHeading adjective_Category).s ;
|
s1 = heading1 (nounHeading adjective_Category).s ;
|
||||||
s2 = frameTable (
|
s2 = frameTable (
|
||||||
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (AF Masc Sg)) ++ td (adj.s ! Posit ! (AF Masc Pl))) ++
|
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Masc Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++
|
||||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (AF Fem Sg)) ++ td (adj.s ! Posit ! (AF Fem Pl)))
|
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Fem Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl)))
|
||||||
)
|
)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ lin
|
|||||||
bad_A = prefA (mkADeg (regA "mauvais") (regA "pire")) ;
|
bad_A = prefA (mkADeg (regA "mauvais") (regA "pire")) ;
|
||||||
bank_N = regGenN "banque" feminine ;
|
bank_N = regGenN "banque" feminine ;
|
||||||
beautiful_A =
|
beautiful_A =
|
||||||
prefA (compADeg (mkA (pre {voyelle => "bel" ; _ => "beau" }) "belle" "beaux" "bellement")) ;
|
prefA (compADeg (mkA "beau" "bel" "beaux" "belle" "bellement")) ;
|
||||||
become_VA = mkVA devenir_V ;
|
become_VA = mkVA devenir_V ;
|
||||||
beer_N = regGenN "bière" feminine ;
|
beer_N = regGenN "bière" feminine ;
|
||||||
beg_V2V = mkV2V (regV "demander") accusative dative ;
|
beg_V2V = mkV2V (regV "demander") accusative dative ;
|
||||||
@@ -129,11 +129,11 @@ lin
|
|||||||
music_N = regGenN "musique" feminine ;
|
music_N = regGenN "musique" feminine ;
|
||||||
narrow_A = regA "étroit" ;
|
narrow_A = regA "étroit" ;
|
||||||
new_A =
|
new_A =
|
||||||
prefA (compADeg (mkA (pre {voyelle => "nouvel" ; _ => "nouveau" }) "nouvelle" "nouveaux" "nouvellement")) ;
|
prefA (compADeg (mkA "nouveau" "nouvel" "nouveaux" "nouvelle" "nouvellement")) ;
|
||||||
newspaper_N = regGenN "journal" masculine ;
|
newspaper_N = regGenN "journal" masculine ;
|
||||||
oil_N = regGenN "huile" feminine ;
|
oil_N = regGenN "huile" feminine ;
|
||||||
old_A =
|
old_A =
|
||||||
prefA (compADeg (mkA (pre {voyelle => "vieil" ; _ => "vieux" }) "vieille" "vieux" "vieillement")) ;
|
prefA (compADeg (mkA "vieux" "vieil" "vieux" "vieille" "vieillement")) ;
|
||||||
open_V2 = ouvrir_V2 ;
|
open_V2 = ouvrir_V2 ;
|
||||||
paint_V2A = mkV2A (v2V peindre_V2) accusative (mkPrep "en") ;
|
paint_V2A = mkV2A (v2V peindre_V2) accusative (mkPrep "en") ;
|
||||||
paper_N = regGenN "papier" masculine ;
|
paper_N = regGenN "papier" masculine ;
|
||||||
|
|||||||
@@ -72,14 +72,19 @@ oper
|
|||||||
-- Adjectives are conveniently seen as gender-dependent nouns.
|
-- Adjectives are conveniently seen as gender-dependent nouns.
|
||||||
-- Here are some patterns. First one that describes the worst case.
|
-- Here are some patterns. First one that describes the worst case.
|
||||||
|
|
||||||
mkAdj : (_,_,_,_ : Str) -> Adj = \vieux,vieuxs,vieille,vieillement ->
|
mkAdj' : (_,_,_,_,_ : Str) -> Adj ;
|
||||||
{s = table {
|
mkAdj' vieux vieil vieuxs vieille vieillement = {
|
||||||
AF Masc n => numForms vieux vieuxs ! n ;
|
s = table {
|
||||||
AF Fem n => nomReg vieille ! n ;
|
ASg Masc _ => pre {#voyelle => vieil ; "h" => vieil ; _ => vieux} ;
|
||||||
|
ASg Fem _ => vieille ;
|
||||||
|
APl g => genForms vieuxs (vieille + "s") ! g ;
|
||||||
AA => vieillement
|
AA => vieillement
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkAdj : (_,_,_,_ : Str) -> Adj ;
|
||||||
|
mkAdj bleu bleus bleue bleuement = mkAdj' bleu bleu bleus bleue bleuement ;
|
||||||
|
|
||||||
-- Then the regular and invariant patterns.
|
-- Then the regular and invariant patterns.
|
||||||
|
|
||||||
adjReg : Str -> Gender => Number => Str = \bu -> table {
|
adjReg : Str -> Gender => Number => Str = \bu -> table {
|
||||||
|
|||||||
@@ -160,15 +160,21 @@ oper
|
|||||||
|
|
||||||
mkA : (banal,banale,banaux : Str) -> A ;
|
mkA : (banal,banale,banaux : Str) -> A ;
|
||||||
|
|
||||||
-- This is the worst-case paradigm for the positive forms.
|
-- This is the worst-case paradigm for the positive forms, except for "vieux/vieil".
|
||||||
|
|
||||||
mkA : (banal,banale,banaux,banalement : Str) -> A ; -- worst-case adjective
|
mkA : (banal,banale,banaux,banalement : Str) -> A ; -- almost worst-case adjective
|
||||||
|
|
||||||
|
-- This is the worst-case paradigm for the positive forms, used for "vieux/vieil".
|
||||||
|
mkA : (vieux,vieil,vieille,vieuxs,vieuxment : Str) -> A ; -- worst-case adjetive
|
||||||
|
|
||||||
-- If comparison forms are irregular (i.e. not formed by "plus", e.g.
|
-- If comparison forms are irregular (i.e. not formed by "plus", e.g.
|
||||||
-- "bon-meilleur"), the positive and comparative can be given as separate
|
-- "bon-meilleur"), the positive and comparative can be given as separate
|
||||||
-- adjectives.
|
-- adjectives.
|
||||||
|
|
||||||
mkA : A -> A -> A -- irregular comparison, e.g. bon-meilleur
|
mkA : A -> A -> A ; -- irregular comparison, e.g. bon-meilleur
|
||||||
|
|
||||||
|
mkA : A -> CopulaType -> A -- force copula type
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- The functions create by default postfix adjectives. To switch
|
-- The functions create by default postfix adjectives. To switch
|
||||||
@@ -387,9 +393,11 @@ oper
|
|||||||
mkPN : N -> PN = \x -> lin PN {s = x.s ! Sg ; g = x.g} ;
|
mkPN : N -> PN = \x -> lin PN {s = x.s ! Sg ; g = x.g} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mk4A a b c d = compADeg {s = \\_ => (mkAdj a c b d).s ; isPre = False ; lock_A = <>} ;
|
mk4A a b c d = mk5A a a b c d ;
|
||||||
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; lock_A = <>} ;
|
mk5A a b c d e = compADeg {s = \\_ => (mkAdj' a b c d e).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
|
prefA a = {s = a.s ; isPre = True ; copTyp = a.copTyp ; lock_A = <>} ;
|
||||||
|
adjCopula a cop = a ** {copTyp = cop} ;
|
||||||
|
|
||||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||||
|
|
||||||
@@ -398,10 +406,12 @@ oper
|
|||||||
mkA : (sec,seche : Str) -> A = \sec,seche -> mk4A sec seche (sec + "s") (seche + "ment") ;
|
mkA : (sec,seche : Str) -> A = \sec,seche -> mk4A sec seche (sec + "s") (seche + "ment") ;
|
||||||
mkA : (banal,banale,banaux : Str) -> A = \sec,seche,secs -> mk4A sec seche secs (seche + "ment") ;
|
mkA : (banal,banale,banaux : Str) -> A = \sec,seche,secs -> mk4A sec seche secs (seche + "ment") ;
|
||||||
mkA : (banal,banale,banaux,banalement : Str) -> A = mk4A ;
|
mkA : (banal,banale,banaux,banalement : Str) -> A = mk4A ;
|
||||||
mkA : A -> A -> A = mkADeg
|
mkA : (vieux,vieil,vieille,vieuxs,vieuxment : Str) -> A = mk5A ;
|
||||||
|
mkA : A -> A -> A = mkADeg ;
|
||||||
|
mkA : A -> CopulaType -> A = adjCopula ;
|
||||||
};
|
};
|
||||||
|
|
||||||
prefixA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
prefixA a = {s = a.s ; isPre = True ; copTyp = a.copTyp ; lock_A = <>} ;
|
||||||
|
|
||||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||||
mkAdV x = ss x ** {lock_AdV = <>} ;
|
mkAdV x = ss x ** {lock_AdV = <>} ;
|
||||||
@@ -471,16 +481,18 @@ oper
|
|||||||
|
|
||||||
regA : Str -> A ;
|
regA : Str -> A ;
|
||||||
mk4A : (banal,banale,banaux,banalement : Str) -> A ;
|
mk4A : (banal,banale,banaux,banalement : Str) -> A ;
|
||||||
|
mk5A : (vieux,vieil,vieille,vieuxs,vieuxment : Str) -> A ; -- worst-case adjetive
|
||||||
|
|
||||||
prefA : A -> A ;
|
prefA : A -> A ;
|
||||||
|
adjCopula : A -> CopulaType -> A ;
|
||||||
|
|
||||||
mkADeg a b =
|
mkADeg a b =
|
||||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ; isPre = a.isPre ; lock_A = <>} ;
|
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ; isPre = a.isPre ; copTyp = a.copTyp ; lock_A = <>} ;
|
||||||
compADeg a =
|
compADeg a =
|
||||||
{s = table {Posit => a.s ! Posit ; _ => \\f => "plus" ++ a.s ! Posit ! f} ;
|
{s = table {Posit => a.s ! Posit ; _ => \\f => "plus" ++ a.s ! Posit ! f} ;
|
||||||
isPre = a.isPre ;
|
isPre = a.isPre ;
|
||||||
|
copTyp = a.copTyp ;
|
||||||
lock_A = <>} ;
|
lock_A = <>} ;
|
||||||
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
|
||||||
|
|
||||||
mkV = overload {
|
mkV = overload {
|
||||||
mkV : Str -> V = regV ;
|
mkV : Str -> V = regV ;
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ in {
|
|||||||
|
|
||||||
lin backen_V = irregV "backen" "bäckt" "backt" "backt" "gebacken" ;
|
lin backen_V = irregV "backen" "bäckt" "backt" "backt" "gebacken" ;
|
||||||
lin backen_u_V = irregV "backen" "bäckt" "buk" "buke" "gebacken" ;
|
lin backen_u_V = irregV "backen" "bäckt" "buk" "buke" "gebacken" ;
|
||||||
lin befehlen_V = irregV "befehlen" "befiehlt" "befahl" "beföhle" "befähle)" ;
|
lin befehlen_V = irregV "befehlen" "befiehlt" "befahl" "beföhle" "befähle" ;
|
||||||
lin beginnen_V = irregV "beginnen" "beginnt" "begann" "begönne" "begänne)" ;
|
lin beginnen_V = irregV "beginnen" "beginnt" "begann" "begönne" "begänne" ;
|
||||||
lin beißen_V = irregV "beißen" "beißt" "biß" "bisse" "gebissen" ;
|
lin beißen_V = irregV "beißen" "beißt" "biss" "bisse" "gebissen" ;
|
||||||
lin bergen_V = irregV "bergen" "birgt" "barg" "bärge" "geborgen" ;
|
lin bergen_V = irregV "bergen" "birgt" "barg" "bärge" "geborgen" ;
|
||||||
lin bersten_V = irregV "bersten" "birst" "barst" "bärste" "geborsten" ;
|
lin bersten_V = irregV "bersten" "birst" "barst" "bärste" "geborsten" ;
|
||||||
lin bewegen_V = irregV "bewegen" "bewegt" "bewog" "bewöge" "bewogen" ;
|
lin bewegen_V = irregV "bewegen" "bewegt" "bewog" "bewöge" "bewogen" ;
|
||||||
@@ -52,8 +52,8 @@ in {
|
|||||||
lin flechten_V = irregV "flechten" "flicht" "flocht" "flöchte" "geflochten" ;
|
lin flechten_V = irregV "flechten" "flicht" "flocht" "flöchte" "geflochten" ;
|
||||||
lin fliegen_V = irregV "fliegen" "fliegt" "flog" "flöge" "geflogen" ;
|
lin fliegen_V = irregV "fliegen" "fliegt" "flog" "flöge" "geflogen" ;
|
||||||
lin fliehen_V = irregV "fliehen" "flieht" "floh" "flöhe" "geflohen" ;
|
lin fliehen_V = irregV "fliehen" "flieht" "floh" "flöhe" "geflohen" ;
|
||||||
lin fließen_V = irregV "fließen" "fließt" "floß" "flösse" "geflossen" ;
|
lin fließen_V = irregV "fließen" "fließt" "floss" "flösse" "geflossen" ;
|
||||||
lin fressen_V = irregV "fressen" "frißt" "fraß" "fräße" "gefressen" ;
|
lin fressen_V = irregV "fressen" "frisst" "fraß" "fräße" "gefressen" ;
|
||||||
lin frieren_V = irregV "frieren" "friert" "fror" "fröre" "gefroren" ;
|
lin frieren_V = irregV "frieren" "friert" "fror" "fröre" "gefroren" ;
|
||||||
lin gären_V = irregV "gären" "gärt" "gärte" "göre" "gegoren" ;
|
lin gären_V = irregV "gären" "gärt" "gärte" "göre" "gegoren" ;
|
||||||
lin gären_o_V = irregV "gären" "gärt" "gor" "göre" "gegoren" ;
|
lin gären_o_V = irregV "gären" "gärt" "gor" "göre" "gegoren" ;
|
||||||
@@ -65,11 +65,11 @@ in {
|
|||||||
lin gelten_V = irregV "gelten" "gilt" "galt" "galte" "gegolten" ;
|
lin gelten_V = irregV "gelten" "gilt" "galt" "galte" "gegolten" ;
|
||||||
lin gelten_o_V = irregV "gelten" "gilt" "galt" "golte" "gegolten" ;
|
lin gelten_o_V = irregV "gelten" "gilt" "galt" "golte" "gegolten" ;
|
||||||
lin genesen_V = irregV "genesen" "genest" "genas" "genäse" "genesen" ;
|
lin genesen_V = irregV "genesen" "genest" "genas" "genäse" "genesen" ;
|
||||||
lin genießen_V = irregV "genießen" "genießt" "genoß" "genösse" "genossen" ;
|
lin genießen_V = irregV "genießen" "genießt" "genoss" "genösse" "genossen" ;
|
||||||
lin geschehen_V = irregV "geschehen" "geschieht" "geschah" "geschehen" "geschähe" ;
|
lin geschehen_V = irregV "geschehen" "geschieht" "geschah" "geschehen" "geschähe" ;
|
||||||
lin gewinnen_V = irregV "gewinnen" "gewinnt" "gewann" "gewänne" "gewonnen" ;
|
lin gewinnen_V = irregV "gewinnen" "gewinnt" "gewann" "gewänne" "gewonnen" ;
|
||||||
lin gewinnen_o_V = irregV "gewinnen" "gewinnt" "gewann" "gewönne" "gewonnen" ;
|
lin gewinnen_o_V = irregV "gewinnen" "gewinnt" "gewann" "gewönne" "gewonnen" ;
|
||||||
lin gießen_V = irregV "gießen" "gießt" "goß" "gösse" "gegossen" ;
|
lin gießen_V = irregV "gießen" "gießt" "goss" "gösse" "gegossen" ;
|
||||||
lin gleichen_V = irregV "gleichen" "gleicht" "glich" "gliche" "geglichen" ;
|
lin gleichen_V = irregV "gleichen" "gleicht" "glich" "gliche" "geglichen" ;
|
||||||
lin gleiten_V = irregV "gleiten" "gleitet" "glitt" "glitte" "geglitten" ;
|
lin gleiten_V = irregV "gleiten" "gleitet" "glitt" "glitte" "geglitten" ;
|
||||||
lin glimmen_V = irregV "glimmen" "glimmt" "glomm" "glimmte" "glömme" ;
|
lin glimmen_V = irregV "glimmen" "glimmt" "glomm" "glimmte" "glömme" ;
|
||||||
@@ -94,7 +94,7 @@ in {
|
|||||||
lin kriechen_V = irregV "kriechen" "kriecht" "kroch" "kröche" "gekrochen" ;
|
lin kriechen_V = irregV "kriechen" "kriecht" "kroch" "kröche" "gekrochen" ;
|
||||||
lin küren_V = irregV "küren" "kürt" "kürte" "kor" "gekürt" ;
|
lin küren_V = irregV "küren" "kürt" "kürte" "kor" "gekürt" ;
|
||||||
lin laden_V = irregV "laden" "lädt" "lud" "lüde" "geladen" ;
|
lin laden_V = irregV "laden" "lädt" "lud" "lüde" "geladen" ;
|
||||||
lin lassen_V = irregV "lassen" "läßt" "ließ" "ließe" "gelassen" ;
|
lin lassen_V = irregV "lassen" "lässt" "ließ" "ließe" "gelassen" ;
|
||||||
lin laufen_V = irregV "laufen" "läuft" "lief" "liefe" "gelaufen" ;
|
lin laufen_V = irregV "laufen" "läuft" "lief" "liefe" "gelaufen" ;
|
||||||
lin leiden_V = irregV "leiden" "leidt" "litt" "litte" "gelitten" ;
|
lin leiden_V = irregV "leiden" "leidt" "litt" "litte" "gelitten" ;
|
||||||
lin leihen_V = irregV "leihen" "leiht" "lieh" "liehe" "geliehen" ;
|
lin leihen_V = irregV "leihen" "leiht" "lieh" "liehe" "geliehen" ;
|
||||||
@@ -104,14 +104,15 @@ in {
|
|||||||
lin mahlen_V = irregV "mahlen" "mahlt" "mahlte" "mahlte" "gemahlen" ;
|
lin mahlen_V = irregV "mahlen" "mahlt" "mahlte" "mahlte" "gemahlen" ;
|
||||||
lin meiden_V = irregV "meiden" "meidt" "mied" "miede" "gemieden" ;
|
lin meiden_V = irregV "meiden" "meidt" "mied" "miede" "gemieden" ;
|
||||||
lin melken_V = irregV "melken" "milkt" "molk" "mölke" "gemolken" ;
|
lin melken_V = irregV "melken" "milkt" "molk" "mölke" "gemolken" ;
|
||||||
lin messen_V = irregV "messen" "mißt" "maß" "mäße" "gemessen" ;
|
lin messen_V = irregV "messen" "misst" "maß" "mäße" "gemessen" ;
|
||||||
lin mißlingen_V = irregV "mißlingen" "mißlingt" "mißlang" "mißlungen" "mißlänge" ;
|
lin mißlingen_V = irregV "misslingen" "misslingt" "misslang" "misslungen" "misslänge" ; -- old spelling
|
||||||
|
lin misslingen_V = irregV "misslingen" "misslingt" "misslang" "misslungen" "misslänge" ;
|
||||||
lin mögen_V = lin V (M.mkV "mögen" "mag" "magst" "mag" "mögt" "mög"
|
lin mögen_V = lin V (M.mkV "mögen" "mag" "magst" "mag" "mögt" "mög"
|
||||||
"mochte" "mochtest" "mochten" "mochtet"
|
"mochte" "mochtest" "mochten" "mochtet"
|
||||||
"möchte" "gemocht" [] M.VHaben) ;
|
"möchte" "gemocht" [] M.VHaben) ;
|
||||||
lin müssen_V = lin V (M.mkV "müssen" "muß" "mußt" "muß" "müßt" "müß"
|
lin müssen_V = lin V (M.mkV "müssen" "muss" "musst" "muss" "müsst" "müss"
|
||||||
"mußte" "mußtest" "mußten" "mußtet"
|
"musste" "musstest" "mussten" "musstet"
|
||||||
"müßte" "gemußt" [] M.VHaben) ;
|
"müsste" "gemusst" [] M.VHaben) ;
|
||||||
lin nehmen_V = mk6V "nehmen" "nimmt" "nimm" "nahm" "nähme" "genommen" ;
|
lin nehmen_V = mk6V "nehmen" "nimmt" "nimm" "nahm" "nähme" "genommen" ;
|
||||||
lin nennen_V = irregV "nennen" "nennt" "nannte" "nennte" "genannt" ;
|
lin nennen_V = irregV "nennen" "nennt" "nannte" "nennte" "genannt" ;
|
||||||
lin pfeifen_V = irregV "pfeifen" "pfeift" "pfiff" "pfiffe" "gepfiffen" ;
|
lin pfeifen_V = irregV "pfeifen" "pfeift" "pfiff" "pfiffe" "gepfiffen" ;
|
||||||
@@ -119,7 +120,7 @@ in {
|
|||||||
lin quellen_V = irregV "quellen" "quillt" "quoll" "quölle" "gequollen" ;
|
lin quellen_V = irregV "quellen" "quillt" "quoll" "quölle" "gequollen" ;
|
||||||
lin raten_V = irregV "raten" "rät" "riet" "riete" "geraten" ;
|
lin raten_V = irregV "raten" "rät" "riet" "riete" "geraten" ;
|
||||||
lin reiben_V = irregV "reiben" "reibt" "rieb" "riebe" "gerieben" ;
|
lin reiben_V = irregV "reiben" "reibt" "rieb" "riebe" "gerieben" ;
|
||||||
lin reißen_V = irregV "reißen" "reißt" "riß" "riße" "gerissen" ;
|
lin reißen_V = irregV "reißen" "reißt" "riss" "risse" "gerissen" ;
|
||||||
lin reiten_V = irregV "reiten" "reitet" "ritt" "ritte" "geritten" ;
|
lin reiten_V = irregV "reiten" "reitet" "ritt" "ritte" "geritten" ;
|
||||||
lin rennen_V = irregV "rennen" "rennt" "rannte" "rennte" "gerannt" ;
|
lin rennen_V = irregV "rennen" "rennt" "rannte" "rennte" "gerannt" ;
|
||||||
lin riechen_V = irregV "riechen" "riecht" "roch" "röche" "gerochen" ;
|
lin riechen_V = irregV "riechen" "riecht" "roch" "röche" "gerochen" ;
|
||||||
@@ -132,20 +133,20 @@ in {
|
|||||||
lin schaffen_V = irregV "schaffen" "schafft" "schuf" "schüfe" "geschaffen" ;
|
lin schaffen_V = irregV "schaffen" "schafft" "schuf" "schüfe" "geschaffen" ;
|
||||||
lin scheiden_V = irregV "scheiden" "scheidt" "schied" "schiede" "geschieden" ;
|
lin scheiden_V = irregV "scheiden" "scheidt" "schied" "schiede" "geschieden" ;
|
||||||
lin scheinen_V = irregV "scheinen" "scheint" "schien" "schiene" "geschienen" ;
|
lin scheinen_V = irregV "scheinen" "scheint" "schien" "schiene" "geschienen" ;
|
||||||
lin scheißen_V = irregV "scheißen" "scheißt" "schiß" "schiße" "geschissen" ;
|
lin scheißen_V = irregV "scheißen" "scheißt" "schiss" "schisse" "geschissen" ;
|
||||||
lin schelten_V = irregV "schelten" "schilt" "schalt" "schölte" "gescholten" ;
|
lin schelten_V = irregV "schelten" "schilt" "schalt" "schölte" "gescholten" ;
|
||||||
lin scheren_V = irregV "scheren" "schert" "schor" "schöre" "geschoren" ;
|
lin scheren_V = irregV "scheren" "schert" "schor" "schöre" "geschoren" ;
|
||||||
lin schieben_V = irregV "schieben" "schiebt" "schob" "schöbe" "geschoben" ;
|
lin schieben_V = irregV "schieben" "schiebt" "schob" "schöbe" "geschoben" ;
|
||||||
lin schießen_V = irregV "schießen" "schießt" "schoß" "schösse" "geschossen" ;
|
lin schießen_V = irregV "schießen" "schießt" "schoss" "schösse" "geschossen" ;
|
||||||
lin schinden_V = irregV "schinden" "schindt" "schund" "schunde" "geschunden" ;
|
lin schinden_V = irregV "schinden" "schindt" "schund" "schunde" "geschunden" ;
|
||||||
lin schlafen_V = irregV "schlafen" "schläft" "schlief" "schliefe" "geschlafen" ;
|
lin schlafen_V = irregV "schlafen" "schläft" "schlief" "schliefe" "geschlafen" ;
|
||||||
lin schlagen_V = irregV "schlagen" "schlägt" "schlug" "schlüge" "geschlagen" ;
|
lin schlagen_V = irregV "schlagen" "schlägt" "schlug" "schlüge" "geschlagen" ;
|
||||||
lin schleichen_V = irregV "schleichen" "schleicht" "schlich" "schliche" "geschlichen" ;
|
lin schleichen_V = irregV "schleichen" "schleicht" "schlich" "schliche" "geschlichen" ;
|
||||||
lin schleifen_V = irregV "schleifen" "schleift" "schliff" "schliffe" "geschliffen" ;
|
lin schleifen_V = irregV "schleifen" "schleift" "schliff" "schliffe" "geschliffen" ;
|
||||||
lin schleißen_V = irregV "schleißen" "schleißt" "schliß" "schliß" "geschlissen" ;
|
lin schleißen_V = irregV "schleißen" "schleißt" "schliss" "schliss" "geschlissen" ;
|
||||||
lin schließen_V = irregV "schließen" "schließt" "schloß" "schlösse" "geschlossen" ;
|
lin schließen_V = irregV "schließen" "schließt" "schloss" "schlösse" "geschlossen" ;
|
||||||
lin schlingen_V = irregV "schlingen" "schlingt" "schlang" "schlünge" "geschlungen" ;
|
lin schlingen_V = irregV "schlingen" "schlingt" "schlang" "schlünge" "geschlungen" ;
|
||||||
lin schmeißen_V = irregV "schmeißen" "schmeißt" "schmiß" "schmiße" "geschmissen" ;
|
lin schmeißen_V = irregV "schmeißen" "schmeißt" "schmiss" "schmisse" "geschmissen" ;
|
||||||
lin schmelzen_V = irregV "schmelzen" "schmilzt" "schmolz" "schmölze" "geschmolzen" ;
|
lin schmelzen_V = irregV "schmelzen" "schmilzt" "schmolz" "schmölze" "geschmolzen" ;
|
||||||
lin schneiden_V = irregV "schneiden" "schneidet" "schnitt" "schnitte" "geschnitten" ;
|
lin schneiden_V = irregV "schneiden" "schneidet" "schnitt" "schnitte" "geschnitten" ;
|
||||||
lin schreiben_V = irregV "schreiben" "schreibt" "schrieb" "schriebe" "geschrieben" ;
|
lin schreiben_V = irregV "schreiben" "schreibt" "schrieb" "schriebe" "geschrieben" ;
|
||||||
@@ -173,9 +174,9 @@ in {
|
|||||||
lin speien_V = irregV "speien" "speit" "spie" "spie" "gespien" ;
|
lin speien_V = irregV "speien" "speit" "spie" "spie" "gespien" ;
|
||||||
lin spinnen_V = irregV "spinnen" "spinnt" "spann" "spänne" "gesponnen" ;
|
lin spinnen_V = irregV "spinnen" "spinnt" "spann" "spänne" "gesponnen" ;
|
||||||
lin spinnen_o_V = irregV "spinnen" "spinnt" "spann" "spönne" "gesponnen" ;
|
lin spinnen_o_V = irregV "spinnen" "spinnt" "spann" "spönne" "gesponnen" ;
|
||||||
lin spleißen_V = irregV "spleißen" "spleißt" "spliß" "spliße" "gesplissen" ;
|
lin spleißen_V = irregV "spleißen" "spleißt" "spliss" "splisse" "gesplissen" ;
|
||||||
lin sprechen_V = irregV "sprechen" "spricht" "sprach" "spräche" "gesprochen" ;
|
lin sprechen_V = irregV "sprechen" "spricht" "sprach" "spräche" "gesprochen" ;
|
||||||
lin sprießen_V = irregV "sprießen" "sprießt" "sproß" "sprösse" "gesprossen" ;
|
lin sprießen_V = irregV "sprießen" "sprießt" "spross" "sprösse" "gesprossen" ;
|
||||||
lin springen_V = irregV "springen" "springt" "sprang" "spränge" "gesprungen" ;
|
lin springen_V = irregV "springen" "springt" "sprang" "spränge" "gesprungen" ;
|
||||||
lin stechen_V = irregV "stechen" "sticht" "stach" "stäche" "gestochen" ;
|
lin stechen_V = irregV "stechen" "sticht" "stach" "stäche" "gestochen" ;
|
||||||
lin stehen_V = irregV "stehen" "steht" "stand" "stände" "gestanden" ;
|
lin stehen_V = irregV "stehen" "steht" "stand" "stände" "gestanden" ;
|
||||||
@@ -200,7 +201,7 @@ in {
|
|||||||
"tat" "tatest" "taten" "tatet"
|
"tat" "tatest" "taten" "tatet"
|
||||||
"täte" "getan" [] M.VHaben) ;
|
"täte" "getan" [] M.VHaben) ;
|
||||||
lin verderben_V = irregV "verderben" "verdirbt" "verdarb" "verdarbe" "verdorben" ;
|
lin verderben_V = irregV "verderben" "verdirbt" "verdarb" "verdarbe" "verdorben" ;
|
||||||
lin vergessen_V = irregV "vergessen" "vergißt" "vergaß" "vergäße" "vergessen" ;
|
lin vergessen_V = irregV "vergessen" "vergisst" "vergaß" "vergäße" "vergessen" ;
|
||||||
lin verlieren_V = irregV "verlieren" "verliert" "verlor" "verlöre" "verloren" ;
|
lin verlieren_V = irregV "verlieren" "verliert" "verlor" "verlöre" "verloren" ;
|
||||||
lin wachsen_V = irregV "wachsen" "wächst" "wuchs" "wüchse" "gewachsen" ;
|
lin wachsen_V = irregV "wachsen" "wächst" "wuchs" "wüchse" "gewachsen" ;
|
||||||
lin wägen_V = irregV "wägen" "wägt" "wog" "woge" "gewogen" ;
|
lin wägen_V = irregV "wägen" "wägt" "wog" "woge" "gewogen" ;
|
||||||
@@ -229,4 +230,28 @@ in {
|
|||||||
lin ziehen_V = irregV "ziehen" "zieht" "zog" "zöge" "gezogen" ;
|
lin ziehen_V = irregV "ziehen" "zieht" "zog" "zöge" "gezogen" ;
|
||||||
lin zwingen_V = irregV "zwingen" "zwingt" "zwang" "zwänge" "gezwungen" ;
|
lin zwingen_V = irregV "zwingen" "zwingt" "zwang" "zwänge" "gezwungen" ;
|
||||||
|
|
||||||
|
|
||||||
|
-- old spellings, before the German orthography reform
|
||||||
|
-- see https://en.wikipedia.org/wiki/German_orthography_reform_of_1996
|
||||||
|
|
||||||
|
lin beißen_old_V = irregV "beißen" "beißt" "biß" "bisse" "gebissen" ;
|
||||||
|
lin fließen_old_V = irregV "fließen" "fließt" "floß" "flösse" "geflossen" ;
|
||||||
|
lin fressen_old_V = irregV "fressen" "frißt" "fraß" "fräße" "gefressen" ;
|
||||||
|
lin genießen_old_V = irregV "genießen" "genießt" "genoß" "genösse" "genossen" ;
|
||||||
|
lin gießen_old_V = irregV "gießen" "gießt" "goß" "gösse" "gegossen" ;
|
||||||
|
lin lassen_old_V = irregV "lassen" "läßt" "ließ" "ließe" "gelassen" ;
|
||||||
|
lin messen_old_V = irregV "messen" "mißt" "maß" "mäße" "gemessen" ;
|
||||||
|
lin mißlingen_old_V = irregV "mißlingen" "mißlingt" "mißlang" "mißlungen" "mißlänge" ;
|
||||||
|
lin müssen_old_V = lin V (M.mkV "müssen" "muß" "mußt" "muß" "müßt" "müß"
|
||||||
|
"mußte" "mußtest" "mußten" "mußtet"
|
||||||
|
"müßte" "gemußt" [] M.VHaben) ;
|
||||||
|
lin reißen_old_V = irregV "reißen" "reißt" "riß" "riße" "gerissen" ;
|
||||||
|
lin scheißen_old_V = irregV "scheißen" "scheißt" "schiß" "schiße" "geschissen" ;
|
||||||
|
lin schießen_old_V = irregV "schießen" "schießt" "schoß" "schösse" "geschossen" ;
|
||||||
|
lin schleißen_old_V = irregV "schleißen" "schleißt" "schliß" "schliß" "geschlissen" ;
|
||||||
|
lin schließen_old_V = irregV "schließen" "schließt" "schloß" "schlösse" "geschlossen" ;
|
||||||
|
lin schmeißen_old_V = irregV "schmeißen" "schmeißt" "schmiß" "schmiße" "geschmissen" ;
|
||||||
|
lin spleißen_old_V = irregV "spleißen" "spleißt" "spliß" "spliße" "gesplissen" ;
|
||||||
|
lin sprießen_old_V = irregV "sprießen" "sprießt" "sproß" "sprösse" "gesprossen" ;
|
||||||
|
lin vergessen_old_V = irregV "vergessen" "vergißt" "vergaß" "vergäße" "vergessen" ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,7 +89,8 @@ abstract IrregGerAbs = Cat ** {
|
|||||||
fun meiden_V : V ;
|
fun meiden_V : V ;
|
||||||
fun melken_V : V ;
|
fun melken_V : V ;
|
||||||
fun messen_V : V ;
|
fun messen_V : V ;
|
||||||
fun mißlingen_V : V ;
|
fun mißlingen_V : V ; -- old spelling
|
||||||
|
fun misslingen_V : V ;
|
||||||
fun mögen_V : V ;
|
fun mögen_V : V ;
|
||||||
fun müssen_V : V ;
|
fun müssen_V : V ;
|
||||||
fun nehmen_V : V ;
|
fun nehmen_V : V ;
|
||||||
@@ -193,4 +194,27 @@ abstract IrregGerAbs = Cat ** {
|
|||||||
fun zeihen_V : V ;
|
fun zeihen_V : V ;
|
||||||
fun ziehen_V : V ;
|
fun ziehen_V : V ;
|
||||||
fun zwingen_V : V ;
|
fun zwingen_V : V ;
|
||||||
|
|
||||||
|
|
||||||
|
-- old spellings, before the German orthography reform
|
||||||
|
-- see https://en.wikipedia.org/wiki/German_orthography_reform_of_1996
|
||||||
|
|
||||||
|
fun beißen_old_V : V ;
|
||||||
|
fun fließen_old_V : V ;
|
||||||
|
fun fressen_old_V : V ;
|
||||||
|
fun genießen_old_V : V ;
|
||||||
|
fun gießen_old_V : V ;
|
||||||
|
fun lassen_old_V : V ;
|
||||||
|
fun messen_old_V : V ;
|
||||||
|
fun mißlingen_old_V : V ;
|
||||||
|
fun müssen_old_V : V ;
|
||||||
|
fun reißen_old_V : V ;
|
||||||
|
fun scheißen_old_V : V ;
|
||||||
|
fun schießen_old_V : V ;
|
||||||
|
fun schleißen_old_V : V ;
|
||||||
|
fun schließen_old_V : V ;
|
||||||
|
fun schmeißen_old_V : V ;
|
||||||
|
fun spleißen_old_V : V ;
|
||||||
|
fun sprießen_old_V : V ;
|
||||||
|
fun vergessen_old_V : V ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ lin
|
|||||||
s1 = heading1 (nounHeading adjective_Category).s ;
|
s1 = heading1 (nounHeading adjective_Category).s ;
|
||||||
s2 = frameTable (
|
s2 = frameTable (
|
||||||
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (AF Masc Sg)) ++ td (adj.s ! Posit ! (AF Masc Pl))) ++
|
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Masc Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++
|
||||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (AF Fem Sg)) ++ td (adj.s ! Posit ! (AF Fem Pl)))
|
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Fem Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl)))
|
||||||
)
|
)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ oper
|
|||||||
|
|
||||||
mkPredet = overload {
|
mkPredet = overload {
|
||||||
mkPredet : A -> Predet = \adj -> lin Predet {
|
mkPredet : A -> Predet = \adj -> lin Predet {
|
||||||
s = \\a,c => prepCase c ++ adj.s ! Posit ! AF a.g a.n ;
|
s = \\a,c => prepCase c ++ adj.s ! Posit ! genNum2Aform a.g a.n ;
|
||||||
c = Nom ;
|
c = Nom ;
|
||||||
a = PNoAg
|
a = PNoAg
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -78,8 +78,10 @@ oper
|
|||||||
|
|
||||||
mkAdj : (_,_,_,_,_ : Str) -> Adj = \solo,sola,soli,sole,solamente ->
|
mkAdj : (_,_,_,_,_ : Str) -> Adj = \solo,sola,soli,sole,solamente ->
|
||||||
{s = table {
|
{s = table {
|
||||||
AF Masc n => numForms solo soli ! n ;
|
ASg Masc _ => solo ;
|
||||||
AF Fem n => numForms sola sole ! n ;
|
ASg Fem _ => sola ;
|
||||||
|
APl Masc => soli ;
|
||||||
|
APl Fem => sole ;
|
||||||
AA => solamente
|
AA => solamente
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
@@ -189,6 +191,6 @@ oper
|
|||||||
-- Determiners, traditionally called indefinite pronouns, are inflected
|
-- Determiners, traditionally called indefinite pronouns, are inflected
|
||||||
-- in gender and number, like adjectives.
|
-- in gender and number, like adjectives.
|
||||||
|
|
||||||
pronForms : Adj -> Gender -> Number -> Str = \tale,g,n -> tale.s ! AF g n ;
|
pronForms : Adj -> Gender -> Number -> Str = \tale,g,n -> tale.s ! genNum2Aform g n ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,7 +165,9 @@ oper
|
|||||||
-- With irregular comparison, there are as it were two adjectives:
|
-- With irregular comparison, there are as it were two adjectives:
|
||||||
-- the positive ("buono") and the comparative ("migliore").
|
-- the positive ("buono") and the comparative ("migliore").
|
||||||
|
|
||||||
mkA : A -> A -> A -- special comparison, e.g. buono - migliore
|
mkA : A -> A -> A ; -- special comparison, e.g. buono - migliore
|
||||||
|
|
||||||
|
mkA : A -> CopulaType -> A -- force copula type
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- All the functions above create postfix adjectives. To switch
|
-- All the functions above create postfix adjectives. To switch
|
||||||
@@ -367,18 +369,19 @@ oper
|
|||||||
makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False} ** {lock_NP = <>} ;
|
makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False} ** {lock_NP = <>} ;
|
||||||
|
|
||||||
mk5A a b c d e =
|
mk5A a b c d e =
|
||||||
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; lock_A = <>} ;
|
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; lock_A = <>} ;
|
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
prefA a = {s = a.s ; isPre = True ; copTyp = a.copTyp ; lock_A = <>} ;
|
||||||
|
adjCopula a cop = a ** {copTyp = cop} ;
|
||||||
|
|
||||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||||
|
|
||||||
mkADeg a b =
|
mkADeg a b =
|
||||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
|
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
|
||||||
isPre = a.isPre ; lock_A = <>} ;
|
isPre = a.isPre ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
compADeg a =
|
compADeg a =
|
||||||
{s = table {Posit => a.s ! Posit ; _ => \\f => "più" ++ a.s ! Posit ! f} ;
|
{s = table {Posit => a.s ! Posit ; _ => \\f => "più" ++ a.s ! Posit ! f} ;
|
||||||
isPre = a.isPre ;
|
isPre = a.isPre ; copTyp = a.copTyp ;
|
||||||
lock_A = <>} ;
|
lock_A = <>} ;
|
||||||
regADeg a = compADeg (regA a) ;
|
regADeg a = compADeg (regA a) ;
|
||||||
|
|
||||||
@@ -510,11 +513,13 @@ oper
|
|||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : (bianco : Str) -> A = regA ;
|
mkA : (bianco : Str) -> A = regA ;
|
||||||
mkA : (solo,sola,soli,sole, solamente : Str) -> A = mk5A ;
|
mkA : (solo,sola,soli,sole, solamente : Str) -> A = mk5A ;
|
||||||
mkA : A -> A -> A = mkADeg
|
mkA : A -> A -> A = mkADeg ;
|
||||||
|
mkA : A -> CopulaType -> A = adjCopula ;
|
||||||
} ;
|
} ;
|
||||||
mk5A : (solo,sola,soli,sole, solamente : Str) -> A ;
|
mk5A : (solo,sola,soli,sole, solamente : Str) -> A ;
|
||||||
regA : Str -> A ;
|
regA : Str -> A ;
|
||||||
prefA : A -> A ;
|
prefA : A -> A ;
|
||||||
|
adjCopula : A -> CopulaType -> A ;
|
||||||
mkADeg : A -> A -> A ;
|
mkADeg : A -> A -> A ;
|
||||||
compADeg : A -> A ;
|
compADeg : A -> A ;
|
||||||
regADeg : Str -> A ;
|
regADeg : Str -> A ;
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ lin
|
|||||||
s1 = heading1 (nounHeading adjective_Category).s ;
|
s1 = heading1 (nounHeading adjective_Category).s ;
|
||||||
s2 = frameTable (
|
s2 = frameTable (
|
||||||
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (AF Masc Sg)) ++ td (adj.s ! Posit ! (AF Masc Pl))) ++
|
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Masc Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++
|
||||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (AF Fem Sg)) ++ td (adj.s ! Posit ! (AF Fem Pl)))
|
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Fem Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl)))
|
||||||
)
|
)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ concrete ExtendPor of Extend =
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
ICompAP ap = {
|
ICompAP ap = {
|
||||||
s =\\a => "o quão" ++ ap.s ! AF a.g a.n ;
|
s =\\a => "o quão" ++ ap.s ! (genNum2Aform a.g a.n) ;
|
||||||
cop = serCopula
|
cop = serCopula
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -142,7 +142,8 @@ concrete ExtendPor of Extend =
|
|||||||
lin
|
lin
|
||||||
PresPartAP vp = {
|
PresPartAP vp = {
|
||||||
s = \\af => gerVP vp (aform2aagr af ** {p = P3}) ;
|
s = \\af => gerVP vp (aform2aagr af ** {p = P3}) ;
|
||||||
isPre = False
|
isPre = False ;
|
||||||
|
copTyp = serCopula
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PastPartAP vps = pastPartAP vps [] ;
|
PastPartAP vps = pastPartAP vps [] ;
|
||||||
@@ -165,12 +166,12 @@ concrete ExtendPor of Extend =
|
|||||||
ComplBareVS = ComplVS ;
|
ComplBareVS = ComplVS ;
|
||||||
|
|
||||||
AdjAsCN ap = {
|
AdjAsCN ap = {
|
||||||
s =\\n => ap.s ! AF Masc n ;
|
s =\\n => ap.s ! (genNum2Aform Masc n) ;
|
||||||
g = Masc
|
g = Masc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdjAsNP ap = heavyNP {
|
AdjAsNP ap = heavyNP {
|
||||||
s = \\_c => ap.s ! AF Masc Sg ;
|
s = \\_c => ap.s ! ASg Masc APred ;
|
||||||
a = Ag Masc Sg P3
|
a = Ag Masc Sg P3
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -178,7 +179,8 @@ concrete ExtendPor of Extend =
|
|||||||
pastPartAP : VPSlash -> Str -> AP ;
|
pastPartAP : VPSlash -> Str -> AP ;
|
||||||
pastPartAP vps agent = lin AP {
|
pastPartAP vps agent = lin AP {
|
||||||
s = \\af => vps.comp ! (aform2aagr af ** {p = P3}) ++ vps.s.s ! VPart (aform2gender af) (aform2number af) ++ agent ;
|
s = \\af => vps.comp ! (aform2aagr af ** {p = P3}) ++ vps.s.s ! VPart (aform2gender af) (aform2number af) ++ agent ;
|
||||||
isPre = False
|
isPre = False ;
|
||||||
|
copTyp = serCopula
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
passVPSlash : VPSlash -> Str -> VP ;
|
passVPSlash : VPSlash -> Str -> VP ;
|
||||||
@@ -200,12 +202,11 @@ concrete ExtendPor of Extend =
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
CompoundAP noun adj = {
|
CompoundAP noun adj = {
|
||||||
s = \\af => case af of {
|
s = \\af => case (aform2aagr af) of {
|
||||||
AF g n => adj.s ! Posit ! AF noun.g n ++ "de" ++ noun.s ! n ;
|
{n = n} => adj.s ! Posit ! (genNum2Aform noun.g n) ++ "de" ++ noun.s ! n
|
||||||
-- do I need do(s)/da(s)?
|
|
||||||
_ => adj.s ! Posit ! AF noun.g Sg ++ "de" ++ noun.s ! Sg
|
|
||||||
} ;
|
} ;
|
||||||
isPre = adj.isPre
|
isPre = adj.isPre ;
|
||||||
|
copTyp = adj.copTyp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
GerundCN vp = {
|
GerundCN vp = {
|
||||||
|
|||||||
@@ -52,4 +52,12 @@ concrete IdiomPor of Idiom = CatPor **
|
|||||||
mkImperative False P1 vp ! RPos ! Masc ! Pl ; --- fem
|
mkImperative False P1 vp ! RPos ! Masc ! Pl ; --- fem
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
ImpP3 np vp = {
|
||||||
|
s = "deixe" ++ (np.s ! Nom).ton ++ infVP vp np.a ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SelfAdvVP vp = vp ;
|
||||||
|
SelfAdVVP vp = vp ;
|
||||||
|
SelfNP np = np ;
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||||
|
|
||||||
concrete LexiconPor of Lexicon = CatPor ** open
|
concrete LexiconPor of Lexicon = CatPor ** open
|
||||||
(M=MorphoPor), ParadigmsPor, BeschPor, Prelude in {
|
(M=MorphoPor), ParadigmsPor, BeschPor, Prelude, (D = DiffPor) in {
|
||||||
|
|
||||||
flags
|
flags
|
||||||
optimize=values ;
|
optimize=values ;
|
||||||
@@ -39,7 +39,7 @@ lin
|
|||||||
near_A = mkA "perto" ;
|
near_A = mkA "perto" ;
|
||||||
new_A = prefA (mkA "novo") ;
|
new_A = prefA (mkA "novo") ;
|
||||||
old_A = prefA (mkA "velho") ;
|
old_A = prefA (mkA "velho") ;
|
||||||
ready_A = mkA "pronto" ;
|
ready_A = adjCopula (mkA "pronto") D.estarCopula ;
|
||||||
red_A = mkA "vermelho" ;
|
red_A = mkA "vermelho" ;
|
||||||
rotten_A = mkA "podre" ;
|
rotten_A = mkA "podre" ;
|
||||||
round_A = mkA "redondo" ;
|
round_A = mkA "redondo" ;
|
||||||
@@ -82,7 +82,7 @@ lin
|
|||||||
belly_N = mkN "barriga" ;
|
belly_N = mkN "barriga" ;
|
||||||
bike_N = mkN "bicicleta" ;
|
bike_N = mkN "bicicleta" ;
|
||||||
bird_N = mkN "pássaro" ;
|
bird_N = mkN "pássaro" ;
|
||||||
blood_N = mkN "sangue" nonExist ;
|
blood_N = mkN "sangue" "sangues" ;
|
||||||
boat_N = mkN "bote" ;
|
boat_N = mkN "bote" ;
|
||||||
bone_N = mkN "osso" ;
|
bone_N = mkN "osso" ;
|
||||||
book_N = mkN "livro" ;
|
book_N = mkN "livro" ;
|
||||||
@@ -113,7 +113,7 @@ lin
|
|||||||
doctor_N = mkN "médico" ; -- médica
|
doctor_N = mkN "médico" ; -- médica
|
||||||
dog_N = mkN "cachorro" ; -- cadela
|
dog_N = mkN "cachorro" ; -- cadela
|
||||||
door_N = mkN "porta" ;
|
door_N = mkN "porta" ;
|
||||||
dust_N = mkN "poeira" nonExist ;
|
dust_N = mkN "poeira" "poeiras" ;
|
||||||
ear_N = mkN "orelha" ;
|
ear_N = mkN "orelha" ;
|
||||||
earth_N = mkN "terra" ;
|
earth_N = mkN "terra" ;
|
||||||
egg_N = mkN "ovo" ;
|
egg_N = mkN "ovo" ;
|
||||||
@@ -125,7 +125,7 @@ lin
|
|||||||
fingernail_N = mkN "unha" ;
|
fingernail_N = mkN "unha" ;
|
||||||
fire_N = mkN "fogo" ;
|
fire_N = mkN "fogo" ;
|
||||||
fish_N = mkN "peixe" ;
|
fish_N = mkN "peixe" ;
|
||||||
floor_N = mkN "chão" nonExist ; -- piso
|
floor_N = mkN "piso" "pisos" ; -- piso
|
||||||
flower_N = mkN "flor" feminine ;
|
flower_N = mkN "flor" feminine ;
|
||||||
fog_N = mkN "névoa" ;
|
fog_N = mkN "névoa" ;
|
||||||
foot_N = mkN "pé" ;
|
foot_N = mkN "pé" ;
|
||||||
@@ -136,11 +136,11 @@ lin
|
|||||||
garden_N = mkN "jardim" ;
|
garden_N = mkN "jardim" ;
|
||||||
girl_N = mkN "menina" ;
|
girl_N = mkN "menina" ;
|
||||||
glove_N = mkN "luva" ;
|
glove_N = mkN "luva" ;
|
||||||
gold_N = mkN "ouro" nonExist ;
|
gold_N = mkN "ouro" "ouros" ;
|
||||||
grammar_N = mkN "gramática" ;
|
grammar_N = mkN "gramática" ;
|
||||||
grass_N = mkN "grama" nonExist ;
|
grass_N = mkN "grama" "gramas" ;
|
||||||
guts_N = mkN "tripa" ;
|
guts_N = mkN "tripa" ;
|
||||||
hair_N = mkN "cabelo" nonExist ;
|
hair_N = mkN "cabelo" "cabelos" ;
|
||||||
hand_N = mkN "mão" "mãos" feminine ;
|
hand_N = mkN "mão" "mãos" feminine ;
|
||||||
harbour_N = mkN "porto" ;
|
harbour_N = mkN "porto" ;
|
||||||
hat_N = mkN "chapéu" ;
|
hat_N = mkN "chapéu" ;
|
||||||
@@ -160,7 +160,7 @@ lin
|
|||||||
lamp_N = mkN "lâmpada" ;
|
lamp_N = mkN "lâmpada" ;
|
||||||
language_N = mkN "linguagem" ;
|
language_N = mkN "linguagem" ;
|
||||||
leaf_N = mkN "folha" ;
|
leaf_N = mkN "folha" ;
|
||||||
leather_N = mkN "couro" nonExist ;
|
leather_N = mkN "couro" "couros" ;
|
||||||
leg_N = mkN "perna" ;
|
leg_N = mkN "perna" ;
|
||||||
liver_N = mkN "fígado" ;
|
liver_N = mkN "fígado" ;
|
||||||
louse_N = mkN "piolho" ;
|
louse_N = mkN "piolho" ;
|
||||||
@@ -203,7 +203,7 @@ lin
|
|||||||
rubber_N = mkN "borracha" ;
|
rubber_N = mkN "borracha" ;
|
||||||
rule_N = mkN "regra" ;
|
rule_N = mkN "regra" ;
|
||||||
salt_N = mkN "sal" ;
|
salt_N = mkN "sal" ;
|
||||||
sand_N = mkN "areia" nonExist ;
|
sand_N = mkN "areia" "areias" ;
|
||||||
school_N = mkN "escola" ;
|
school_N = mkN "escola" ;
|
||||||
science_N = mkN "ciência" ;
|
science_N = mkN "ciência" ;
|
||||||
sea_N = mkN "mar" ;
|
sea_N = mkN "mar" ;
|
||||||
@@ -213,17 +213,17 @@ lin
|
|||||||
shirt_N = mkN "camisa" ;
|
shirt_N = mkN "camisa" ;
|
||||||
shoe_N = mkN "sapato" ;
|
shoe_N = mkN "sapato" ;
|
||||||
shop_N = mkN "loja" ;
|
shop_N = mkN "loja" ;
|
||||||
silver_N = mkN "prata" nonExist ;
|
silver_N = mkN "prata" "pratas" ;
|
||||||
sister_N = mkN "irmã" ;
|
sister_N = mkN "irmã" ;
|
||||||
skin_N = mkN "pele" feminine ;
|
skin_N = mkN "pele" feminine ;
|
||||||
sky_N = mkN "céu" ;
|
sky_N = mkN "céu" ;
|
||||||
smoke_N = mkN "fumaça" nonExist ;
|
smoke_N = mkN "fumaça" "fumaças" ;
|
||||||
snake_N = mkN "cobra" ;
|
snake_N = mkN "cobra" ;
|
||||||
snow_N = mkN "neve" nonExist feminine ;
|
snow_N = mkN "neve" "neves" feminine ;
|
||||||
sock_N = mkN "meia" ;
|
sock_N = mkN "meia" ;
|
||||||
song_N = mkN "canção" "canções" feminine ;
|
song_N = mkN "canção" "canções" feminine ;
|
||||||
star_N = mkN "estrela" ;
|
star_N = mkN "estrela" ;
|
||||||
steel_N = mkN "aço" nonExist ;
|
steel_N = mkN "aço" "aços" ;
|
||||||
stick_N = mkN "bastão" "bastões" ;
|
stick_N = mkN "bastão" "bastões" ;
|
||||||
stone_N = mkN "pedra" ;
|
stone_N = mkN "pedra" ;
|
||||||
stove_N = mkN "forno" ;
|
stove_N = mkN "forno" ;
|
||||||
|
|||||||
@@ -118,8 +118,8 @@ oper
|
|||||||
mkAdj : (_,_,_,_,_ : Str) -> Adj =
|
mkAdj : (_,_,_,_,_ : Str) -> Adj =
|
||||||
\burro,burra,burros,burras,burramente ->
|
\burro,burra,burros,burras,burramente ->
|
||||||
{s = table {
|
{s = table {
|
||||||
AF Masc n => numForms burro burros ! n ;
|
ASg g _ => genForms burro burra ! g ;
|
||||||
AF Fem n => numForms burra burras ! n ;
|
APl g => genForms burros burras ! g ;
|
||||||
AA => burramente
|
AA => burramente
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
@@ -129,7 +129,8 @@ oper
|
|||||||
adj = mkAdjReg aj
|
adj = mkAdjReg aj
|
||||||
in {
|
in {
|
||||||
s = table {
|
s = table {
|
||||||
AF g n => adj.s ! AF g n ;
|
ASg g _ => adj.s ! ASg g APred ;
|
||||||
|
APl g => adj.s ! APl g ;
|
||||||
AA => av
|
AA => av
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
@@ -245,11 +246,11 @@ oper
|
|||||||
-- inflected in gender and number, like adjectives.
|
-- inflected in gender and number, like adjectives.
|
||||||
|
|
||||||
pronForms : Adj -> Gender -> Number -> Str =
|
pronForms : Adj -> Gender -> Number -> Str =
|
||||||
\tale,g,n -> tale.s ! AF g n ;
|
\tale,g,n -> tale.s ! (genNum2Aform g n) ;
|
||||||
|
|
||||||
mkOrdinal : A -> Ord = \adj ->
|
mkOrdinal : A -> Ord = \adj ->
|
||||||
lin Ord {
|
lin Ord {
|
||||||
s = \\ag => adj.s ! Posit ! AF ag.g ag.n ;
|
s = \\ag => adj.s ! Posit ! (genNum2Aform ag.g ag.n) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkQuantifier : (esse,essa,esses,essas : Str) -> Quant = \esse,essa,esses,essas->
|
mkQuantifier : (esse,essa,esses,essas : Str) -> Quant = \esse,essa,esses,essas->
|
||||||
|
|||||||
@@ -184,10 +184,14 @@ oper
|
|||||||
|
|
||||||
--2 Adjectives
|
--2 Adjectives
|
||||||
compADeg : A -> A ;
|
compADeg : A -> A ;
|
||||||
compADeg a = {s = table {Posit => a.s ! Posit ;
|
compADeg a = lin A {
|
||||||
_ => \\f => "mais" ++
|
s = table {
|
||||||
a.s ! Posit ! f} ;
|
Posit => a.s ! Posit ;
|
||||||
isPre = a.isPre ; lock_A = <>} ;
|
_ => \\f => "mais" ++ a.s ! Posit ! f
|
||||||
|
} ;
|
||||||
|
isPre = a.isPre ;
|
||||||
|
copTyp = a.copTyp
|
||||||
|
} ;
|
||||||
|
|
||||||
{- superlADeg : A -> A ;
|
{- superlADeg : A -> A ;
|
||||||
superlADeg a = {s = table {Posit => a.s ! Posit ;
|
superlADeg a = {s = table {Posit => a.s ! Posit ;
|
||||||
@@ -200,24 +204,32 @@ oper
|
|||||||
-- regADeg a = compADeg (regA a) ;
|
-- regADeg a = compADeg (regA a) ;
|
||||||
|
|
||||||
regA : Str -> A ;
|
regA : Str -> A ;
|
||||||
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ;
|
regA a = compADeg (lin A {s = \\_ => (mkAdjReg a).s ; isPre = False ; copTyp = serCopula}) ;
|
||||||
lock_A = <>} ;
|
|
||||||
|
|
||||||
mk2A : (único,unicamente : Str) -> A ;
|
mk2A : (único,unicamente : Str) -> A ;
|
||||||
mk2A adj adv = compADeg {s = \\_ => (mkAdj2 adj adv).s ; isPre = False ;
|
mk2A adj adv = compADeg {s = \\_ => (mkAdj2 adj adv).s ; isPre = False ;
|
||||||
|
copTyp = serCopula ;
|
||||||
lock_A = <>} ;
|
lock_A = <>} ;
|
||||||
|
|
||||||
mk5A : (preto,preta,pretos,pretas,pretamente : Str) -> A ;
|
mk5A : (preto,preta,pretos,pretas,pretamente : Str) -> A ;
|
||||||
mk5A a b c d e = compADeg {s = \\_ => (mkAdj a b c d e).s ;
|
mk5A a b c d e = compADeg {s = \\_ => (mkAdj a b c d e).s ;
|
||||||
isPre = False ; lock_A = <>} ;
|
isPre = False ; copTyp = serCopula ;
|
||||||
|
lock_A = <>} ;
|
||||||
|
|
||||||
|
adjCopula : A -> CopulaType -> A ;
|
||||||
|
adjCopula a cop = a ** {copTyp = cop} ;
|
||||||
|
|
||||||
mkADeg : A -> A -> A ;
|
mkADeg : A -> A -> A ;
|
||||||
mkADeg a b = {s = table {Posit => a.s ! Posit ;
|
mkADeg a b = lin A {
|
||||||
|
s = table {
|
||||||
|
Posit => a.s ! Posit ;
|
||||||
_ => b.s ! Posit
|
_ => b.s ! Posit
|
||||||
-- Compar => b.s ! Posit ;
|
-- Compar => b.s ! Posit ;
|
||||||
-- Superl => "o" ++ b.s ! Posit ;
|
-- Superl => "o" ++ b.s ! Posit ;
|
||||||
} ;
|
} ;
|
||||||
isPre = a.isPre ; lock_A = <>} ;
|
isPre = a.isPre ;
|
||||||
|
copTyp = a.copTyp
|
||||||
|
} ;
|
||||||
|
|
||||||
mkNonInflectA : A -> Str -> A ;
|
mkNonInflectA : A -> Str -> A ;
|
||||||
mkNonInflectA = \blanco,hueso -> blanco ** {s = \\x,y => blanco.s ! x ! y ++ hueso } ;
|
mkNonInflectA = \blanco,hueso -> blanco ** {s = \\x,y => blanco.s ! x ! y ++ hueso } ;
|
||||||
@@ -246,6 +258,9 @@ oper
|
|||||||
|
|
||||||
mkA : (blanco : A) -> (hueso : Str) -> A -- noninflecting component after the adjective
|
mkA : (blanco : A) -> (hueso : Str) -> A -- noninflecting component after the adjective
|
||||||
= mkNonInflectA ;
|
= mkNonInflectA ;
|
||||||
|
|
||||||
|
mkA : A -> CopulaType -> A -- force copula type
|
||||||
|
= adjCopula ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- The functions above create postfix adjectives. To switch them to
|
-- The functions above create postfix adjectives. To switch them to
|
||||||
@@ -256,7 +271,7 @@ oper
|
|||||||
prefixA = prefA ;
|
prefixA = prefA ;
|
||||||
|
|
||||||
prefA : A -> A ;
|
prefA : A -> A ;
|
||||||
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
prefA a = lin A {s = a.s ; isPre = True ; copTyp = a.copTyp} ;
|
||||||
|
|
||||||
--3 Two-place adjectives
|
--3 Two-place adjectives
|
||||||
--
|
--
|
||||||
@@ -320,7 +335,7 @@ oper
|
|||||||
"or" | "ôr" => pôr_Besch ;
|
"or" | "ôr" => pôr_Besch ;
|
||||||
_ => comprar_Besch -- hole
|
_ => comprar_Besch -- hole
|
||||||
}
|
}
|
||||||
in verboV (paradigm v) ;
|
in lin V (verboV (paradigm v)) ;
|
||||||
|
|
||||||
mkV = overload {
|
mkV = overload {
|
||||||
--- [ ] update
|
--- [ ] update
|
||||||
@@ -345,8 +360,8 @@ oper
|
|||||||
-- "Bescherelle" book. To use them in the category $V$, wrap them with
|
-- "Bescherelle" book. To use them in the category $V$, wrap them with
|
||||||
-- the function
|
-- the function
|
||||||
|
|
||||||
mkV : Verbum -> V = -- import verb constructed with BeschPor
|
mkV : Verbum -> V = \v -> -- import verb constructed with BeschPor
|
||||||
verboV ;
|
lin V (verboV v) ;
|
||||||
|
|
||||||
-- particle verb
|
-- particle verb
|
||||||
mkV : V -> Str -> V =
|
mkV : V -> Str -> V =
|
||||||
@@ -366,7 +381,7 @@ oper
|
|||||||
-- deviant past participle, e.g. abrir - aberto
|
-- deviant past participle, e.g. abrir - aberto
|
||||||
special_ppV ve pa = {
|
special_ppV ve pa = {
|
||||||
s = table {
|
s = table {
|
||||||
VPart g n => (adjPreto pa).s ! AF g n ;
|
VPart g n => (adjPreto pa).s ! (genNum2Aform g n) ;
|
||||||
p => ve.s ! p
|
p => ve.s ! p
|
||||||
} ;
|
} ;
|
||||||
lock_V = <> ;
|
lock_V = <> ;
|
||||||
@@ -516,6 +531,6 @@ oper
|
|||||||
isPol = False ;
|
isPol = False ;
|
||||||
isNeg = False} ** {lock_NP = <>} ;
|
isNeg = False} ** {lock_NP = <>} ;
|
||||||
|
|
||||||
reflVerboV : Verbum -> V = \ve -> reflV (verboV ve) ;
|
reflVerboV : Verbum -> V = \ve -> reflV (lin V (verboV ve)) ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -5,60 +5,68 @@ incomplete concrete AdjectiveRomance of Adjective =
|
|||||||
|
|
||||||
PositA a = {
|
PositA a = {
|
||||||
s = a.s ! Posit ;
|
s = a.s ! Posit ;
|
||||||
isPre = a.isPre
|
isPre = a.isPre ;
|
||||||
|
copTyp = a.copTyp
|
||||||
} ;
|
} ;
|
||||||
ComparA a np = {
|
ComparA a np = {
|
||||||
s = \\af => a.s ! Compar ! af ++ conjThan ++ (np.s ! Nom).ton ;
|
s = \\af => a.s ! Compar ! af ++ conjThan ++ (np.s ! Nom).ton ;
|
||||||
isPre = False
|
isPre = False ;
|
||||||
|
copTyp = a.copTyp
|
||||||
} ;
|
} ;
|
||||||
CAdvAP ad ap np = {
|
CAdvAP ad ap np = {
|
||||||
s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ (np.s ! Nom).ton ;
|
s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ (np.s ! Nom).ton ;
|
||||||
isPre = False
|
isPre = False ;
|
||||||
|
copTyp = ap.copTyp
|
||||||
} ;
|
} ;
|
||||||
UseComparA a = {
|
UseComparA a = {
|
||||||
s = \\af => a.s ! Compar ! af ;
|
s = \\af => a.s ! Compar ! af ;
|
||||||
isPre = a.isPre
|
isPre = a.isPre ;
|
||||||
|
copTyp = a.copTyp
|
||||||
} ;
|
} ;
|
||||||
AdjOrd ord = {
|
AdjOrd ord = {
|
||||||
s = \\af => ord.s ! (case af of {
|
s = \\af => ord.s ! aform2aagr af ; ----
|
||||||
AF g n => aagr g n ;
|
isPre = False ; ----
|
||||||
_ => aagr Masc Sg ----
|
copTyp = serCopula
|
||||||
}) ;
|
|
||||||
isPre = False ----
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||||
|
|
||||||
ComplA2 adj np = {
|
ComplA2 adj np = {
|
||||||
s = \\af => adj.s ! Posit ! af ++ appCompl adj.c2 np ;
|
s = \\af => adj.s ! Posit ! af ++ appCompl adj.c2 np ;
|
||||||
isPre = False
|
isPre = False ;
|
||||||
|
copTyp = serCopula
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ReflA2 adj = {
|
ReflA2 adj = {
|
||||||
s = \\af =>
|
s = \\af =>
|
||||||
adj.s ! Posit ! af ++
|
adj.s ! Posit ! af ++
|
||||||
adj.c2.s ++ prepCase adj.c2.c ++ reflPron Sg P3 Nom ; --- agr
|
adj.c2.s ++ prepCase adj.c2.c ++ reflPron Sg P3 Nom ; --- agr
|
||||||
isPre = False
|
isPre = False ;
|
||||||
|
copTyp = serCopula
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SentAP ap sc = {
|
SentAP ap sc = {
|
||||||
s = \\a => ap.s ! a ++ sc.s ! dative ; -- prête à dormir --- mood
|
s = \\a => ap.s ! a ++ sc.s ! dative ; -- prête à dormir --- mood
|
||||||
isPre = False
|
isPre = False ;
|
||||||
|
copTyp = ap.copTyp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdAP ada ap = {
|
AdAP ada ap = {
|
||||||
s = \\a => ada.s ++ ap.s ! a ;
|
s = \\a => ada.s ++ ap.s ! a ;
|
||||||
isPre = ap.isPre
|
isPre = ap.isPre ;
|
||||||
|
copTyp = ap.copTyp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseA2 a = {
|
UseA2 a = {
|
||||||
s = a.s ! Posit ;
|
s = a.s ! Posit ;
|
||||||
isPre = False ---- A2 has no isPre
|
isPre = False ; ---- A2 has no isPre
|
||||||
|
copTyp = serCopula ---- A2 has no copTyp (yet)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdvAP ap adv = {
|
AdvAP ap adv = {
|
||||||
s = \\a => ap.s ! a ++ adv.s ;
|
s = \\a => ap.s ! a ++ adv.s ;
|
||||||
isPre = False
|
isPre = False ;
|
||||||
|
copTyp = ap.copTyp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol]
|
|||||||
|
|
||||||
-- Adjective
|
-- Adjective
|
||||||
|
|
||||||
AP = {s : AForm => Str ; isPre : Bool} ;
|
AP = {s : AForm => Str ; isPre : Bool ; copTyp : CopulaType} ;
|
||||||
|
|
||||||
-- Noun
|
-- Noun
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol]
|
|||||||
V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||||
VS = Verb ** {m : RPolarity => Mood} ;
|
VS = Verb ** {m : RPolarity => Mood} ;
|
||||||
|
|
||||||
A = {s : Degree => AForm => Str ; isPre : Bool} ;
|
A = {s : Degree => AForm => Str ; isPre : Bool ; copTyp : CopulaType} ;
|
||||||
A2 = {s : Degree => AForm => Str ; c2 : Compl} ;
|
A2 = {s : Degree => AForm => Str ; c2 : Compl} ;
|
||||||
|
|
||||||
N = Noun ;
|
N = Noun ;
|
||||||
@@ -134,8 +134,8 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol]
|
|||||||
NP = \np -> (np.s ! Nom).comp ;
|
NP = \np -> (np.s ! Nom).comp ;
|
||||||
Conj = \c -> c.s2 ;
|
Conj = \c -> c.s2 ;
|
||||||
|
|
||||||
A = \a -> a.s ! Posit ! AF Masc Sg ;
|
A = \a -> a.s ! Posit ! ASg Masc APred ;
|
||||||
A2 = \a -> a.s ! Posit ! AF Masc Sg ++ a.c2.s ;
|
A2 = \a -> a.s ! Posit ! ASg Masc APred ++ a.c2.s ;
|
||||||
|
|
||||||
N = \n -> n.s ! Sg ;
|
N = \n -> n.s ! Sg ;
|
||||||
N2 = \n -> n.s ! Sg ++ n.c2.s ;
|
N2 = \n -> n.s ! Sg ++ n.c2.s ;
|
||||||
|
|||||||
@@ -30,7 +30,9 @@ param
|
|||||||
-- Comparative adjectives are moreover inflected in degree
|
-- Comparative adjectives are moreover inflected in degree
|
||||||
-- (which in Romance is usually syntactic, though).
|
-- (which in Romance is usually syntactic, though).
|
||||||
|
|
||||||
AForm = AF Gender Number | AA ;
|
AForm = ASg Gender APosition | APl Gender | AA ;
|
||||||
|
|
||||||
|
APosition = AAttr | APred ;
|
||||||
|
|
||||||
-- Gender is not morphologically determined for first and second person pronouns.
|
-- Gender is not morphologically determined for first and second person pronouns.
|
||||||
|
|
||||||
@@ -49,18 +51,44 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- genderpos2gender : GenderPosition -> {p1:Gender,p2:Number} = \gp -> case gp of {
|
||||||
|
-- MascSg _ => <Masc,Sg> ;
|
||||||
|
-- MascPl => <Masc,Pl> ;
|
||||||
|
-- FemSg => <Fem,Sg> ;
|
||||||
|
-- FemPl => <Fem,Pl>
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
aform2gender : AForm -> Gender = \a -> case a of {
|
aform2gender : AForm -> Gender = \a -> case a of {
|
||||||
AF g _ => g ;
|
ASg g _ => g ;
|
||||||
|
APl g => g ;
|
||||||
_ => Masc -- "le plus lentement"
|
_ => Masc -- "le plus lentement"
|
||||||
} ;
|
} ;
|
||||||
aform2number : AForm -> Number = \a -> case a of {
|
aform2number : AForm -> Number = \a -> case a of {
|
||||||
AF _ n => n ;
|
APl _ => Pl ;
|
||||||
_ => Sg -- "le plus lentement"
|
_ => Sg -- "le plus lentement"
|
||||||
} ;
|
} ;
|
||||||
aform2aagr : AForm -> AAgr = \a -> case a of {
|
aform2aagr : AForm -> AAgr = \a -> case a of {
|
||||||
AF g n => aagr g n ;
|
ASg g _ => aagr g Sg ;
|
||||||
|
APl g => aagr g Pl ;
|
||||||
_ => aagr Masc Sg -- "le plus lentement"
|
_ => aagr Masc Sg -- "le plus lentement"
|
||||||
} ;
|
} ;
|
||||||
|
aagr2aform : AAgr -> AForm = \gn -> case gn of {
|
||||||
|
{g=g ; n=Sg} => ASg g APred ;
|
||||||
|
{g=g ; n=Pl} => APl g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
genNum2Aform : Gender -> Number -> AForm ;
|
||||||
|
genNum2Aform g n = case n of {
|
||||||
|
Sg => ASg g APred ;
|
||||||
|
Pl => APl g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
genNumPos2Aform : Gender -> Number -> Bool -> AForm ;
|
||||||
|
genNumPos2Aform g n isPre = case n of {
|
||||||
|
Sg => ASg g (if_then_else APosition isPre AAttr APred) ;
|
||||||
|
Pl => APl g
|
||||||
|
} ;
|
||||||
|
|
||||||
conjGender : Gender -> Gender -> Gender = \m,n ->
|
conjGender : Gender -> Gender -> Gender = \m,n ->
|
||||||
case m of {
|
case m of {
|
||||||
@@ -236,7 +264,7 @@ oper
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
mkOrd : {s : Degree => AForm => Str} -> {s : AAgr => Str} ;
|
mkOrd : {s : Degree => AForm => Str} -> {s : AAgr => Str} ;
|
||||||
mkOrd x = {s = \\ag => x.s ! Posit ! AF ag.g ag.n} ;
|
mkOrd x = {s = \\ag => x.s ! Posit ! aagr2aform ag } ;
|
||||||
|
|
||||||
-- This is used in Spanish and Italian to bind clitics with preceding verb.
|
-- This is used in Spanish and Italian to bind clitics with preceding verb.
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ incomplete concrete ConjunctionRomance of Conjunction =
|
|||||||
hasClit = False ; isNeg = ss.isNeg
|
hasClit = False ; isNeg = ss.isNeg
|
||||||
}) ;
|
}) ;
|
||||||
ConjAP conj ss = conjunctDistrTable AForm conj ss ** {
|
ConjAP conj ss = conjunctDistrTable AForm conj ss ** {
|
||||||
isPre = ss.isPre
|
isPre = ss.isPre ;
|
||||||
|
copTyp = ss.copTyp
|
||||||
} ;
|
} ;
|
||||||
ConjRS conj ss = conjunctDistrTable2 Mood Agr conj ss ** {
|
ConjRS conj ss = conjunctDistrTable2 Mood Agr conj ss ** {
|
||||||
c = ss.c
|
c = ss.c
|
||||||
@@ -40,8 +41,8 @@ incomplete concrete ConjunctionRomance of Conjunction =
|
|||||||
s2 = \\c => xs.s2 ! c ; ----e (conjunctCase c) ;
|
s2 = \\c => xs.s2 ! c ; ----e (conjunctCase c) ;
|
||||||
a = conjAgr x.a xs.a ; isNeg = orB x.isNeg xs.isNeg
|
a = conjAgr x.a xs.a ; isNeg = orB x.isNeg xs.isNeg
|
||||||
} ;
|
} ;
|
||||||
BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre} ;
|
BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre ; copTyp = y.copTyp} ;
|
||||||
ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ;
|
ConsAP x xs = consrTable AForm comma x xs ** {isPre = andB x.isPre xs.isPre ; copTyp = xs.copTyp} ;
|
||||||
BaseRS x y = twoTable2 Mood Agr x y ** {c = y.c} ;
|
BaseRS x y = twoTable2 Mood Agr x y ** {c = y.c} ;
|
||||||
ConsRS xs x = consrTable2 Mood Agr comma xs x ** {c = xs.c} ;
|
ConsRS xs x = consrTable2 Mood Agr comma xs x ** {c = xs.c} ;
|
||||||
BaseIAdv = twoSS ;
|
BaseIAdv = twoSS ;
|
||||||
@@ -55,7 +56,7 @@ incomplete concrete ConjunctionRomance of Conjunction =
|
|||||||
[AdV] = {s1,s2 : Str} ;
|
[AdV] = {s1,s2 : Str} ;
|
||||||
[IAdv] = {s1,s2 : Str} ;
|
[IAdv] = {s1,s2 : Str} ;
|
||||||
[NP] = {s1,s2 : Case => Str ; a : Agr ; isNeg : Bool} ;
|
[NP] = {s1,s2 : Case => Str ; a : Agr ; isNeg : Bool} ;
|
||||||
[AP] = {s1,s2 : AForm => Str ; isPre : Bool} ;
|
[AP] = {s1,s2 : AForm => Str ; isPre : Bool ; copTyp : CopulaType} ;
|
||||||
[RS] = {s1,s2 : Mood => Agr => Str ; c : Case} ;
|
[RS] = {s1,s2 : Mood => Agr => Str ; c : Case} ;
|
||||||
[CN] = {s1,s2 : Number => Str ; g : Gender} ;
|
[CN] = {s1,s2 : Number => Str ; g : Gender} ;
|
||||||
|
|
||||||
|
|||||||
@@ -101,9 +101,9 @@ incomplete concrete NounRomance of Noun =
|
|||||||
|
|
||||||
AdNum adn num = {s = \\a => adn.s ++ num.s ! a ; isNum = num.isNum ; n = num.n} ;
|
AdNum adn num = {s = \\a => adn.s ++ num.s ! a ; isNum = num.isNum ; n = num.n} ;
|
||||||
|
|
||||||
OrdSuperl adj = {s = \\a => adj.s ! Superl ! AF a.g a.n} ;
|
OrdSuperl adj = {s = \\a => adj.s ! Superl ! genNum2Aform a.g a.n} ;
|
||||||
|
|
||||||
OrdNumeralSuperl num adj = {s = \\a => num.s ! NOrd a.g a.n ++ adj.s ! Superl ! AF a.g a.n} ; -- la terza più grande
|
OrdNumeralSuperl num adj = {s = \\a => num.s ! NOrd a.g a.n ++ adj.s ! Superl ! genNum2Aform a.g a.n} ; -- la terza più grande
|
||||||
---- could be discontinuous: la terza città più grande
|
---- could be discontinuous: la terza città più grande
|
||||||
|
|
||||||
DefArt = {
|
DefArt = {
|
||||||
@@ -153,7 +153,7 @@ incomplete concrete NounRomance of Noun =
|
|||||||
let
|
let
|
||||||
g = cn.g
|
g = cn.g
|
||||||
in {
|
in {
|
||||||
s = \\n => preOrPost ap.isPre (ap.s ! (AF g n)) (cn.s ! n) ;
|
s = \\n => preOrPost ap.isPre (ap.s ! genNumPos2Aform g n ap.isPre) (cn.s ! n) ;
|
||||||
g = g ;
|
g = g ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@ incomplete concrete NounRomance of Noun =
|
|||||||
a = np.a ** {n = det.n} } ;
|
a = np.a ** {n = det.n} } ;
|
||||||
|
|
||||||
AdjDAP det ap = {
|
AdjDAP det ap = {
|
||||||
s = \\g => det.s ! g ++ ap.s ! AF g det.n ;
|
s = \\g => det.s ! g ++ ap.s ! genNum2Aform g det.n ;
|
||||||
n = det.n ;
|
n = det.n ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ incomplete concrete PhraseRomance of Phrase =
|
|||||||
UttVP vp = {s = infVP vp (agrP3 Fem Sg)} ; --- Agr
|
UttVP vp = {s = infVP vp (agrP3 Fem Sg)} ; --- Agr
|
||||||
UttAdv adv = adv ;
|
UttAdv adv = adv ;
|
||||||
UttCN n = {s = n.s ! Sg} ;
|
UttCN n = {s = n.s ! Sg} ;
|
||||||
UttAP ap = {s = ap.s ! AF Masc Sg} ;
|
UttAP ap = {s = ap.s ! genNum2Aform Masc Sg} ;
|
||||||
UttCard n = {s = n.s ! Masc} ;
|
UttCard n = {s = n.s ! Masc} ;
|
||||||
UttInterj i = i ;
|
UttInterj i = i ;
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ incomplete concrete VerbRomance of Verb =
|
|||||||
ComplVS v s = insertExtrapos (\\b => conjThat ++ s.s ! (v.m ! b)) (predV v) ;
|
ComplVS v s = insertExtrapos (\\b => conjThat ++ s.s ! (v.m ! b)) (predV v) ;
|
||||||
ComplVQ v q = insertExtrapos (\\_ => q.s ! QIndir) (predV v) ;
|
ComplVQ v q = insertExtrapos (\\_ => q.s ! QIndir) (predV v) ;
|
||||||
ComplVA v ap =
|
ComplVA v ap =
|
||||||
insertComplement (\\a => let agr = complAgr a in ap.s ! AF agr.g agr.n) (predV v) ;
|
insertComplement (\\a => let agr = complAgr a in ap.s ! genNum2Aform agr.g agr.n) (predV v) ;
|
||||||
|
|
||||||
SlashV2a v = mkVPSlash v.c2 (predV v) ;
|
SlashV2a v = mkVPSlash v.c2 (predV v) ;
|
||||||
|
|
||||||
@@ -40,13 +40,13 @@ incomplete concrete VerbRomance of Verb =
|
|||||||
SlashV2A v ap =
|
SlashV2A v ap =
|
||||||
|
|
||||||
let af = case v.c3.isDir of {
|
let af = case v.c3.isDir of {
|
||||||
True => AF np.a.g np.a.n ; -- ... bleues
|
True => genNum2Aform np.a.g np.a.n ; -- ... bleues
|
||||||
_ => AF Masc Sg -- il les peint en bleu
|
_ => genNum2Aform Masc Sg -- il les peint en bleu
|
||||||
}
|
}
|
||||||
-}
|
-}
|
||||||
|
|
||||||
SlashV2A v ap =
|
SlashV2A v ap =
|
||||||
let af = AF Masc Sg
|
let af = genNum2Aform Masc Sg
|
||||||
in
|
in
|
||||||
mkVPSlash v.c2
|
mkVPSlash v.c2
|
||||||
(insertComplement
|
(insertComplement
|
||||||
@@ -91,7 +91,13 @@ incomplete concrete VerbRomance of Verb =
|
|||||||
|
|
||||||
UseCopula = predV copula ;
|
UseCopula = predV copula ;
|
||||||
|
|
||||||
CompAP ap = {s = \\ag => let agr = complAgr ag in ap.s ! AF agr.g agr.n ; cop = serCopula} ;
|
CompAP ap = {
|
||||||
|
s = \\ag =>
|
||||||
|
let
|
||||||
|
agr = complAgr ag
|
||||||
|
in ap.s ! genNum2Aform agr.g agr.n ;
|
||||||
|
cop = ap.copTyp
|
||||||
|
} ;
|
||||||
CompCN cn = { s = \\ag =>
|
CompCN cn = { s = \\ag =>
|
||||||
let agr = complAgr ag in
|
let agr = complAgr ag in
|
||||||
artIndef False cn.g agr.n Nom ++ cn.s ! agr.n ;
|
artIndef False cn.g agr.n Nom ++ cn.s ! agr.n ;
|
||||||
@@ -115,5 +121,5 @@ incomplete concrete VerbRomance of Verb =
|
|||||||
VPSlashPrep vp prep = vp ** {
|
VPSlashPrep vp prep = vp ** {
|
||||||
c2 = {s = prep.s ; c = prep.c ; isDir = False}
|
c2 = {s = prep.s ; c = prep.c ; isDir = False}
|
||||||
} ;
|
} ;
|
||||||
}
|
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ lin
|
|||||||
s1 = heading1 (nounHeading adjective_Category).s ;
|
s1 = heading1 (nounHeading adjective_Category).s ;
|
||||||
s2 = frameTable (
|
s2 = frameTable (
|
||||||
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (AF Masc Sg)) ++ td (adj.s ! Posit ! (AF Masc Pl))) ++
|
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! genNum2Aform Masc Sg) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++
|
||||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (AF Fem Sg)) ++ td (adj.s ! Posit ! (AF Fem Pl)))
|
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! genNum2Aform Fem Sg) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl)))
|
||||||
)
|
)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||||
|
|
||||||
concrete LexiconSpa of Lexicon = CatSpa ** open
|
concrete LexiconSpa of Lexicon = CatSpa ** open
|
||||||
(M=MorphoSpa), ParadigmsSpa, BeschSpa in {
|
(M=MorphoSpa), ParadigmsSpa, (D = DiffSpa), BeschSpa in {
|
||||||
|
|
||||||
flags
|
flags
|
||||||
coding=utf8 ;
|
coding=utf8 ;
|
||||||
@@ -233,6 +233,7 @@ lin
|
|||||||
correct_A = regA "correcto" ;
|
correct_A = regA "correcto" ;
|
||||||
dry_A = regA "seco" ;
|
dry_A = regA "seco" ;
|
||||||
dull_A = regA "desafilado" ;
|
dull_A = regA "desafilado" ;
|
||||||
|
ready_A = adjCopula (mkA "listo") D.estarCopula ;
|
||||||
full_A = regA "lleno" ;
|
full_A = regA "lleno" ;
|
||||||
heavy_A = regA "pesado" ;
|
heavy_A = regA "pesado" ;
|
||||||
near_A = regA "cercano" ;
|
near_A = regA "cercano" ;
|
||||||
|
|||||||
@@ -57,10 +57,14 @@ oper
|
|||||||
-- Adjectives are conveniently seen as gender-dependent nouns.
|
-- Adjectives are conveniently seen as gender-dependent nouns.
|
||||||
-- Here are some patterns. First one that describes the worst case.
|
-- Here are some patterns. First one that describes the worst case.
|
||||||
|
|
||||||
mkAdj : (_,_,_,_,_ : Str) -> Adj = \solo,sola,soli,sole,solamente ->
|
mkAdj : (x1,_,_,_,_,_,x7 : Str) -> Adj = \buen,solo,gran,sola,solos,solas,solamente ->
|
||||||
{s = table {
|
{s = table {
|
||||||
AF Masc n => numForms solo soli ! n ;
|
ASg Masc AAttr => buen ;
|
||||||
AF Fem n => numForms sola sole ! n ;
|
ASg Masc APred => solo ;
|
||||||
|
ASg Fem AAttr => gran ;
|
||||||
|
ASg Fem APred => sola ;
|
||||||
|
APl Masc => solos ;
|
||||||
|
APl Fem => solas ;
|
||||||
AA => solamente
|
AA => solamente
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
@@ -71,26 +75,36 @@ oper
|
|||||||
let
|
let
|
||||||
sol = Predef.tk 1 solo
|
sol = Predef.tk 1 solo
|
||||||
in
|
in
|
||||||
mkAdj solo (sol + "a") (sol + "os") (sol + "as") (sol + "amente") ;
|
mkAdj solo solo (sol + "a") (sol + "a")
|
||||||
|
(sol + "os") (sol + "as") (sol + "amente") ;
|
||||||
|
|
||||||
-- masculine and feminine are identical:
|
-- masculine and feminine are identical:
|
||||||
-- adjectives ending with -e, -a and many but not all that end in a consonant
|
-- adjectives ending with -e, -a and many but not all that end in a consonant
|
||||||
adjUtil : Str -> Str -> Adj = \util,utiles ->
|
adjUtil : Str -> Str -> Adj = \util,utiles ->
|
||||||
mkAdj util util utiles utiles (util + "mente") ;
|
mkAdj util util util util
|
||||||
|
utiles utiles (util + "mente") ;
|
||||||
|
|
||||||
-- adjectives that end in consonant but have different masc and fem forms
|
-- adjectives that end in consonant but have different masc and fem forms
|
||||||
-- español, hablador ...
|
-- español, hablador ...
|
||||||
adjEspanol : Str -> Str -> Adj = \espanol,espanola ->
|
adjEspanol : Str -> Str -> Adj = \espanol,espanola ->
|
||||||
mkAdj espanol espanola (espanol + "es") (espanol + "as") (espanola + "mente") ;
|
mkAdj espanol espanol espanola espanola
|
||||||
|
(espanol + "es") (espanol + "as") (espanola + "mente") ;
|
||||||
|
|
||||||
adjBlu : Str -> Adj = \blu ->
|
adjBueno : Str -> Adj = \bueno ->
|
||||||
mkAdj blu blu blu blu blu ; ---
|
let buen = init bueno in
|
||||||
|
mkAdj buen bueno (buen + "a") (buen + "a")
|
||||||
|
(buen + "os") (buen + "as") (buen + "amente") ;
|
||||||
|
|
||||||
|
adjGrande : Str -> Str -> Adj = \gran,grande ->
|
||||||
|
mkAdj gran grande gran grande
|
||||||
|
(grande + "s") (grande + "s") (grande + "mente") ;
|
||||||
|
|
||||||
-- francés francesa franceses francesas
|
-- francés francesa franceses francesas
|
||||||
adjEs : Str -> Adj = \francEs ->
|
adjEs : Str -> Adj = \francEs ->
|
||||||
let franc : Str = Predef.tk 2 francEs ;
|
let franc : Str = Predef.tk 2 francEs ;
|
||||||
frances : Str = franc + "es" ;
|
frances : Str = franc + "es" ;
|
||||||
in mkAdj francEs (frances + "a") (frances + "es") (frances + "as") (frances + "amente") ;
|
in mkAdj francEs francEs (frances + "a") (frances + "a")
|
||||||
|
(frances + "es") (frances + "as") (frances + "amente") ;
|
||||||
|
|
||||||
|
|
||||||
-- alemán alemana alemanes alemanas
|
-- alemán alemana alemanes alemanas
|
||||||
@@ -106,11 +120,13 @@ oper
|
|||||||
"ú" => "u"
|
"ú" => "u"
|
||||||
} ;
|
} ;
|
||||||
alemVn : Str = alem + V + "n" ;
|
alemVn : Str = alem + V + "n" ;
|
||||||
in mkAdj alemAn (alemVn + "a") (alemVn + "es")
|
in mkAdj alemAn alemAn (alemVn + "a") (alemVn + "a")
|
||||||
(alemVn + "as") (alemVn + "amente") ;
|
(alemVn + "es") (alemVn + "as") (alemVn + "amente") ;
|
||||||
|
|
||||||
mkAdjReg : Str -> Adj = \solo ->
|
mkAdjReg : Str -> Adj = \solo ->
|
||||||
case solo of {
|
case solo of {
|
||||||
|
"grande" => adjGrande "gran" "grande" ;
|
||||||
|
"bueno" => adjBueno solo ;
|
||||||
_ + "o" => adjSolo solo ;
|
_ + "o" => adjSolo solo ;
|
||||||
_ + ("e" | "a") => adjUtil solo (solo + "s") ;
|
_ + ("e" | "a") => adjUtil solo (solo + "s") ;
|
||||||
_ + "és" => adjEs solo ;
|
_ + "és" => adjEs solo ;
|
||||||
@@ -153,11 +169,11 @@ oper
|
|||||||
-- Determiners, traditionally called indefinite pronouns, are inflected
|
-- Determiners, traditionally called indefinite pronouns, are inflected
|
||||||
-- in gender and number, like adjectives.
|
-- in gender and number, like adjectives.
|
||||||
|
|
||||||
pronForms : Adj -> Gender -> Number -> Str = \tale,g,n -> tale.s ! AF g n ;
|
pronForms : Adj -> Gender -> Number -> Str = \tale,g,n -> tale.s ! genNum2Aform g n ;
|
||||||
|
|
||||||
mkOrdinal : A -> Ord = \adj->
|
mkOrdinal : A -> Ord = \adj->
|
||||||
lin Ord {
|
lin Ord {
|
||||||
s = \\ag => adj.s ! Posit ! AF ag.g ag.n ;
|
s = \\ag => adj.s ! Posit ! genNum2Aform ag.g ag.n ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkQuantifier : (ese,esa,esos,esas : Str) -> Quant = \ese,esa,esos,esas->
|
mkQuantifier : (ese,esa,esos,esas : Str) -> Quant = \ese,esa,esos,esas->
|
||||||
|
|||||||
@@ -156,14 +156,18 @@ oper
|
|||||||
-- One-place adjectives compared with "mas" need five forms in the worst
|
-- One-place adjectives compared with "mas" need five forms in the worst
|
||||||
-- case (masc and fem singular, masc plural, adverbial).
|
-- case (masc and fem singular, masc plural, adverbial).
|
||||||
|
|
||||||
mkA : (solo,sola,solos,solas,solamente : Str) -> A ; -- worst-case
|
mkA : (solo,sola,solos,solas,solamente : Str) -> A ; -- almost worst-case, except for buen/bueno gran/grande
|
||||||
|
|
||||||
|
mkA : (gran,grande,gran,grande,grandes,grandes,solamente : Str) -> A ; -- worst-case
|
||||||
|
|
||||||
-- In the worst case, two separate adjectives are given:
|
-- In the worst case, two separate adjectives are given:
|
||||||
-- the positive ("bueno"), and the comparative ("mejor").
|
-- the positive ("bueno"), and the comparative ("mejor").
|
||||||
|
|
||||||
mkA : (bueno : A) -> (mejor : A) -> A ; -- special comparison (default with "mas")
|
mkA : (bueno : A) -> (mejor : A) -> A ; -- special comparison (default with "mas")
|
||||||
|
|
||||||
mkA : (blanco : A) -> (hueso : Str) -> A -- noninflecting component after the adjective
|
mkA : (blanco : A) -> (hueso : Str) -> A ; -- noninflecting component after the adjective
|
||||||
|
|
||||||
|
mkA : A -> CopulaType -> A -- force copula type
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- The functions above create postfix adjectives. To switch
|
-- The functions above create postfix adjectives. To switch
|
||||||
@@ -354,23 +358,25 @@ oper
|
|||||||
|
|
||||||
makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False} ** {lock_NP = <>} ;
|
makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False} ** {lock_NP = <>} ;
|
||||||
|
|
||||||
mk5A a b c d e =
|
mk7A a b c d e f g =
|
||||||
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; lock_A = <>} ;
|
compADeg {s = \\_ => (mkAdj a b c d e f g).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
|
|
||||||
mk2A a b =
|
mk5A a b c d e = mk7A a a b b c d e ;
|
||||||
compADeg {s = \\_ => (adjEspanol a b).s ; isPre = False ; lock_A = <>} ;
|
|
||||||
|
|
||||||
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; lock_A = <>} ;
|
mk2A a b = compADeg {s = \\_ => (adjEspanol a b).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
|
||||||
|
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||||
|
adjCopula a cop = a ** {copTyp = cop} ;
|
||||||
|
prefA a = {s = a.s ; isPre = True ; copTyp = a.copTyp ; lock_A = <>} ;
|
||||||
|
|
||||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||||
|
|
||||||
mkADeg a b =
|
mkADeg a b =
|
||||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
|
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
|
||||||
isPre = a.isPre ; lock_A = <>} ;
|
isPre = a.isPre ; copTyp = a.copTyp ; lock_A = <>} ;
|
||||||
compADeg a =
|
compADeg a =
|
||||||
{s = table {Posit => a.s ! Posit ; _ => \\f => "más" ++ a.s ! Posit ! f} ;
|
{s = table {Posit => a.s ! Posit ; _ => \\f => "más" ++ a.s ! Posit ! f} ;
|
||||||
isPre = a.isPre ;
|
isPre = a.isPre ; copTyp = a.copTyp ;
|
||||||
lock_A = <>} ;
|
lock_A = <>} ;
|
||||||
regADeg a = compADeg (regA a) ;
|
regADeg a = compADeg (regA a) ;
|
||||||
|
|
||||||
@@ -407,7 +413,7 @@ oper
|
|||||||
|
|
||||||
special_ppV ve pa = {
|
special_ppV ve pa = {
|
||||||
s = table {
|
s = table {
|
||||||
VPart g n => (adjSolo pa).s ! AF g n ;
|
VPart g n => (adjSolo pa).s ! genNum2Aform g n ;
|
||||||
p => ve.s ! p
|
p => ve.s ! p
|
||||||
} ;
|
} ;
|
||||||
lock_V = <> ;
|
lock_V = <> ;
|
||||||
@@ -508,14 +514,19 @@ oper
|
|||||||
mkA : (util : Str) -> A = regA ;
|
mkA : (util : Str) -> A = regA ;
|
||||||
mkA : (espanol,espanola : Str) -> A = mk2A ;
|
mkA : (espanol,espanola : Str) -> A = mk2A ;
|
||||||
mkA : (solo,sola,solos,solas,solamente : Str) -> A = mk5A ;
|
mkA : (solo,sola,solos,solas,solamente : Str) -> A = mk5A ;
|
||||||
|
mkA : (_,_,_,_,_,_,_ : Str) -> A = mk7A ;
|
||||||
mkA : (bueno : A) -> (mejor : A) -> A = mkADeg ;
|
mkA : (bueno : A) -> (mejor : A) -> A = mkADeg ;
|
||||||
mkA : (blanco : A) -> (hueso : Str) -> A = \blanco,hueso -> blanco **
|
mkA : (blanco : A) -> (hueso : Str) -> A = \blanco,hueso -> blanco **
|
||||||
{ s = \\x,y => blanco.s ! x ! y ++ hueso } ;
|
{ s = \\x,y => blanco.s ! x ! y ++ hueso } ;
|
||||||
|
mkA : A -> CopulaType -> A =
|
||||||
|
adjCopula ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mk7A : (_,_,_,_,_,_,_ : Str) -> A ;
|
||||||
mk5A : (solo,sola,solos,solas,solamente : Str) -> A ;
|
mk5A : (solo,sola,solos,solas,solamente : Str) -> A ;
|
||||||
mk2A : (espanol,espanola : Str) -> A ;
|
mk2A : (espanol,espanola : Str) -> A ;
|
||||||
regA : Str -> A ;
|
regA : Str -> A ;
|
||||||
|
adjCopula : A -> CopulaType -> A ;
|
||||||
mkADeg : A -> A -> A ;
|
mkADeg : A -> A -> A ;
|
||||||
compADeg : A -> A ;
|
compADeg : A -> A ;
|
||||||
regADeg : Str -> A ;
|
regADeg : Str -> A ;
|
||||||
|
|||||||
@@ -89,7 +89,8 @@ lin
|
|||||||
|
|
||||||
PastPartAP v = {
|
PastPartAP v = {
|
||||||
s = table {
|
s = table {
|
||||||
AF g n => v.s ! VPart g n ;
|
ASg g _ => v.s ! VPart g Sg ;
|
||||||
|
APl g _ => v.s ! VPart g Pl ;
|
||||||
_ => v.s ! VPart Masc Sg ---- the adverb form
|
_ => v.s ! VPart Masc Sg ---- the adverb form
|
||||||
} ;
|
} ;
|
||||||
isPre = True
|
isPre = True
|
||||||
|
|||||||
Reference in New Issue
Block a user