1
0
forked from GitHub/gf-rgl
This commit is contained in:
Inari Listenmaa
2019-07-19 10:06:14 +03:00
66 changed files with 10546 additions and 4347 deletions

View File

@@ -1,4 +1,4 @@
--# -path=.:alltenses:prelude:../latin
resource ConstructorsLat = Constructors with (Grammar = GrammarLat) **
open MissingLat in {}
open MissingLat in {} ;

View File

@@ -1,5 +1,5 @@
--# -path=.:../icelandic:../common:../abstract:../prelude
--# -path=.:../latin:../common:../abstract:../prelude
resource SymbolicLat = Symbolic with
(Symbol = SymbolLat),
(Grammar = GrammarLat) ;
(Grammar = GrammarLat) ** open MissingLat in {} ;

View File

@@ -367,7 +367,9 @@ resource ParadigmsAra = open
mkN : Species -> N -> N
= \p,n -> n ** {h = p} ;
mkN : (sg,pl : Str) -> Gender -> Species -> N
= \sg,pl -> mkFullN (reg sg pl) ;
= \sg,pl -> case <sg,pl> of {
<x@(_ + "ة") + #vow*, _ + "ات" + #vow*> => mkFullN (sndf x) ; -- extra safety: if someone gives case marking to the constructor, ignore it
_ => mkFullN (reg sg pl) } ;
mkN : NTable -> Gender -> Species -> N -- TO BE DEPRECATED; kept for backwards-compatibility. For the same behaviour, use either the constructor above, sdfN or sdmN.
= mkFullN ;
mkN : (root,sgPatt,brokenPlPatt : Str) -> Gender -> Species -> N -- broken plural

View File

@@ -106,13 +106,17 @@ concrete CatGer of Cat =
Tense = {s : Str ; t : ResGer.Tense ; m : Mood} ;
linref
NP = \np -> np.s!(NPC Nom) ++ np.adv ++ np.ext ++ np.rc ; -- HL 6/2019
CN = \cn -> cn.s ! Strong ! Pl ! Nom ++ cn.adv ++ cn.ext ++ cn.rc ! Pl ;
SSlash = \ss -> ss.s ! Main ++ ss.c2.s ;
ClSlash = \cls -> cls.s ! MIndic ! Pres ! Simul ! Pos ! Main ++ cls.c2.s ;
VP = \vp -> useInfVP False vp ;
VPSlash = \vps -> useInfVP False vps ++ vps.c2.s ;
AP = \ap -> ap.s ! APred ++ ap.ext ;
AP = \ap -> ap.c.p1 ++ ap.s ! APred ++ ap.c.p2 ++ ap.ext ;
A2 = \a2 -> a2.s ! Posit ! APred ++ a2.c2.s ;
V, VS, VQ, VA = \v -> useInfVP False (predV v) ;
V2, V2A, V2Q, V2S = \v -> useInfVP False (predV v) ++ v.c2.s ;

View File

@@ -10,7 +10,7 @@ lin
hungry_VP = mkVP (mkA "hungrig") ;
thirsty_VP = mkVP (mkA "durstig") ;
tired_VP = mkVP (mkA "müde") ;
scared_VP = mkVP have_V2 (mkNP (mkN "Angst" "Angsten" feminine)) ;
scared_VP = mkVP have_V2 (mkNP (mkN "Angst" "Ängste" feminine)) ;
ill_VP = mkVP (mkA "krank") ;
ready_VP = mkVP (mkA "bereit") ;

View File

@@ -256,8 +256,8 @@ lin
abgehen_V = prefixV "ab" (irregV "gehen" "geht" "ging" "ginge" "gegangen") ;
abgenzern_V2 = dirV2 (prefixV "ab" (regV "genzern")) ;
abgeraten_von_V2 = prepV2 (prefixV "ab" (irregV "geraten" "gerät" "geriet" "geriete" "geraten")) von_Prep ;
abgewoehnen_rV2 = reflV2 (prefixV "ab" (regV "gewöhnen")) accusative accPrep ;
abgewoehnen_rVV = reflVV (prefixV "ab" (regV "gewöhnen")) accusative ;
abgewoehnen_rV2 = reflV2 (prefixV "ab" (regV "gewöhnen")) dative accPrep ;
abgewoehnen_rVV = reflVV (prefixV "ab" (regV "gewöhnen")) dative ;
abgraebeln_V = prefixV "ab" (regV "gräbeln") ;
abgraten_V2 = dirV2 (prefixV "ab" (regV "graten")) ;
abgrenzen_V2 = dirV2 (prefixV "ab" (regV "grenzen")) ;
@@ -338,9 +338,9 @@ lin
absahnen_V2 = dirV2 (prefixV "ab" (regV "sahnen")) ;
abschachern_dat_V3 = accdatV3 (prefixV "ab" (regV "schachern")) ;
abschaffen_V2 = dirV2 (prefixV "ab" (regV "schaffen")) ;
abschauen_bei_rV3 = reflV3 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) accusative accPrep bei_Prep ;
abschauen_bei_rV3 = reflV3 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) dative accPrep bei_Prep ;
abschauen_bei_V3 = dirV3 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) bei_Prep ;
abschauen_rV2 = reflV2 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) accusative accPrep ;
abschauen_rV2 = reflV2 (prefixV "ab" (irregV "schauen" "schaut" "schaute" "schaute" "geschaut")) dative accPrep ;
abschenken_V2 = dirV2 (prefixV "ab" (regV "schenken")) ;
abschenken_V = prefixV "ab" (regV "schenken") ;
abschicken_V2 = dirV2 (prefixV "ab" (regV "schicken")) ;
@@ -350,7 +350,7 @@ lin
abschliessen_V2 = dirV2 (prefixV "ab" (irregV "schließen" "schließt" "schloss" "schlösse" "geschlossen")) ;
abschmettern_V2 = dirV2 (prefixV "ab" (irregV "schmettern" "schmettert" "schmetterte" "schmetterte" "geschmettert")) ;
abschmieren_V = prefixV "ab" (regV "schmieren") ;
abschminken_rV2 = reflV2 (prefixV "ab" (regV "schminken")) accusative accPrep ;
abschminken_rV2 = reflV2 (prefixV "ab" (regV "schminken")) dative accPrep ;
abschminken_V2 = dirV2 (prefixV "ab" (regV "schminken")) ;
abschmirgeln_V2 = dirV2 (prefixV "ab" (regV "schmirgeln")) ;
abschmuecken_V2 = dirV2 (prefixV "ab" (regV "schmücken")) ;
@@ -580,7 +580,7 @@ lin
anfreunden_mit_rV2 = reflV2 (prefixV "an" (regV "freunden")) accusative mit_Prep ;
anfuehlen_V2 = dirV2 (prefixV "an" (regV "fühlen")) ;
anfuehlen_wie_rV2 = reflV2 (prefixV "an" (regV "fühlen")) accusative (mkPrep "wie" nominative) ;
angeben_mit_V2 = prepV2 (prefixV "an" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) mit_Prep ;
angeben_mit_V2 = prepV2 (prefixV "an" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) mit_Prep ;
angehen_sV = dassV (prefixV "an" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) ;
angehen_V2 = dirV2 (prefixV "an" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) ;
angehoeren_dat_V2 = mkV2 (prefixV "an" (regV "gehören")) datPrep ;
@@ -797,9 +797,9 @@ lin
auffassen_als_V3 = dirV3 (prefixV "auf" (regV "fassen")) (mkPrep "als" accusative) ;
auffrieren_V = prefixV "auf" (irregV "frieren" "friert" "fror" "fröre" "gefroren") ;
auffuehren_V2 = dirV2 (prefixV "auf" (regV "führen")) ;
aufgeben_V2 = dirV2 (prefixV "auf" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ;
aufgeben_V = prefixV "auf" (irregV "geben" "gebt" "gab" "gäbe" "gegeben") ;
aufgeben_VV = mkVV (prefixV "auf" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ;
aufgeben_V2 = dirV2 (prefixV "auf" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ;
aufgeben_V = prefixV "auf" (irregV "geben" "gibt" "gab" "gäbe" "gegeben") ;
aufgeben_VV = mkVV (prefixV "auf" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ;
aufgehen_dat_V2 = mkV2 (prefixV "auf" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) datPrep ;
aufgehen_V = prefixV "auf" (irregV "gehen" "geht" "ging" "ginge" "gegangen") ;
aufhaengen_V2 = dirV2 (prefixV "auf" (regV "hängen")) ;
@@ -925,7 +925,7 @@ lin
ausbuexen_von_V2 = prepV2 (prefixV "aus" (regV "büxen")) von_Prep ;
ausbuexen_V = prefixV "aus" (regV "büxen") ;
ausdehnen_rV = reflV (prefixV "aus" (regV "dehnen")) accusative ;
ausdenken_rV2 = reflV2 (prefixV "aus" (irregV "denken" "denkt" "dachte" "dächte" "gedacht")) accusative accPrep ;
ausdenken_rV2 = reflV2 (prefixV "aus" (irregV "denken" "denkt" "dachte" "dächte" "gedacht")) dative accPrep ;
ausdruecken_rVA = reflVA (prefixV "aus" (regV "drücken")) accusative ;
ausdruecken_V2 = dirV2 (prefixV "aus" (regV "drücken")) ;
-- ausdruecken_V = prefixV "aus" (irregV "drücken" "drückt" "drückte" "drückte" "gedrückt") ;
@@ -938,7 +938,7 @@ lin
ausfuehren_V2 = dirV2 (prefixV "aus" (regV "führen")) ;
ausfuehren_VS = mkVS (prefixV "aus" (regV "führen")) ;
ausfuellen_V2 = dirV2 (prefixV "aus" (regV "füllen")) ;
ausgeben_V2 = dirV2 (prefixV "aus" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ;
ausgeben_V2 = dirV2 (prefixV "aus" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ;
ausgehen_mit_V2 = prepV2 (prefixV "aus" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) mit_Prep ;
ausgehen_V = prefixV "aus" (irregV "gehen" "geht" "ging" "ginge" "gegangen") ;
ausgleichen_durch_V3 = dirV3 (prefixV "aus" (irregV "gleichen" "gleicht" "glich" "gliche" "geglichen")) durch_Prep ;
@@ -1194,7 +1194,7 @@ lin
behandeln_als_V3 = dirV3 (regV "behandeln") (mkPrep "als" accusative) ;
behandeln_mit_V3 = dirV3 (regV "behandeln") mit_Prep ;
behaupten_VS = mkVS (irregV "behaupten" "behauptet" "behauptete" "behaupte" "behauptet") ;
behelfen_mit_rV2 = reflV2 (irregV "behelfen" "behilft" "behalf" "behalf" "beholfen") accusative mit_Prep ;
behelfen_mit_rV2 = reflV2 (irregV "behelfen" "behilft" "behalf" "behalf" "beholfen") dative mit_Prep ;
behelligen_mit_V3 = dirV3 (regV "behelligen") mit_Prep ;
beherbergen_V2 = dirV2 (regV "beherbergen") ;
beherrschen_V2 = dirV2 (regV "beherrschen") ;
@@ -1902,7 +1902,7 @@ lin
einen_V2 = dirV2 (regV "einen") ;
einfallen_dat_sV2 = dassV2 (prefixV "ein" (irregV "fallen" "fallt" "fiel" "fiele" "gefallen")) datPrep ;
einfallen_in_V2 = prepV2 (prefixV "ein" (irregV "fallen" "fallt" "fiel" "fiele" "gefallen")) (mkPrep "in" accusative) ;
einfangen_rV2 = reflV2 (prefixV "ein" (irregV "fangen" "fängt" "fing" "fing" "gefangen")) accusative accPrep ;
einfangen_rV2 = reflV2 (prefixV "ein" (irregV "fangen" "fängt" "fing" "fing" "gefangen")) dative accPrep ;
einfangen_V2 = dirV2 (prefixV "ein" (irregV "fangen" "fängt" "fing" "fing" "gefangen")) ;
einfinden_loc_rV2 = reflV2 (prefixV "ein" (irregV "finden" "findet" "fand" "fände" "gefunden")) accusative loc_Prep ;
einfloessen_dat_V2S = mkV2S (prefixV "ein" (irregV "flößen" "flößt" "flöße" "flöße" "geflößt")) datPrep ;
@@ -1913,7 +1913,7 @@ lin
einfuegen_rV = reflV (prefixV "ein" (regV "fügen")) accusative ;
einfuehren_in_V3 = dirV3 (prefixV "ein" (regV "führen")) (mkPrep "in" accusative) ;
einfuehren_V2 = dirV2 (prefixV "ein" (regV "führen")) ;
eingeben_in_V3 = dirV3 (prefixV "ein" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) (mkPrep "in" accusative) ;
eingeben_in_V3 = dirV3 (prefixV "ein" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) (mkPrep "in" accusative) ;
eingehen_in_V2 = prepV2 (prefixV "ein" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) (mkPrep "in" accusative) ;
eingehen_V = prefixV "ein" (irregV "gehen" "geht" "ging" "ginge" "gegangen") ;
eingemeinden_V2 = dirV2 (prefixV "ein" (irregV "gemeinden" "gemeindet" "gemeindete" "gemeindete" "gemeindet")) ;
@@ -2210,7 +2210,7 @@ lin
ergaenzen_mit_V3 = dirV3 (irregV "ergänzen" "ergänzt" "ergänzte" "ergänzte" "ergänzt") mit_Prep ;
ergattern_V2 = dirV2 (irregV "ergattern" "ergattert" "ergatterte" "ergattere" "ergattert") ;
ergaunern_V2 = dirV2 (irregV "ergaunern" "ergaunert" "ergaunerte" "ergaunerte" "ergaunert") ;
ergeben_dat_rV2 = reflV2 (irregV "ergeben" "ergebt" "ergab" "ergäbe" "ergeben") accusative datPrep ;
ergeben_dat_rV2 = reflV2 (irregV "ergeben" "ergibt" "ergab" "ergäbe" "ergeben") accusative datPrep ;
ergetzen_am_V2 = prepV2 (irregV "ergetzen" "ergetzt" "ergetzte" "ergetzte" "ergetzt") (mkPrep "an" dative) ;
ergiessen_in_V2 = prepV2 (irregV "ergießen" "ergießt" "ergoss" "ergösse" "ergossen") (mkPrep "in" accusative) ;
ergiessen_ueber_V2 = prepV2 (irregV "ergießen" "ergießt" "ergoss" "ergösse" "ergossen") (mkPrep "über" accusative) ;
@@ -2266,7 +2266,7 @@ lin
erleichtern_rV = reflV (irregV "erleichtern" "erleichtert" "erleichterte" "erleichtere" "erleichtert") accusative ;
erleiden_V2 = dirV2 (irregV "erleiden" "erleidet" "erlitt" "erlitte" "erlitten") ;
erlernen_V2 = dirV2 (irregV "erlernen" "erlernt" "erlernte" "erlernte" "erlernt") ;
erlesen_rV2 = reflV2 (irregV "erlesen" "erlest" "erlas" "erläse" "erlesen") accusative accPrep ;
erlesen_rV2 = reflV2 (irregV "erlesen" "erlest" "erlas" "erläse" "erlesen") dative accPrep ;
erleuchten_V2 = dirV2 (irregV "erleuchten" "erleuchtet" "erleuchtete" "erleuchtete" "erleuchtet") ;
erloeschen_V = irregV "erlöschen" "erlöscht" "erlosch" "erlösche" "erloschen" ;
erloesen_V2 = dirV2 (irregV "erlösen" "erlöst" "erlöste" "erlöste" "erlöst") ;
@@ -2369,7 +2369,7 @@ lin
erwaermen_V2 = dirV2 (irregV "erwärmen" "erwärmt" "erwärmte" "erwärmte" "erwärmt") ;
erwahren_V2 = dirV2 (irregV "erwahren" "erwahrt" "erwahrte" "erwahrte" "erwahrt") ;
erwarten_V2 = dirV2 (irregV "erwarten" "erwartet" "erwartete" "erwarte" "erwartet") ;
erwarten_von_rV3 = reflV3 (irregV "erwarten" "erwartet" "erwartete" "erwarte" "erwartet") accusative accPrep von_Prep ;
erwarten_von_rV3 = reflV3 (irregV "erwarten" "erwartet" "erwartete" "erwarte" "erwartet") dative accPrep von_Prep ;
erweichen_V2 = dirV2 (irregV "erweichen" "erweicht" "erweichte" "erweichte" "erweicht") ;
erweisen_dat_V3 = accdatV3 (irregV "erweisen" "erweist" "erwies" "erwiese" "erwiesen") ;
erweitern_V2 = dirV2 (irregV "erweitern" "erweitert" "erweiterte" "erweiterte" "erweitert") ;
@@ -2761,7 +2761,7 @@ lin
gebaerden_als_rV2 = reflV2 (irregV "gebärden" "gebärdet" "gebärdete" "gebärdete" "gebärdet") accusative (mkPrep "als" nominative) ;
gebaerden_wie_rV2 = reflV2 (irregV "gebärden" "gebärdet" "gebärdete" "gebärdete" "gebärdet") accusative (mkPrep "wie" nominative) ;
gebaeren_V2 = dirV2 (irregV "gebären" "gebärt" "gebar" "gebäre" "geboren") ;
geben_dat_V3 = accdatV3 (irregV "geben" "gebt" "gab" "gäbe" "gegeben") ;
geben_dat_V3 = accdatV3 (irregV "geben" "gibt" "gab" "gäbe" "gegeben") ;
gebieten_dat_V2V = mkV2V (irregV "gebieten" "gebietet" "gebot" "geböte" "geboten") datPrep ;
gebrauchen_V2 = dirV2 (irregV "gebrauchen" "gebraucht" "gebrauchte" "gebrauchte" "gebraucht") ;
gebuehren_dat_sV2 = dassV2 (irregV "gebühren" "gebührt" "gebührte" "gebührte" "gebührt") datPrep ;
@@ -2826,7 +2826,7 @@ lin
gestatten_dat_V2S = mkV2S (irregV "gestatten" "gestattet" "gestattete" "gestattete" "gestattet") datPrep ;
gestatten_dat_V3 = accdatV3 (irregV "gestatten" "gestattet" "gestattete" "gestattete" "gestattet") ;
gestikulieren_V = regV "gestikulieren" ;
getrauen_rVV = reflVV (irregV "getrauen" "getraut" "getraute" "getraute" "getraut") dative ;
getrauen_rVV = reflVV (irregV "getrauen" "getraut" "getraute" "getraute" "getraut") accusative ;
gettoisieren_V2 = dirV2 (regV "gettoisieren") ;
gewaehren_dat_V3 = accdatV3 (irregV "gewähren" "gewährt" "gewährte" "gewährte" "gewährt") ;
gewaehrleisten_dat_V2S = mkV2S (irregV "gewährleisten" "gewährleistet" "gewährleistete" "gewährleistete" "gewährleistet") datPrep ;
@@ -2904,7 +2904,7 @@ lin
grausen_sV2 = dassV2 (regV "grausen") accPrep ;
grausen_V2 = dirV2 (regV "grausen") ;
greifen_dir_V2 = prepV2 (irregV "greifen" "greift" "griff" "griffe" "gegriffen") dir_Prep ;
greifen_rV2 = reflV2 (irregV "greifen" "greift" "griff" "griffe" "gegriffen") accusative accPrep ;
greifen_rV2 = reflV2 (irregV "greifen" "greift" "griff" "griffe" "gegriffen") dative accPrep ;
greinen_V = regV "greinen" ;
grenzen_an_V2 = prepV2 (regV "grenzen") (mkPrep "an" accusative) ;
grienen_V = regV "grienen" ;
@@ -3041,7 +3041,7 @@ lin
herausarbeiten_VS = mkVS (prefixV "heraus" (regV "arbeiten")) ;
herausfinden_V2 = dirV2 (prefixV "heraus" (irregV "finden" "findet" "fand" "fände" "gefunden")) ;
herausfinden_VS = mkVS (prefixV "heraus" (irregV "finden" "findet" "fand" "fände" "gefunden")) ;
herausgeben_V2 = dirV2 (prefixV "heraus" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ;
herausgeben_V2 = dirV2 (prefixV "heraus" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ;
herauskommen_aus_V2 = prepV2 (prefixV "heraus" (irregV "kommen" "kommt" "kam" "käme" "gekommen")) aus_Prep ;
herauskommen_sV = dassV (prefixV "heraus" (irregV "kommen" "kommt" "kam" "käme" "gekommen")) ;
herauskristallisieren_rV = reflV (prefixV "heraus" (regV "kristallisieren")) accusative ;
@@ -3677,7 +3677,7 @@ lin
krakeelen_V = regV "krakeelen" ;
krakeelen_VS = mkVS (regV "krakeelen") ;
krakeln_dir_V3 = dirV3 (regV "krakeln") dir_Prep ;
krallen_rV2 = reflV2 (regV "krallen") accusative accPrep ;
krallen_rV2 = reflV2 (regV "krallen") dative accPrep ;
kramen_aus_V3 = dirV3 (regV "kramen") aus_Prep ;
kramen_in_nach_V3 = mkV3 (regV "kramen") (mkPrep "in" accusative) nach_Prep ;
kranken_am_V2 = prepV2 (regV "kranken") (mkPrep "an" dative) ;
@@ -3843,12 +3843,12 @@ lin
leiden_V2 = dirV2 (irregV "leiden" "leidet" "litt" "litte" "gelitten") ;
leidtun_dat_sV2 = dassV2 (prefixV "leid" (irregV "tun" "tut" "tat" "täte" "getan")) datPrep ;
leidtun_dat_V2 = mkV2 (prefixV "leid" (irregV "tun" "tut" "tat" "täte" "getan")) datPrep ;
leihen_bei_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") accusative accPrep bei_Prep ;
leihen_bei_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") dative accPrep bei_Prep ;
leihen_dat_V3 = accdatV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") ;
leihen_im_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") accusative accPrep (mkPrep "in" dative) ;
leihen_von_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") accusative accPrep von_Prep ;
leihen_im_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") dative accPrep (mkPrep "in" dative) ;
leihen_von_rV3 = reflV3 (irregV "leihen" "leiht" "lieh" "liehe" "geliehen") dative accPrep von_Prep ;
leimen_V2 = dirV2 (regV "leimen") ;
leisten_rV2 = reflV2 (irregV "leisten" "leistet" "leistete" "leiste" "geleistet") accusative accPrep ;
leisten_rV2 = reflV2 (irregV "leisten" "leistet" "leistete" "leiste" "geleistet") dative accPrep ;
leisten_V2 = dirV2 (irregV "leisten" "leistet" "leistete" "leiste" "geleistet") ;
leitartikeln_V = regV "leitartikeln" ;
leiten_V2 = dirV2 (irregV "leiten" "leitet" "leitete" "leite" "geleitet") ;
@@ -4057,7 +4057,7 @@ lin
miterleben_VS = mkVS (prefixV "mit" (irregV "erleben" "erlebt" "erlebte" "erlebte" "erlebt")) ;
mitessen_mit_V2 = prepV2 (prefixV "mit" (irregV "essen" "isst" "aß" "aß" "gegessen")) mit_Prep ;
mitfuehlen_mit_V2 = prepV2 (prefixV "mit" (regV "fühlen")) mit_Prep ;
mitgeben_V2 = dirV2 (prefixV "mit" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ;
mitgeben_V2 = dirV2 (prefixV "mit" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ;
mitgehen_mit_V2 = prepV2 (prefixV "mit" (irregV "gehen" "geht" "ging" "ging" "gegangen")) mit_Prep ;
mitkommen_mit_V2 = prepV2 (prefixV "mit" (irregV "kommen" "kommt" "kam" "käme" "gekommen")) mit_Prep ;
mitmischen_bei_V2 = prepV2 (prefixV "mit" (regV "mischen")) bei_Prep ;
@@ -4137,7 +4137,7 @@ lin
nachforschen_VQ = mkVQ (prefixV "nach" (regV "forschen")) ;
nachfuehlen_dat_V2S = mkV2S (prefixV "nach" (regV "fühlen")) datPrep ;
nachfuehlen_dat_V3 = accdatV3 (prefixV "nach" (regV "fühlen")) ;
nachgeben_dat_V2 = mkV2 (prefixV "nach" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) datPrep ;
nachgeben_dat_V2 = mkV2 (prefixV "nach" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) datPrep ;
nachgehen_dat_V2 = mkV2 (prefixV "nach" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) datPrep ;
nachgruebeln_ueber_V2 = prepV2 (prefixV "nach" (regV "grübeln")) (mkPrep "über" dative) ;
nachhaken_bei_V2 = prepV2 (prefixV "nach" (regV "haken")) bei_Prep ;
@@ -4780,9 +4780,9 @@ lin
reimen_auf_V3 = dirV3 (regV "reimen") (mkPrep "auf" accusative) ;
reimen_V2 = dirV2 (regV "reimen") ;
reinchecken_in_V2 = prepV2 (prefixV "rein" (regV "checken")) (mkPrep "in" accusative) ;
reinchecken_rV2 = reflV2 (prefixV "rein" (regV "checken")) accusative accPrep ;
reinchecken_rV2 = reflV2 (prefixV "rein" (regV "checken")) dative accPrep ;
reinigen_V2 = dirV2 (regV "reinigen") ;
reinpfeifen_rV2 = reflV2 (prefixV "rein" (irregV "pfeifen" "pfeift" "pfiff" "priffe" "reingepfiffen")) accusative accPrep ;
reinpfeifen_rV2 = reflV2 (prefixV "rein" (irregV "pfeifen" "pfeift" "pfiff" "priffe" "reingepfiffen")) dative accPrep ;
reinziehen_in_V3 = dirV3 (prefixV "rein" (irregV "ziehen" "zieht" "zog" "zöge" "gezogen")) (mkPrep "in" accusative) ;
reisen_dir_V2 = prepV2 (regV "reisen") dir_Prep ;
reissen_V2 = dirV2 (irregV "reißen" "reißt" "riss" "risse" "gerissen") ;
@@ -5012,8 +5012,8 @@ lin
schelten_V2 = dirV2 (irregV "schelten" "schilt" "schalt" "schölte" "gescholten") ;
schematisieren_V2 = dirV2 (regV "schematisieren") ;
schenken_dat_V3 = accdatV3 (regV "schenken") ;
schenken_rV2 = reflV2 (regV "schenken") accusative accPrep ;
schenken_rVV = reflVV (regV "schenken") accusative ;
schenken_rV2 = reflV2 (regV "schenken") dative accPrep ;
schenken_rVV = reflVV (regV "schenken") dative ;
scheppen_V2 = dirV2 (regV "scheppen") ;
scheppern_V = regV "scheppern" ;
scheren_2_V = regV "scheren" ;
@@ -5357,8 +5357,8 @@ lin
spannen_VS = mkVS (regV "spannen") ;
sparen_an_V2 = prepV2 (regV "sparen") (mkPrep "an" accusative) ;
sparen_mit_V2 = prepV2 (regV "sparen") mit_Prep ;
sparen_rV2 = reflV2 (regV "sparen") accusative accPrep ;
sparen_rVV = reflVV (regV "sparen") accusative ;
sparen_rV2 = reflV2 (regV "sparen") dative accPrep ;
sparen_rVV = reflVV (regV "sparen") dative ;
sparen_V2 = dirV2 (regV "sparen") ;
spassen_mit_V2 = prepV2 (regV "spaßen") mit_Prep ;
spassen_VS = mkVS (regV "spaßen") ;
@@ -5867,8 +5867,8 @@ lin
ueberfliegen_V2 = dirV2 (irregV "überfliegen" "überfliegt" "überflog" "überflögee" "überflogen") ;
ueberfordern_V2 = dirV2 (irregV "überfordern" "überfordert" "überforderte" "überforderte" "überfordert") ;
ueberfuehren_gen_V3 = mkV3 (irregV "überführen" "überführt" "überführte" "überführte" "überführt") genPrep accPrep ;
uebergeben_dat_V3 = accdatV3 (irregV "übergeben" "übergebt" "übergab" "übergäbe" "übergeben") ;
uebergeben_rV = reflV (irregV "übergeben" "übergebt" "übergab" "übergäbe" "übergeben") accusative ;
uebergeben_dat_V3 = accdatV3 (irregV "übergeben" "übergibt" "übergab" "übergäbe" "übergeben") ;
uebergeben_rV = reflV (irregV "übergeben" "übergibt" "übergab" "übergäbe" "übergeben") accusative ;
uebergehen_V2 = dirV2 (irregV "übergehen" "übergeht" "überging" "überginge" "übergegangen") ;
uebergehen_VS = mkVS (irregV "übergehen" "übergeht" "überging" "überginge" "übergegangen") ;
ueberholen_V2 = dirV2 (irregV "überholen" "überholt" "überholte" "überholte" "überholt") ;
@@ -5938,7 +5938,7 @@ lin
umfriedigen_V2 = dirV2 (irregV "umfriedigen" "umfriedigt" "umfriedigte" "umfriedigte" "umfriedigt") ;
umfunktionieren_zu_V3 = dirV3 (prefixV "um" (regV "funktionieren")) zu_Prep ;
umgarnen_V2 = dirV2 (regV "umgarnen") ;
umgeben_mit_V3 = dirV3 (irregV "umgeben" "umgebt" "umgab" "umgäbe" "umgeben") mit_Prep ;
umgeben_mit_V3 = dirV3 (irregV "umgeben" "umgibt" "umgab" "umgäbe" "umgeben") mit_Prep ;
umgehen_V2 = dirV2 (irregV "umgehen" "umgeht" "umging" "umging" "umgangen") ;
umgestalten_V2 = dirV2 (prefixV "um" (irregV "gestalten" "gestaltet" "gestaltete" "gestaltete" "gestaltet")) ;
umhinkoennen_VV = mkVV (prefixV "umhin" (irregV "können" "kann" "konnte" "konnte" "gekonnt")) ;
@@ -6198,7 +6198,7 @@ lin
vergammeln_V = irregV "vergammeln" "vergammelt" "vergammelte" "vergammelte" "vergammelt" ;
vergasen_V2 = dirV2 (irregV "vergasen" "vergast" "vergaste" "vergaste" "vergast") ;
vergattern_zu_V3 = dirV3 (irregV "vergattern" "vergatternt" "vergatterte" "vergatterte" "vergattert") zu_Prep ;
vergeben_dat_V2S = mkV2S (irregV "vergeben" "vergebt" "vergab" "vergäbe" "vergeben") datPrep ;
vergeben_dat_V2S = mkV2S (irregV "vergeben" "vergibt" "vergab" "vergäbe" "vergeben") datPrep ;
vergegenstaendlichen_V2 = dirV2 (irregV "vergegenständlichen" "vergegenständlicht" "vergegenständlichte" "vergegenständlichte" "vergegenständlicht") ;
vergegenwaertigen_dat_V2S = mkV2S (irregV "vergegenwärtigen" "vergegenwärtigt" "vergegenwärtigte" "vergegenwärtigte" "vergegenwärtigt") datPrep ;
vergegenwaertigen_dat_V3 = accdatV3 (irregV "vergegenwärtigen" "vergegenwärtigt" "vergegenwärtigte" "vergegenwärtigte" "vergegenwärtigt") ;
@@ -6638,7 +6638,7 @@ lin
vorbeugen_dat_V2 = mkV2 (prefixV "vor" (regV "beugen")) datPrep ;
vorfallen_sV = dassV (irregV "vorfallen" "fallt" "fiel" "fiele" "gefallen") ;
vorfuehlen_bei_V2 = prepV2 (prefixV "vor" (regV "fühlen")) bei_Prep ;
vorgeben_VV = mkVV (prefixV "vor" (irregV "geben" "gebt" "gab" "gäbe" "gegeben")) ;
vorgeben_VV = mkVV (prefixV "vor" (irregV "geben" "gibt" "gab" "gäbe" "gegeben")) ;
vorgehen_sV = dassV (prefixV "vor" (irregV "gehen" "geht" "ging" "ginge" "gegangen")) ;
vorhaben_VV = mkVV (prefixV "vor" (irregV "haben" "hat" "hatte" "hatte" "gehabt")) ;
vorhergehen_dat_V2 = mkV2 (prefixV "vor" (irregV "hergehen" "hergeht" "hergehte" "hergehte" "gehergeht")) datPrep ;

View File

@@ -74,7 +74,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
insertObj (\\_ => (PastPartAgentAP (lin VPSlash vp) (lin NP np)).s ! APred) (predV werdenPass) ;
PastPartAP vp = {
s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ vp.inf ++
s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ (vp.nn ! agrP3 Sg).p3 ++ vp.a2 ++ vp.inf ++
vp.ext ++ vp.infExt ++ vp.s.s ! VPastPart af ;
isPre = True ;
c = <[],[]> ;
@@ -84,7 +84,8 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
PastPartAgentAP vp np =
let agent = appPrepNP P.von_Prep np
in {
s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ agent ++ vp.inf ++
s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ (vp.nn ! agrP3 Sg).p3 ++ vp.a2 ++ agent ++
vp.inf ++
vp.c2.s ++ --- junk if not TV
vp.ext ++ vp.infExt ++ vp.s.s ! VPastPart af ;
isPre = True ;
@@ -129,20 +130,34 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
subj = [] ;
verb = vps.s ! ord ! agr ! VPFinite m t a ;
neg = tm.s ++ p.s ++ vp.a1 ! b ;
obj0 = (vp.nn ! agr).p1 ;
obj = (vp.nn ! agr).p2 ;
compl = obj0 ++ neg ++ obj ++ vp.a2 ; -- from EG 15/5
inf = vp.inf ++ verb.inf ;
-- obj1 = (vp.nn ! agr).p1 ;
-- obj = (vp.nn ! agr).p2 ;
-- compl = obj1 ++ neg ++ obj ++ vp.a2 ; -- from EG 15/5
obj1 = (vp.nn ! agr).p1 ++ (vp.nn ! agr).p2 ; -- refl ++ pronouns ++ nonpronouns
obj2 = (vp.nn ! agr).p3 ; -- pp-objects
obj3 = (vp.nn ! agr).p4 ++ vp.adj ++ vp.a2 ; -- pred.AP|CN|Adv, via useComp HL 6/2019
compl = obj1 ++ neg ++ obj2 ++ obj3 ;
inf = vp.inf ++ verb.inf ++ verb.inf2 ;
extra = vp.ext ;
inffin : Str =
case <a,vp.isAux> of {
<Anter,True> => verb.fin ++ inf ; -- double inf --# notpresent
_ => inf ++ verb.fin --- or just auxiliary vp
}
infE : Str = -- HL 30/6/2019
case <t,a,vp.isAux> of {
<Fut|Cond,Simul,True> => inf ; --# notpresent
<Fut|Cond,Anter,True> -- Duden 318: kommen wollen haben => haben kommen wollen --# notpresent
=> verb.inf2 ++ vp.inf ++ verb.inf ; --# notpresent
<_,Anter,True> => inf ; --# notpresent
_ => verb.inf ++ verb.inf2 ++ vp.inf } ;
inffin : Str =
case <t,a,vp.isAux> of {
<Fut|Cond,Anter,True> -- ... wird|würde haben kommen wollen --# notpresent
=> verb.fin ++ verb.inf2 ++ vp.inf ++ verb.inf ; --# notpresent
<_,Anter,True> --# notpresent
=> verb.fin ++ inf ; -- double inf --# notpresent
_ => inf ++ verb.fin --- or just auxiliary vp
} ;
in
case o of {
Main => subj ++ verb.fin ++ compl ++ vp.infExt ++ inf ++ extra ;
Inv => verb.fin ++ subj ++ compl ++ vp.infExt ++ inf ++ extra ;
Main => subj ++ verb.fin ++ compl ++ vp.infExt ++ infE ++ extra ;
Inv => verb.fin ++ subj ++ compl ++ vp.infExt ++ infE ++ extra ;
Sub => subj ++ compl ++ vp.infExt ++ inffin ++ extra
}
} ;
@@ -189,7 +204,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
lin
EsVV vv vp = predV vv ** {
nn = \\a => let n = vp.nn ! a in <"es" ++ n.p1 , n.p2 > ;
nn = \\a => let n = vp.nn ! a in <"es" ++ n.p1 , n.p2 , n.p3, n.p4> ;
inf = vp.s.s ! (VInf True) ++ vp.inf ; -- ich genieße es zu versuchen zu gehen; alternative word order could be produced by vp.inf ++ vp.s.s... (zu gehen zu versuchen)
a1 = vp.a1 ;
a2 = vp.a2 ;
@@ -198,7 +213,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
adj = vp.adj } ;
EsV2A v2a ap s = predV v2a ** {
nn = \\_ => <"es",[]> ;
nn = \\_ => <"es",[],[],[]> ;
adj = ap.s ! APred ;
ext = "," ++ "dass" ++ s.s ! Sub} ;
@@ -243,9 +258,9 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
} ;
verb = vps.s ! ord ! agr ! VPFinite m t a ;
neg = vp.a1 ! b ;
obj0 = (vp.nn ! agr).p1 ;
obj = (vp.nn ! agr).p2 ;
compl = obj0 ++ neg ++ vp.adj ++ obj ++ vp.a2 ; -- adj added
obj1 = (vp.nn ! agr).p1 ;
obj2 = (vp.nn ! agr).p2 ++ (vp.nn ! agr).p3 ;
compl = obj1 ++ neg ++ vp.adj ++ obj2 ++ vp.a2 ; -- adj added
inf = vp.inf ++ verb.inf ; -- not used for linearisation of Main/Inv
extra = vp.ext ;
inffin : Str =

View File

@@ -213,7 +213,7 @@ in {
lin werben_V = irregV "werben" "wirbt" "warb" "würbe" "geworben" ;
lin werden_V = lin V (M.mkV "werden" "werde" "wirst" "wird" "werdet" "werd"
"wurde" "wurdest" "wurden" "wurdet"
"würde" "geworden" [] M.VHaben) ;
"würde" "geworden" [] M.VSein) ;
lin werfen_V = irregV "werfen" "wirft" "warf" "würfe" "geworfen" ;
lin wiegen_V = irregV "wiegen" "wiegt" "wog" "wöge" "gewogen" ;
lin winden_V = irregV "winden" "windt" "wand" "wände" "gewunden" ;

View File

@@ -169,8 +169,8 @@ lin
sea_N = reg2N "Meer" "Meere" neuter ;
seek_V2 = dirV2 (regV "suchen") ;
see_V2 = dirV2 Irreg.sehen_V ;
sell_V3 = accdatV3 (no_geV (regV "verkaufen")) ;
send_V3 = accdatV3 (regV "schicken") ;
sell_V3 = mkV3 (no_geV (regV "verkaufen")) ; -- Eng: mkV3 v noPrep toPrep
send_V3 = mkV3 (regV "schicken") ; -- Ger mkV3 v = Ger: mkV3 v accPrep datPrep
sheep_N = reg2N "Schaf" "Schafe" neuter ;
ship_N = reg2N "Schiff" "Schiffe" neuter ;
shirt_N = reg2N "Hemd" "Hemden" neuter ; ---- infl
@@ -196,7 +196,7 @@ lin
switch8off_V2 = dirV2 (prefixV "aus" (regV "schalten")) ;
switch8on_V2 = dirV2 (prefixV "ein" (regV "schalten")) ;
table_N = mkN "Tisch" ;
talk_V3 = mkV3 (regV "reden") datPrep von_Prep ;
talk_V3 = mkV3 (regV "reden") (mkPrep "mit" dative) (mkPrep "über" accusative) ; -- 6/2019
teacher_N = reg2N "Lehrer" "Lehrer" masculine ;
teach_V2 = dirV2 (no_geV (regV "unterrichten")) ;
television_N = reg2N "Fernsehen" "Fernsehen" neuter;
@@ -316,7 +316,8 @@ lin
flow_V = seinV (Irreg.fließen_V) ;
fly_V = seinV (Irreg.fliegen_V) ;
freeze_V = Irreg.frieren_V ;
give_V3 = accdatV3 Irreg.geben_V ;
give_V3 = accdatV3 Irreg.geben_V ; -- c2=datPrep, c3=accPrep, to fit
-- to Eng ditransitive: give sb(indir) sth(dir) (no preposition)
laugh_V = regV "lachen" ;
lie_V = Irreg.lügen_V ;
play_V = regV "spielen" ;

View File

@@ -6,24 +6,27 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
DetCN det cn = {
s = \\c => det.s ! cn.g ! c ++
(let k = (prepC c).c in cn.s ! adjfCase det.a k ! det.n ! k) ;
a = agrgP3 cn.g det.n ;
isPron = det.isDef ; -- ich sehe den Mann nicht vs. ich sehe nicht einen Mann
rc = cn.rc ! det.n ;
a = agrgP3 cn.g det.n ;
-- isPron = det.isDef ; -- ich sehe den Mann nicht vs. ich sehe nicht einen Mann
isPron = False ; -- HL 6/2019 (but:) sehe (die|einige) Männer nicht
rc = cn.rc ! det.n ; -- don't see a|no man = sehe keinen Mann
adv = cn.adv ;
ext = cn.ext
} ;
DetNP det = {
s = \\c => det.sp ! Neutr ! c ; -- more genders in ExtraGer
s = \\c => det.sp ! Neutr ! c ; -- more genders in ExtraGer -- HL: der+er,den+en ; der drei,den drei+en
a = agrP3 det.n ;
isPron = det.isDef ;
-- isPron = det.isDef ;
isPron = False ; -- HL 6/2019: don't apply pronoun switch: ich gebe ihr das vs. ich gebe es ihr
rc, adv, ext = []
} ;
UsePN pn = {
s = \\c => usePrepC c (\k -> pn.s ! k) ;
a = agrgP3 pn.g Sg ;
isPron = True ; --- means: this is not a heavy NP, but comes before negation
-- isPron = True ; --- means: this is not a heavy NP, but comes before negation
isPron = False ; -- HL 6/2019: to regulate Pron/NonPronNP order
rc, adv, ext = []
} ;
@@ -83,7 +86,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in
num.s!g!k) ;
sp = \\g,c => quant.sp ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in
num.s!g!k) ;
num.s!g!k) ; -- HL: der+er,den+en ; der drei,den drei+en
n = n ;
a = case n of {Sg => a ; Pl => quant.aPl} ;
isDef = case <quant.a, quant.aPl> of {<Strong,Strong> => False ; _ => True} ;
@@ -116,7 +119,16 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
DefArt = {
s = \\_,n,g,c => artDefContr (gennum g n) c ;
sp = \\_,n,g,c => artDefContr (gennum g n) c ; ---- deren, denem...
-- sp = \\_,n,g,c => artDefContr (gennum g n) c ; ---- deren, denen ...
sp = \\_,n,g,c => case <n,c> of {
<Sg,NPP p> => let sp = prepC c ; gn = gennum g n
in sp.s ++ artDef ! gn ! sp.c ;
<Pl,NPP CInAcc> => let sp = prepC c in sp.s ++ "die" ;
<Pl,NPP p> => let sp = prepC c ; gn = gennum g n
in sp.s ++ (artDef ! gn ! sp.c + "en") ;
<Pl,NPC Dat> => "denen" ; -- HL 6/2019
<Pl,NPC Gen> => "derer" ; -- HL 6/2019
_ => artDefContr (gennum g n) c } ; -- von den+en
a, aPl = Weak
} ;

View File

@@ -286,11 +286,11 @@ mkV2 : overload {
-- Three-place (ditransitive) verbs need two prepositions, of which
-- the first one or both can be absent.
accdatV3 : V -> V3 ; -- geben + dat + acc (no prepositions)
accdatV3 : V -> V3 ; -- geben + dat(c2) + acc(c3) (Eng: no prepositions)
dirV3 : V -> Prep -> V3 ; -- senden + acc + nach (preposition on second arg)
mkV3 : overload {
mkV3 : V -> V3 ; -- geben + dat + acc
mkV3 : V -> V3 ; -- geben + dat(c3) + acc(c2) (Eng: give sth to-sb)
mkV3 : V -> Prep -> Prep -> V3 ; -- sprechen + mit + über
} ;
@@ -584,12 +584,12 @@ mkV2 : overload {
mkV3 : V -> V3
= \v -> lin V3 (v ** {c2 = accPrep ; c3 = datPrep}) ;
mkV3 : V -> Prep -> Prep -> V3
= \v,c,d -> v ** {c2 = c ; c3 = d ; lock_V3 = <>} ;
= \v,c,d -> lin V3 (v ** {c2 = c ; c3 = d}) ;
} ;
dirV3 v p = mkV3 v (mkPrep [] accusative) p ;
accdatV3 v = mkV3 v (mkPrep [] dative) (mkPrep [] accusative) ;
dirV3 v p = mkV3 v accPrep p ; -- accPrep sets isPrep=False
accdatV3 v = mkV3 v datPrep accPrep ; -- to fit to Eng ditransitives (no preposition):
-- give sb(indir) sth(dir) = geben jmdm(dat) etwas(acc)
mkVS v = v ** {lock_VS = <>} ;
mkVQ v = v ** {lock_VQ = <>} ;
mkVV v = v ** {isAux = False ; lock_VV = <>} ;

View File

@@ -189,7 +189,7 @@ resource ResGer = ParamX ** open Prelude in {
case <t,m> of {
<Pres,MIndic> => VFin b (VPresInd an ap) ;
<Pres,MConjunct> => VFin b (VPresSubj an ap)
; --# notpresent
; --# notpresent
<Past,MIndic> => VFin b (VImpfInd an ap) ; --# notpresent
<Past,MConjunct> => VFin b (VImpfSubj an ap) ; --# notpresent
_ => VInf False --# notpresent
@@ -502,14 +502,14 @@ resource ResGer = ParamX ** open Prelude in {
VPC : Type = {
s : Bool => Agr => VPForm => { -- True = prefix glued to verb
fin : Str ; -- hat
inf : Str -- wollen
}
fin : Str ; -- wird
inf:Str;inf2 : Str -- lesen,[] | gelesen,haben | können,haben (= gekonnt,haben)
} -- HL 11/6/2019 Fut Anter: lesen gekonnt haben => haben lesen können
} ;
VP : Type = {
s : Verb ;
nn : Agr => Str * Str ; -- dich/deine Frau
s : Verb ; -- HL 6/2019: <refl|pron,NP,PP,AP|CN|Adv>
nn : Agr => Str * Str * Str * Str ; -- <sich|ihr,deine Frau,an sie,gut>
a1 : Polarity => Str ; -- nicht = adV
a2 : Str ; -- heute = adv
adj : Str ; -- space for adjectival complements ("ich finde dich schön")
@@ -552,34 +552,32 @@ resource ResGer = ParamX ** open Prelude in {
werden_V.s ! VFin False (VImpfSubj (numberAgr a) (personAgr a)) ; --# notpresent
auf = verb.prefix ;
vf : Bool -> Str -> Str -> {fin,inf : Str} = \b,fin,inf -> {
vf : Bool -> Str -> Str -> Str -> {fin,inf,inf2 : Str} = \b,fin,inf,inf2 -> {
fin = fin ;
inf = verb.particle ++ if_then_Str b [] auf ++ inf --- negation of main b
} ;
inf = verb.particle ++ if_then_Str b [] auf ++ inf ; --- negation of main b
inf2 = inf2
} ;
in {
s = \\b,a => table {
VPFinite m t Simul => case t of {
-- Pres | Past => vf (vfin m t a) [] ; -- the general rule
Past => vf b (vfin b m t a) [] ; --# notpresent
Fut => vf True (wird m a) vinf ; --# notpresent
Cond => vf True (wuerde a) vinf ; --# notpresent
Pres => vf b (vfin b m t a) []
Past => vf b (vfin b m t a) [] [] ; --# notpresent
Fut => vf True (wird m a) vinf [] ; --# notpresent
Cond => vf True (wuerde a) vinf [] ; --# notpresent
Pres => vf b (vfin b m t a) [] []
} ;
VPFinite m t Anter => case t of { --# notpresent
Pres | Past => vf True (hat m t a) vpart ; --# notpresent
Fut => vf True (wird m a) (vpart ++ haben) ; --# notpresent
Cond => vf True (wuerde a) (vpart ++ haben) --# notpresent
} ; --# notpresent
VPImperat False => vf False (verb.s ! VImper (numberAgr a)) [] ;
VPImperat True => vf False (verb.s ! VFin False (VPresSubj Pl P3)) [] ;
VPInfinit Anter => vf True [] (vpart ++ haben) ; --# notpresent
VPInfinit Simul => vf True [] (verb.s ! VInf b)
VPFinite m t Anter => case t of { --# notpresent
Pres | Past => vf True (hat m t a) vpart [] ; --# notpresent
Fut => vf True (wird m a) vpart haben ; --# notpresent
Cond => vf True (wuerde a) vpart haben --# notpresent
} ; --# notpresent
VPImperat False => vf False (verb.s ! VImper (numberAgr a)) [] [] ;
VPImperat True => vf False (verb.s ! VFin False (VPresSubj Pl P3)) [] [] ;
VPInfinit Anter => vf True [] (vpart ++ haben) [] ; --# notpresent
VPInfinit Simul => vf True [] (verb.s ! VInf b) []
}
} ;
predVGen : Bool -> Verb -> VPSlash = \isAux, verb -> {
s = {
s = verb.s ;
@@ -591,9 +589,9 @@ resource ResGer = ParamX ** open Prelude in {
a1 : Polarity => Str = negation ;
a2 : Str = [] ;
nn : Agr => Str * Str = case verb.vtype of {
VAct => \\_ => <[],[]> ;
VRefl c => \\a => <reflPron ! a ! c,[]>
nn : Agr => Str * Str * Str * Str = case verb.vtype of {
VAct => \\_ => <[],[],[],[]> ;
VRefl c => \\a => <reflPron ! a ! c,[],[],[]>
} ;
isAux = isAux ; ----
inf,ext,infExt,adj : Str = [] ;
@@ -668,26 +666,39 @@ resource ResGer = ParamX ** open Prelude in {
-- Extending a verb phrase with new constituents.
insertObj : (Agr => Str) -> VPSlash -> VPSlash = insertObjNP False ;
insertObj : (Agr => Str) -> VPSlash -> VPSlash = \obj,vp -> -- obj:Comp A|Adv|CN
vp ** { nn = \\a => let vpnn = vp.nn ! a in <vpnn.p1, vpnn.p2, vpnn.p3, obj ! a ++ vpnn.p4> } ;
insertObjc : (Agr => Str) -> VPSlash -> VPSlash = \obj,vp ->
insertObj obj vp ** {c2 = vp.c2 ; missingAdv = vp.missingAdv } ;
insertObjNP : Bool -> (Agr => Str) -> VPSlash -> VPSlash = \isPron, obj,vp -> vp ** {
nn = \\a =>
let vpnn = vp.nn ! a in
case isPron of {
True => <obj ! a ++ vpnn.p1, vpnn.p2> ;
False => < vpnn.p1, obj ! a ++ vpnn.p2>
}} ;
insertObjNP : NP -> Preposition -> VPSlash -> VPSlash = \np,prep,vp ->
let c = case prep.c of { NPC cc => cc ; _ => Nom } ;
obj : Agr => Str = \\_ => appPrepNP prep np ;
in vp ** {
nn = \\a => -- HL 11/6/19: rough objNP order:
let vpnn = vp.nn ! a in -- vfin < accPron < refl < (gen|dat)Pron < nonPronNP < neg < prepNP < vinf|comp
case <np.isPron,prep.isPrep,c> of { -- (assuming v.c2=acc) nonPron: dat < acc|gen (acc < gen not enforced)
<True, False,Acc> => <obj ! a ++ vpnn.p1, vpnn.p2, vpnn.p3, vpnn.p4> ; -- <es|ihn sich, np, pp, comp>
<True, False,_> => <vpnn.p1 ++ obj ! a, vpnn.p2, vpnn.p3, vpnn.p4> ; -- <sich ihm, np, pp, comp>
<False,False,Dat> => <vpnn.p1, obj ! a ++ vpnn.p2, vpnn.p3, vpnn.p4> ; -- <prons, dat ++ np, pp, comp>
<False,False,_> => <vpnn.p1, vpnn.p2 ++ obj ! a, vpnn.p3, vpnn.p4> ; -- <prons, np ++ gen|acc, pp, comp>
<_, True, _> => <vpnn.p1, vpnn.p2, vpnn.p3 ++ obj ! a, vpnn.p4> -- <prons, np, mit ihr|np, compl>
}
} ; -- the ordering of objects of v:V3 (and v:V4) is also determined by Slash?V3 (and Slash?V4)
isLightComplement : Bool -> Preposition -> Bool = \isPron,prep -> case isPron of {
False => False ;
_ => case prep.isPrep of {
True => False ;
_ => True
}
} ;
insertObjRefl : VPSlash -> VPSlash = \vp -> -- HL 6/2019, to order reflPron < neg < prep+reflPron
let prep = vp.c2 ;
b = notB prep.isPrep ;
c = case prep.c of { NPC cc => cc ; _ => Acc } ;
obj : Agr => Str = \\a => prep.s ++ reflPron ! a ! c ;
in vp ** {
nn = \\a =>
let vpnn = vp.nn ! a in
case b of {
True => <obj ! a ++ vpnn.p1, vpnn.p2, vpnn.p3, vpnn.p4> ;
False => <vpnn.p1, obj ! a ++ vpnn.p2, vpnn.p3, vpnn.p4> }
} ;
insertAdV : Str -> VP -> VP = \adv,vp -> vp ** {
a1 = \\a => adv ++ vp.a1 ! a } ; -- immer nicht
@@ -706,10 +717,9 @@ resource ResGer = ParamX ** open Prelude in {
insertAdj : Str -> Str * Str -> Str -> VPSlash -> VPSlash = \adj,c,ext,vp -> vp ** {
nn = \\a =>
let vpnn = vp.nn ! a in
<vpnn.p1 ++ c.p1 , vpnn.p2> ;
adj = vp.adj ++ adj ++ c.p2 ;
ext = vp.ext ++ ext} ;
let vpnn = vp.nn ! a in <vpnn.p1, vpnn.p2 ++ c.p1, vpnn.p3, vpnn.p4> ; -- ihr? | der Frau treu
adj = vp.adj ++ adj ++ c.p2 ; -- neugierig auf das Buch
ext = vp.ext ++ ext} ;
--------------------------------------------
--CLAUSE CONSTRUCTION
@@ -730,20 +740,31 @@ resource ResGer = ParamX ** open Prelude in {
} ;
verb = vps.s ! ord ! agr ! VPFinite m t a ;
neg = vp.a1 ! b ;
obj0 = (vp.nn ! agr).p1 ;
obj = (vp.nn ! agr).p2 ;
compl = obj0 ++ neg ++ vp.adj ++ obj ++ vp.a2 ; -- adj added
inf = vp.inf ++ verb.inf ; -- not used for linearisation of Main/Inv
extra = vp.ext ;
inffin : Str =
case <a,vp.isAux> of {
<Anter,True> => verb.fin ++ inf ; -- double inf --# notpresent
_ => inf ++ verb.fin --- or just auxiliary vp
}
obj1 = (vp.nn ! agr).p1 ++ (vp.nn ! agr).p2 ; -- refl ++ pronouns ++ nonpronouns
obj2 = (vp.nn ! agr).p3 ; -- pp-objects
obj3 = (vp.nn ! agr).p4 ++ vp.adj ++ vp.a2 ; -- pred.AP|CN|Adv, via useComp HL 6/2019
compl = obj1 ++ neg ++ obj2 ++ obj3 ;
inf = vp.inf ++ verb.inf ++ verb.inf2 ; -- zu kommen gebeten haben
extra = vp.ext ; -- * kommen (gewollt|wollen) haben
infE : Str = -- HL 30/6/2019
case <t,a,vp.isAux> of {
<Fut|Cond,Simul,True> => inf ; --# notpresent
<Fut|Cond,Anter,True> -- Duden 318: kommen wollen haben => haben kommen wollen --# notpresent
=> verb.inf2 ++ vp.inf ++ verb.inf ; --# notpresent
<_,Anter,True> => inf ; --# notpresent
_ => verb.inf ++ verb.inf2 ++ vp.inf } ;
inffin : Str =
case <t,a,vp.isAux> of {
<Fut|Cond,Anter,True> -- ... wird|würde haben kommen wollen --# notpresent
=> verb.fin ++ verb.inf2 ++ vp.inf ++ verb.inf ; --# notpresent
<_,Anter,True> --# notpresent
=> verb.fin ++ inf ; -- double inf --# notpresent
_ => inf ++ verb.fin --- or just auxiliary vp
} ;
in
case o of {
Main => subj ++ verb.fin ++ compl ++ vp.infExt ++ verb.inf ++ extra ++ vp.inf ;
Inv => verb.fin ++ subj ++ compl ++ vp.infExt ++ verb.inf ++ extra ++ vp.inf ;
case o of {
Main => subj ++ verb.fin ++ compl ++ vp.infExt ++ infE ++ extra ;
Inv => verb.fin ++ subj ++ compl ++ vp.infExt ++ infE ++ extra ;
Sub => subj ++ compl ++ vp.infExt ++ inffin ++ extra
}
} ;
@@ -767,7 +788,7 @@ resource ResGer = ParamX ** open Prelude in {
infVP : Bool -> VP -> ((Agr => Str) * Str * Str * Str) = \isAux, vp -> let vps = useVP vp in
<
\\agr => (vp.nn ! agr).p1 ++ (vp.nn ! agr).p2 ++ vp.a2,
\\agr => (vp.nn ! agr).p1 ++ (vp.nn ! agr).p2 ++ (vp.nn ! agr).p3 ++ (vp.nn ! agr).p4 ++ vp.a2,
vp.a1 ! Pos ++ vp.adj ++ (vps.s ! (notB isAux) ! agrP3 Sg ! VPInfinit Simul).inf,
vp.inf,
vp.infExt ++ vp.ext
@@ -837,12 +858,10 @@ resource ResGer = ParamX ** open Prelude in {
{s : PCase => Str ; a : Agr} -> {s : PCase => Str ; a : Agr ; isPron : Bool ; adv,ext,rc : Str} = \np ->
np ** {isPron = False; adv,ext,rc = []} ; -- this could be wrong
oper
relPron : RelGenNum => Case => Str = \\rgn,c =>
relPron : RelGenNum => Case => Str = \\rgn,c =>
case rgn of {
RGenNum gn =>
case <gn,c> of {
case <gn,c> of {
<GSg Fem,Gen> => "deren" ;
<GSg g,Gen> => "dessen" ;
<GPl,Dat> => "denen" ;
@@ -863,3 +882,4 @@ resource ResGer = ParamX ** open Prelude in {
in <subj , agr> ;
}

View File

@@ -26,10 +26,10 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in {
} ;
agr = Ag Fem (numImp n) ps.p1 ; --- g does not matter
verb = vps.s ! False ! agr ! VPImperat ps.p3 ;
inf = vp.inf ++ verb.inf ;
inf = vp.inf ++ verb.inf ; -- HL .nn
obj = (vp.nn ! agr).p2 ++ (vp.nn ! agr).p3 ++ (vp.nn ! agr).p4
in
verb.fin ++ ps.p2 ++
(vp.nn ! agr).p1 ++ vp.a1 ! pol ++ (vp.nn ! agr).p2 ++ vp.a2 ++ inf ++ vp.ext
verb.fin ++ ps.p2 ++ (vp.nn ! agr).p1 ++ vp.a1 ! pol ++ obj ++ vp.a2 ++ inf ++ vp.ext
} ;
SlashVP np vp =

View File

@@ -116,7 +116,7 @@ concrete StructuralGer of Structural = CatGer **
we_Pron = mkPronPers "wir" "uns" "uns" "unser" "unser" Fem Pl P1 ;
whatSg_IP = {s = caselist "was" "was" "was" "wessen" ; n = Sg} ; ----
whatPl_IP = {s = caselist "was" "was" "was" "wessen" ; n = Pl} ; ----
whatPl_IP = {s = caselist "was" "was" "was" "wessen" ; n = Sg} ; -- HL 6/2016
when_IAdv = ss "wann" ;
when_Subj = ss "wenn" ;
@@ -124,7 +124,7 @@ concrete StructuralGer of Structural = CatGer **
which_IQuant = {s = \\n,g,c => (detLikeAdj True n "welch").s ! g ! NPC c} ;
whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ;
whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Pl} ;
whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ; -- HL 6/2016
why_IAdv = ss "warum" ;
without_Prep = mkPrep "ohne" P.accusative ;
with_Prep = mkPrep "mit" P.dative ;

View File

@@ -21,12 +21,10 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in {
insertExtrapos (comma ++ q.s ! QIndir) (predV v) ;
ComplVA v ap = insertAdj (v.c2.s ++ ap.s ! APred) ap.c ap.ext (predV v) ; -- changed
SlashV2a v = predVc v ;
SlashV2a v = (predVc v) ** {missingAdv = True} ; -- HL 12/6/2019 for reflexive verbs with objects, rV2:V2, rV3:V3
Slash2V3 v np =
insertObjc (\\_ => appPrepNP v.c2 np) (predVc v) ** {c2 = v.c3} ;
Slash3V3 v np =
insertObjc (\\_ => appPrepNP v.c3 np) (predVc v) ;
Slash2V3 v np = insertObjNP np v.c2 (predV v) ** {c2 = v.c3 ; missingAdv = True} ;
Slash3V3 v np = insertObjNP np v.c3 (predV v) ** {c2 = v.c2 ; missingAdv = True} ;
SlashV2S v s =
insertExtrapos (conjThat ++ s.s ! Sub) (predVc v) ;
@@ -45,7 +43,7 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in {
insertAdj (ap.s ! APred) ap.c ap.ext (predVc v) ;
ComplSlash vps np =
let vp = insertObjNP (isLightComplement np.isPron vps.c2) (\\_ => appPrepNP vps.c2 np) vps ;
let vp = insertObjNP np vps.c2 vps ;
in case vp.missingAdv of {
True => vp ;
False => objAgr np vp } ; -- IL 24/04/2018 force reflexive in the VPSlash to take the agreement of the object introduced by ComplSlash.
@@ -68,6 +66,7 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in {
insertInf vpi.p2 (
insertObj vpi.p1 (
insertObj (\\_ => appPrepNP v.c2 np) vps))) ;
-- insertObjNP v.c2 np vps))) ;
UseComp comp =
insertExtrapos comp.ext (insertObj comp.s (predV sein_V)) ; -- agr not used
@@ -95,11 +94,32 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in {
AdvVPSlash vp adv = vp ** insertAdv adv.s vp ;
AdVVPSlash adv vp = vp ** insertAdv adv.s vp ;
ReflVP vp = insertObj (\\a => appPrep vp.c2
(\\k => usePrepC k (\c -> reflPron ! a ! c))) vp ;
-- ReflVP vp = insertObj (\\a => appPrep vp.c2
-- (\\k => usePrepC k (\c -> reflPron ! a ! c))) vp ;
ReflVP vp = insertObjRefl vp ; -- HL, 19/06/2019
PassV2 v = insertInf (v.s ! VPastPart APred) (predV werdenPass) ;
PassV2 v = insertObj (\\_ => v.s ! VPastPart APred) (predV werdenPass) ;
{- HL: The construction VPSlashPrep : VP -> Prep -> VPSlash does not exist
in German. In abstract/Verb.gf, the example
VPSlashPrep : VP -> Prep -> VPSlash ; -- live in (it)
(with live_V:V) indicates that, here, you consider Prep=AdvSlash,
so to speak, for building a compact version of relative clauses:
the city we live in : NP
from "we live (in the city : Adv) : Cl"
But in German we cannot move the NP part of an Adv, we only have the
full relative clauses like
die Stadt, in der wir leben,
die Stadt, worin wir leben, --contracted Prep+Rel
but nothing like "die Stadt wir leben in".
-}
VPSlashPrep vp prep = vp ** {c2 = prep ; missingAdv = True} ;
}

View File

@@ -8,12 +8,12 @@ concrete AdjectiveLat of Adjective = CatLat ** open ResLat, Prelude in {
-- ComparA : A -> NP -> AP ; -- warmer than I
ComparA a np = {
s = \\ag => a.s ! Compar ! ag ++ "quam" ++ np.s ! Nom ;
s = \\ag => a.s ! Compar ! ag ++ "quam" ++ (combineNounPhrase np) ! PronNonDrop ! Nom ;
} ;
-- ComplA2 : A2 -> NP -> AP ; -- married to her
ComplA2 a np = {
s = \\ag => a.s ! Posit ! ag ++ a.c.s ++ np.s ! a.c.c ;
s = \\ag => a.s ! Posit ! ag ++ a.c.s ++ (combineNounPhrase np) ! PronNonDrop ! a.c.c ;
} ;
-- ReflA2 : A2 -> AP -- married to myself
@@ -31,7 +31,7 @@ concrete AdjectiveLat of Adjective = CatLat ** open ResLat, Prelude in {
-- CAdvAP : CAdv -> AP -> NP -> AP ; -- as cool as John
CAdvAP cadv ap np =
{ s = \\ag => cadv.s ++ ap.s ! ag ++ cadv.p ++ np.s ! Nom } ;
{ s = \\ag => cadv.s ++ ap.s ! ag ++ cadv.p ++ (combineNounPhrase np) ! PronNonDrop ! Nom } ;
-- The superlative use is covered in $Ord$.

View File

@@ -8,17 +8,16 @@ concrete AdverbLat of Adverb = CatLat ** open ResLat, Prelude, ParadigmsLat in
-- PrepNP : Prep -> NP -> Adv ; -- in the house
PrepNP prep np =
mkAdv (prep.s ++ np.adv ++ np.det.s ! np.g ! prep.c ++ np.preap.s ! (Ag np.g np.n prep.c) ++
np.s ! prep.c ++ np.postap.s ! (Ag np.g np.n prep.c ) ++ np.det.sp ! np.g ! prep.c ) ;
mkAdv (prep.s ++ np.adv ++ (combineNounPhrase np) ! PronNonDrop ! prep.c ) ;
-- ComparAdvAdj : CAdv -> A -> NP -> Adv ; -- more warmly than John
ComparAdvAdj cadv a np =
mkAdv (cadv.s ++ a.adv.s ! Compar ++ cadv.p ++ np.s ! Nom) ;
mkAdv (cadv.s ++ a.adv.s ! Compar ++ cadv.p ++ (combineNounPhrase np) ! PronNonDrop ! Nom) ;
-- ComparAdvAdjS : CAdv -> A -> S -> Adv ; -- more warmly than he runs
ComparAdvAdjS cadv a s =
mkAdv (cadv.s ++ a.adv.s ! Compar ++ cadv.p ++ combineSentence s ! SPreS ! PreV ! SOV ) ;
mkAdv (cadv.s ++ a.adv.s ! Compar ++ cadv.p ++ combineSentence s ! SPreS ! PreV ! CPreV ! SOV ) ;
-- AdAdv : AdA -> Adv -> Adv ; -- very quickly
AdAdv ada adv = mkAdv (ada.s ++ (adv.s ! Posit) ) ;
@@ -30,7 +29,7 @@ concrete AdverbLat of Adverb = CatLat ** open ResLat, Prelude, ParadigmsLat in
-- Subordinate clauses can function as adverbs.
-- SubjS : Subj -> S -> Adv ; -- when she sleeps
SubjS subj s = mkAdv (subj.s ++ combineSentence s ! SPreS ! PreV ! SOV ) ;
SubjS subj s = mkAdv (subj.s ++ combineSentence s ! SPreS ! PreV ! CPreV ! SOV ) ;
-- AdnCAdv : CAdv -> AdN ; -- less (than five)
AdnCAdv cadv = {s = cadv.s ++ cadv.p} ;

View File

@@ -1,76 +0,0 @@
--concrete BackwardLat of Backward = CatLat ** open ResLat in {
--
-- flags optimize=all_subs ;
--
-- lin
--
---- A repository of obsolete constructs, needed for backward compatibility.
---- They create spurious ambiguities if used in combination with Lang.
--
---- from Verb 19/4/2008
--
-- ComplV2 v np = insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v) ;
-- ComplV3 v np np2 =
-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ;
-- ComplV2V v np vp =
-- insertObj (\\a => infVP v.isAux vp a)
-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ;
-- ComplV2S v np s =
-- insertObj (\\_ => conjThat ++ s.s)
-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ;
-- ComplV2Q v np q =
-- insertObj (\\_ => q.s ! QIndir)
-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ;
-- ComplV2A v np ap =
-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ ap.s ! np.a) (predV v) ;
--
-- ReflV2 v = insertObj (\\a => v.c2 ++ reflPron ! a) (predV v) ;
--
---- from Sentence 19/4/2008
--
-- SlashV2 np v2 =
-- mkClause (np.s ! Nom) np.a (predV v2) ** {c2 = v2.c2} ;
--
-- SlashVVV2 np vv v2 =
-- mkClause (np.s ! Nom) np.a
-- (insertObj (\\a => infVP vv.isAux (predV v2) a) (predVV vv)) **
-- {c2 = v2.c2} ;
--
---- from Noun 19/4/2008
--
-- NumInt n = {s = n.s ; n = Pl} ;
-- OrdInt n = {s = n.s ++ "th"} ; --- DEPRECATED
--
-- DetSg quant ord = {
-- s = quant.s ! Sg ++ ord.s ;
-- n = Sg
-- } ;
--
-- DetPl quant num ord = {
-- s = quant.s ! num.n ++ num.s ++ ord.s ;
-- n = num.n
-- } ;
--
-- NoNum = {s = []; n = Pl } ;
--
-- DefArt = {s = \\_ => artDef} ;
--
-- IndefArt = {
-- s = table {
-- Sg => artIndef ;
-- Pl => []
-- }
-- } ;
--
-- MassDet = {s = \\_ => []} ;
--
--
--
---- from Structural 19/4/2008
--
-- that_NP = regNP "that" Sg ;
-- these_NP = regNP "these" Pl ;
-- this_NP = regNP "this" Sg ;
-- those_NP = regNP "those" Pl ;
--
--}

View File

@@ -20,7 +20,7 @@ concrete CatLat of Cat = CommonX-[Adv] ** open ResLat, ParamX, Prelude in {
---- Question
--
-- TO FIX
QCl = Clause ; -- {s : ResLat.Tense => Anteriority => Polarity => QForm => Str } ;
QCl = Clause ** { q : Str } ;
IP = {s : Case => Str ; n : Number} ;
IComp = {s : Str} ;
IDet = Determiner ; --{s : Str ; n : Number} ;
@@ -53,14 +53,14 @@ concrete CatLat of Cat = CommonX-[Adv] ** open ResLat, ParamX, Prelude in {
Pron = ResLat.Pronoun ;
Det = Determiner ;
Predet = {s : Str} ;
Ord = Ordinal ;
Ord = { s : Gender => Number => Case => Str } ;
Num = {s : Gender => Case => Str ; n : Number} ;
Card = {s : Gender => Case => Str ; n : Number} ;
Quant = Quantifier ;
--
---- Numeral
--
Numeral = ResLat.Numeral ;
Numeral = ResLat.TNumeral ;
Digits = {s : Str ; unit : Unit} ;
--
---- Structural
@@ -83,11 +83,15 @@ concrete CatLat of Cat = CommonX-[Adv] ** open ResLat, ParamX, Prelude in {
N = Noun ;
N2 = Noun ** { c : Prep } ;
N3 = Noun ** { c : Prep ; c2 : Prep } ;
PN = Noun ;
PN = { s : Case => Str ; n : Number ; g : Gender } ;
A2 = Adjective ** { c : Prep} ;
linref
NP = \np -> np.preap.s ! Ag np.g np.n Nom ++ np.s ! Nom ++ np.postap.s ! Ag np.g np.n Nom ;
NP = \np -> combineNounPhrase np ! PronNonDrop ! Nom ;
VP = \vp -> vp.adv ++ vp.inf ! VInfActPres ++ vp.obj ++ vp.compl ! Ag Masc Sg Nom ;
S = \s -> combineSentence s ! SPreO ! PreO ! SOV ;
S = \s -> combineSentence s ! SPreO ! PreO ! CPreV ! SOV ;
V, VS, VQ, VA, VV = \v -> v.act ! (VAct VSim (VPres VInd) Sg P1) ;
V2, V2A, V2Q, V2S = \v -> v.act ! (VAct VSim (VPres VInd) Sg P1) ;
Pron = \p -> p.pers.s ! PronNonDrop ! PronNonRefl ! Nom ;
Conj = \c -> c.s1 ++ c.s2 ++ c.s3 ;
}

View File

@@ -8,31 +8,44 @@ concrete ConjunctionLat of Conjunction =
-- ConjS : Conj -> ListS -> S ; -- he walks and she runs
-- TO FIX
-- ConjS conj ss = { s = \\_ => conjunctDistrX conj (ss.l ! conj.c) ; sadv = lin Adv { s = []} ; neg = ss.neg } ;
ConjS conj ss = {
-- s = \\apos => coord conj.c { init = (ss.s ! conj.c).init ! SPreS ! apos ! CPreV ! SOV ;
-- last = (ss.s ! conj.c).last ! SPreS ! apos ! CPreV ! SOV} ;
s = \\apos => conj.s1 ++ (ss.s ! conj.c).init ! SPreS ! apos ! CPreV ! SOV ++ conj.s2 ++
(ss.s ! conj.c).last ! SPreS ! apos ! CPreV ! SOV ++ conj.s3 ;
o = \\_ => [] ;
v = \\_,_ => [] ;
neg = \\_ => [] ;
p = ss.p ;
sadv = [] ;
t = ss.t
} ;
-- ConjAdv : Conj -> ListAdv -> Adv ; -- here or there
ConjAdv conj ss = mkAdv (conjunctDistrSS conj (ss.l ! conj.c) ).s ;
-- ConjAdv conj ss = mkAdv (conjunctDistrSS conj (ss.l ! conj.c) ).s ;
-- ConjNP : Conj -> ListNP -> NP ; -- she or we
ConjNP conj nps =
{
s = case conj.c of {
And => case nps.isBase of {
False => (conjunctDistrTable Case conj (nps.l ! And)).s ;
True => \\c => conj.s1 ++ (nps.l ! And).s1 ! c ++ conj.s2 ++ (nps.l ! And).s2 ! c
} ;
c => (conjunctDistrTable Case conj (nps.l ! And)).s
} ;
n = case conj.c of { And => Pl ; _ => nps.n } ;
-- s = case conj.c of {
-- Et => case nps.isBase of {
-- False => (conjunctDistrTable Case conj (nps.l ! Et)).s ;
-- True => \\c => conj.s1 ++ (nps.l ! Et).s1 ! c ++ conj.s2 ++ (nps.l ! Et).s2 ! c
-- } ;
-- c => (conjunctDistrTable Case conj (nps.l ! Et)).s
-- } ;
s = \\pd,ca => conj.s1 ++ (nps.s ! conj.c).init ! pd ! ca ++ conj.s2 ++ (nps.s ! conj.c).last ! pd ! ca ++ conj.s3 ;
n = case conj.c of { Et => Pl ; _ => nps.n } ;
g = nps.g ;
p = nps.p ;
adv = nps.adv ;
preap = nps.preap ;
postap = nps.postap ;
det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = nps.n };
postap = nps.postap ;
det = nps.det
} ;
-- ConjAP : Conj -> ListAP -> AP ;
ConjAP conj ss = conjunctDistrTable Agr conj (ss.l ! conj.c) ;
-- ConjAP conj ss = conjunctDistrTable Agr conj (ss.l ! conj.c) ;
--
-- DConjS = conjunctDistrSS ;
@@ -53,32 +66,40 @@ concrete ConjunctionLat of Conjunction =
--
-- BaseS : S -> S -> ListS
-- BaseS x y = {
-- l = \\c => { s1 = x ; s2 = y } ;
-- } ;
BaseS x y = {
s = \\c => { init = combineSentence x ; last = combineSentence y } ;
p = y.p ;
t = y.t
} ;
-- ConsS : S -> ListS -> ListS
-- TO FIX
-- ConsS x xs = { l = \\_ => consrSS bindComma (ss (x.s ! PreS)) (xs.l ! Comma) };
-- ConsS s ss = {
-- l = \\c =>
-- { s1 = ss.s1 ++
-- table {
-- And => and_Conj
-- } ! c
-- ++ ss.s2 ;
-- s2 = s }
-- } ;
ConsS s ss = {
s = \\co =>
{ init = \\s,a,c,o => coord co { init = (ss.s ! co).init ! s ! a ! c ! o ; last = (ss.s ! co).last ! s ! a ! c ! o } ;
last = combineSentence s } ;
p = s.p ;
t = s.t
} ;
-- BaseAdv : Adv -> Adv -> ListAdv
BaseAdv x y = { l = \\c => twoSS (ss (x.s ! Posit)) (ss (y.s ! Posit)) } ;
BaseAdv x y =
{
s = \\_ => { init = x.s ! Posit ; last = y.s ! Posit }
} ;
-- ConsAdv : Adv -> ListAdv -> ListAdv
ConsAdv x xs = { l = \\_ => consrSS bindComma (ss (x.s ! Posit)) (xs.l ! Comma) } ;
ConsAdv x xs =
{
-- s = \\_ => consrSS bindComma (ss (x.s ! Posit)) (xs.l ! Comma)
s = \\c => { init = coord c (xs.s ! c) ; last = x.s ! Posit }
} ;
-- BaseNP : NP -> NP -> ListNP ; -- John, Mary
-- -- BaseNP : NP -> NP -> ListNP ; -- John, Mary
BaseNP x y = {
l = \\c => twoTable Case x y ;
-- s = \\c => twoTable Case x y ;
s = \\c => { init = x.s ; last = y.s } ;
g = Masc ; -- Just guessing (but maybe sexist bullshit)
n = matchNumber x.n y.n ;
p = P3 ;
@@ -86,35 +107,35 @@ concrete ConjunctionLat of Conjunction =
preap = lin AP { s = \\a => x.preap.s ! a ++ y.preap.s ! a } ;
postap = lin AP { s = \\a => x.postap.s ! a ++ y.postap.s ! a } ;
isBase = True ;
det = { s = \\g,c => x.det.s ! g ! c ++ y.det.s ! g ! c ; sp = \\g,c => x.det.sp ! g ! c ++ y.det.sp ! g ! c ; n = matchNumber x.get.n y.get.n } ;
det = lin Det { s = \\g,c => x.det.s ! g ! c ++ y.det.s ! g ! c ; sp = \\g,c => x.det.sp ! g ! c ++ y.det.sp ! g ! c ; n = matchNumber x.det.n y.det.n } ;
} ;
-- ConsNP : NP -> ListNP -> ListNP ; -- John, Mary, Bill
-- -- ConsNP : NP -> ListNP -> ListNP ; -- John, Mary, Bill
ConsNP x xs = {
l = \\_ => consrTable Case bindComma x ( xs.l ! Comma );
-- s = \\_ => consrTable Case bindComma x ( xs.s ! Comma );
s = \\co => { init = \\pd,ca => coord co { init = (xs.s ! co).init ! pd ! ca ; last = (xs.s ! co).last ! pd ! ca} ; last = x.s } ;
n = matchNumber x.n xs.n ;
g = xs.g ;
p = xs.p ;
adv = x.adv ++ xs.adv ;
preap = lin AP { s = \\a => x.preap.s ! a ++ xs.preap.s ! a } ;
postap = lin AP { s = \\a => x.postap.s ! a ++ xs.postap.s ! a } ;
isBase = False
-- TODO det
isBase = False ;
det = lin Det { s = \\g,c => x.det.s ! g ! c ++ xs.det.s ! g ! c ; sp = \\g,c => x.det.sp ! g ! c ++ xs.det.sp ! g ! c ; n = matchNumber x.det.n xs.det.n } ; -- try to combine the determiners, probably not what we want
} ;
-- BaseAP : AP -> AP -> ListAP
BaseAP x y = { l = \\c => twoTable Agr x y };
-- -- BaseAP : AP -> AP -> ListAP
-- BaseAP x y = { l = \\c => twoTable Agr x y };
-- ConsAP : AP -> ListAP -> ListAP
ConsAP x xs =
{ l = \\_ => consrTable Agr and_Conj.s2 x (xs.l ! Comma ) } ;
-- -- ConsAP : AP -> ListAP -> ListAP
-- ConsAP x xs =
-- { l = \\_ => consrTable Agr and_Conj.s2 x (xs.l ! Comma ) } ;
--
lincat
-- [S] = { l : Coordinator => {s1,s2 : S} } ; -- TO FIX
[Adv] = { l: Coordinator => {s1,s2 : Str}} ;
[NP] = {l : Coordinator => {s1,s2 : Case => Str} ; g : Gender ; n : Number ; p : Person ; adv : Str ; preap : AP ; postap : AP ; isBase : Bool } ;
[AP] = {l : Coordinator => {s1,s2 : Agr => Str } } ;
[S] = { s : Coordinator => {init,last : SAdvPos => AdvPos => ComplPos => Order => Str} ; p : Pol ; t : Tense } ; -- TO FIX
[Adv] = { s: Coordinator => {init,last : Str}} ;
[NP] = { s : Coordinator => {init,last : PronDropForm => Case => Str} ; g : Gender ; n : Number ; p : Person ; adv : Str ; preap : AP ; postap : AP ; isBase : Bool ; det : Det } ;
[AP] = {s : Coordinator => {init,last : Agr => Str } } ;
oper
-- Generates a new number value given two number values.
@@ -126,5 +147,21 @@ concrete ConjunctionLat of Conjunction =
<_,Pl> => Pl ;
<_,_> => Sg
} ;
coord : Coordinator -> {init : Str ; last : Str} -> Str =
\c,l ->
l.init ++
table {
Aut => "aut" ;
Et => "et" ;
Sed => "sed" ;
Si => "si" ;
Vel => "vel" ;
Comma => bindComma ;
Colon => ":" ;
Empty => "" ;
Missing => nonExist
} ! c
++ l.last ;
--
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,9 @@
concrete ExtendLat of Extend = ExtendFunctor with (Grammar=GrammarLat);
concrete ExtendLat of Extend = CatLat ** ExtendFunctor-[VPS,ComplDirectVQ,ComplDirectVS,CompIQuant,EmptyRelSlash,ExistsNP,ExistCN,ExistMassCN,ExistPluralCN,GenModNP,PredAPVP,PredIAdvVP,SlashBareV2S,StrandQuestSlash,StrandRelSlash] with (Grammar=GrammarLat) ** open MissingLat in {
lincat
VPS = Comp ;
lin
-- ComplDirectVS : VS -> Utt -> VP ; -- say: "today"
ComplDirectVS vs utt = AdvVP (UseV <lin V vs : V>) (lin Adv {s = \\_ => ":" ++ quoted utt.s}) ; -- DEFAULT complement added as Adv in quotes
-- ComplDirectVQ : VQ -> Utt -> VP ; -- ask: "when"
ComplDirectVQ vq utt = AdvVP (UseV <lin V vq : V>) (lin Adv {s = \\_ => ":" ++ quoted utt.s}) ; -- DEFAULT complement added as Adv in quotes
} ;

View File

@@ -1,44 +1,43 @@
concrete ExtraLat of ExtraLatAbs =
CatLat, ExtraLexiconLat, ConjunctionLat **
CatLat, ConjunctionLat **
open ResLat, ParadigmsLat, Coordination, Prelude in {
lincat CS = Str ;
lin
useS s = combineSentence s ! SPreO ! PreO ! SOV ;
useS s = combineSentence s ! SPreO ! PreO ! CPreV ! SOV ;
-- PastPartAP : VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
-- PastPartAP vp = { s = vp.part ! VPassPerf } ;
UsePronNonDrop p = -- Pron -> NP
{
g = p.pers.g ;
n = p.pers.n ;
p = p.p ;
s = p.pers.s ! PronNonDrop ! PronNonRefl ;
adv = "" ;
preap, postap = { s = \\_ => "" } ;
det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = p.pers.n } ;
} ;
-- UsePronNonDrop p = -- Pron -> NP
-- p.pers **
-- {
-- p = p.p ;
-- s = \\_ => p.pers.s ! PronNonDrop ! PronNonRefl ;
-- adv = "" ;
-- preap, postap = { s = \\_ => "" } ;
-- det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = p.pers.n } ;
-- } ;
AdjCNPre ap cn = -- AP -> CN -> CN
addAdjToCN (lin AP ap) (lin CN cn) Post ;
-- ConjNP : Conj -> ListNP -> NP ; -- she or we
ConjNPque conj nps =
{
s = case conj.c of {
And => case nps.isBase of {
False => (conjunctDistrTable Case conj (nps.l ! And)).s ;
True => \\c => (nps.l ! And).s1 ! c ++ (nps.l ! And).s2 ! c ++ BIND ++ "que"
} ;
c => (conjunctDistrTable Case conj (nps.l ! And)).s
} ;
n = case conj.c of { And => Pl ; _ => nps.n } ;
g = nps.g ;
p = nps.p ;
adv = nps.adv ;
preap = nps.preap ;
postap = nps.postap ;
det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = nps.n };
} ;
-- -- ConjNP : Conj -> ListNP -> NP ; -- she or we
-- ConjNPque conj nps =
-- {
-- s = case conj.c of {
-- Et => case nps.isBase of {
-- False => \\cse => coord conj.c {init = (nps.s ! Et).init ! cse ; last = (nps.s ! Et).last ! cse } ;-- (conjunctDistrTable Case conj (nps.s ! Et)).s ;
-- True => \\cse => (nps.s ! Et).init ! cse ++ (nps.s ! Et).last ! cse ++ BIND ++ "que"
-- } ;
-- c => \\cse => coord conj.c {init = (nps.s ! c).init ! cse ; last = (nps.s ! c).last ! cse } -- (conjunctDistrTable Case conj (nps.l ! Et)).s
-- } ;
-- n = case conj.c of { Et => Pl ; _ => nps.n } ;
-- g = nps.g ;
-- p = nps.p ;
-- adv = nps.adv ;
-- preap = nps.preap ;
-- postap = nps.postap ;
-- det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = nps.n };
-- } ;
everybodyFem_NP = regNP "quisque" "quemque" "cuiusque" "cuique" "quoque" "quisque" Fem Sg ;-- regNP "quisquae" Sg ; -- L...
somebodyFem_NP = regNP "aliquis" "aliquem" "alicuius" "clicui" "aliquo" "aliquis" Fem Sg ; -- Bayer-Lindauer 60.1

View File

@@ -1,5 +1,5 @@
abstract ExtraLatAbs =
Extra, ExtraLexiconLatAbs, Conjunction
Extra, Conjunction
** {
cat CS ;
fun

View File

@@ -1,453 +0,0 @@
concrete ExtraLexCaesar of ExtraLexCaesarAbs = CatLat ** open Prelude,ParadigmsLat,ResLat, IrregLat, LexiconLat,StructuralLat in {
lin
a_Prep = mkPrep "a" Abl ;
ab_Prep = mkPrep "ab" Abl ;
abdere_V = mkV "abdere" "abdo" "abdidi" "abditum";
abducere_V = mkV "abducere" "abduco" "abduxi" "abductum" ; -- prefixVerb "ab" ducere_V; -- ab + ducere, missing abduci (inf VInfPassPres : abduceri)
abesse_V = prefixVerb "ab" be_V; -- ab + esse, missing absente?
abicere_V = mkV "abicere" "abicio" "abieci" "abiectum"; -- prefixVerb "ab" iacere_V; -- ab + iacere
abscisus_A = mkA "abscisus";
absens_A = mkA "absens" "absentis"; -- missing absente
absimilis_A = mkA "absimilis" "absimile"; -- missing absimili (s Posit (Ag Masc Sg Dat) : absimii)
abstinere_V2 = mkV2 (mkV "abstinere"); -- prefixVerb2 "ab" tenere_V2 ; -- -- ab + tenere
abstrahere_V2 = mkV2 (mkV "abstrahere" "abstraho" "abstraxi" "abstractum");-- prefixVerb2 "ab" trahere_V2 ; -- ab + trahere
-- ac_Conj = mkConj "" "ac" Sg ;
accedere_V = mkV "adcedere" "adcedo" "adcessi" "adcessum"; -- prefixVerb "ad" cedere_V ; -- ad + cedere
accendere_V = mkV "accendere" "accendo" "accendi" "accensum";
accidere_V = mkV "accidere" "accido" "accidi" "accisum"; -- ad + caedere?
accipere_V = mkV "accipere" "accipio" "accepi" "acceptum"; -- prefixVerb "ad" capere_V; -- ad + capere
acclivis_A = mkA "acclivis" "acclive" ;
acclivitas_N = mkN "acclivitas" "acclivitatis" feminine;
accommodare_V = mkV "accommodare" ;
accommodatus_A = mkA "accommodatus" ;
accurrere_V = mkV "accurrere" "accurro" "accucurri" "accursum"; -- prefixVerb "ad" currere_V; -- ad + currere
accusare_V = mkV "accusare";
acervus_N = mkN "acervus" ;
acies_N = mkN "acies" ;
acriter_Adv = ss "acriter"; -- comparison???
ad_Prep = mkPrep "ad" Acc;
adaequare_V = mkV "adaequare"; -- ad + aequare?
adamare_V2 = mkV2 (mkV "adamare"); -- prefixVerb2 "ad" love_V2; -- ad + amare, missing adamassent (act (VAct VAnt (VImpf VConj) Pl P3) : adamavissent)?
adducere_V = mkV "adducere" "adduco" "adduxi" "adductum"; -- prefixVerb "ad" ducere_V; -- ad + ducere, missing adduci
adequitare_V = mkV "adequitare"; -- prefixVerb "ad" equitare_V; -- ad + equitare
adesse_V = prefixVerb "ad" be_V; -- ad + esse
adferre_V = prefixVerb "ad" ferre_V;-- ad + ferre
adfectus_A = mkA "adfectus";
adfectus_N = mkN "adfectus" "adfectus" masculine;
adficere_V = mkV " adficere" "adfico" "adfeci" "adfectum"; -- ad + facere?, missing adficiebantur
adfigere_V = mkV " adfigere" "adfixi" "adfixum"; -- ad + figere?, missing adfixae
adfinitas_N = mkN "adfinitas" "adfinitatis" feminine;
adflictare_V = mkV "adflictare";
adflictus_A = mkA "adflictus";
adgredi_V = mkV "adgredi" "adgredior" "adgressus"; -- ad + gradior?, missing adgressi, adgressus
adgregare_V = mkV "adgregare"; -- ad + gregare?
adhibere_V = mkV "adhibere"; -- ad + habere?
adhuc_Adv = ss "adhuc";
Adiatunnus_PN = mkPN (lin N (singularN (mkN "Adiatunnus")));
adicere_V = mkV "adicere" "adieci" "adiectum"; -- ad + iacere?, missing adiecta
adigere_V = mkV "adigere" "adigo" "adegi" "adactum"; -- ad + agere?, missing adigi
adire_V = mkV "adire" "adeo" "" ""; -- prefixVerb "ad" ire_V; -- ad + ire, missing adiisset, aditus?
aditus_N = mkN "aditus" "aditus" masculine;
adiungere_V = mkV "adiungere" "adiungo" "adiunxi" "adiunctum"; -- ad + iungere?
adiuvare_V = mkV "adiuvare"; -- ad + iuvare?
administrare_V = mkV "administrare"; -- ad + ministrare
admirari_V = mkV "admirari" "admiror" "admiratus"; -- ad + mirari?
admittere_V = mkV "admittere" "admitto" "admisi" "admissum"; -- ad + mittere?
admodum_Adv = ss "admodum";
adoriri_V = mkV "adoriri" "adorior" "adortus"; -- ad + oriri?, missing adorti, adortum, adortus
adpellere_V = mkV "adpellere" "adpello" "adpuli" "adpulsum"; -- ad + pelere?
adpetere_V = mkV "adpetere" "adpeto" "adpetivi" "adpetitum"; -- ad + petere?, missing adpetierit, adpetisse, adpetissent
adpropinquare_V = mkV " adpropinquare"; -- ad + propinquare?
-- adpulsare_V = mkV "adpulsare";
adsciscere_V = mkV "adsciscere" "adscisco" "adscivi" "ascitum"; -- ad + sciscere?
adsuere_V = mkV "adsuere" "adsuo" "adsui" "adsutum"; -- ad + suere?, missing adsue
adsuefacere_V = mkV "adsuefacere" "adsuefacio" "adsuefeci" "adsuefactum"; -- possibly problematic
-- adtectus ???
adulescentia_N = mkN "adulescentia";
adulescentulus_N = mkN "adulescentulus";
advenire_V = mkV "advenire" "advenio" "adveni" "adventum"; -- prefixVerb "ad" venire_V; -- ad + venire
advertere_V = mkV "advertere" "adverto" "adverti" "adversum"; -- ad + vertere?
adventus_N = mkN "adventus" "adventus" masculine;
aedificare_V = mkV "aedificare";
aedificium_N = mkN "aedificium";
aeger_A = mkA "aeger";
aegre_Adv = ss "aegre"; -- comparison?
Aemilius_PN = mkPN (lin N (singularN (mkN "Aemilius")));
aequaliter_Adv = ss "aequaliter";
aequare_V = mkV " aequare";
aequinoctium_N = mkN "aequinoctium";
aequitas_N = mkN "aequitas" "aequitatis" feminine;
aequum_N = mkN "aequum";
aequus_A = mkA "aequus";
aerarius_A = mkA "aerarius";
aerarius_N = mkN "aerarius";
aer_f_N = mkN "aer" "aeris" feminine;
aer_m_N = mkN "aer" "aeris" masculine;
aes_N = mkN "aer" "aeris" neuter;
aestas_N = mkN "aestas" "aestatis" feminine;
aestimare_V = mkV "aestimare";
aestuarium_N = mkN "aestuarium";
aestus_N = mkN "aestus" "aestus" masculine;
aetas_N = mkN "aetas" "aetatis" feminine;
ager_N = mkN "ager";
agere_V = mkV "agere" "ago" "egi" "actum";
agger_N = mkN "agger" "aggeris" masculine;
agmen_N = mkN "agmen" "agminis" neuter;
alacer_A = mkA "alacer" "alacris";
alacritas_N = mkN "alacritas" "alacritatis" feminine;
alarius_A = mkA "alarius";
-- alduas_??? = ???;
alere_1_V = mkV "alere" "alo" "alui" "altum";
alere_2_V = mkV "alere" "alo" "alui" "alitum";
alienus_A = mkA "alienus";
-- alii_Conj = mkConj "alii" "alii" Sg ;
aliquam_Adv = ss "aliquam";
aliquanto_Adv = ss "aliquanto";
--aliqui_Pron = mkPron ???;
-- aliquis_Pron = aliquis;
aliter_Adv = ss "aliter";
alium_N = mkN "alium";
alius_A = mkA (mkN "alius") (mkN "alia") (mkN "aliud" "alius" neuter);
Allobroges_PN = mkPN (lin N (pluralN (mkNoun "" "" "" "" "" "" "Allobroges" "Allobroges" "Allobrogum" "Allobrogibus" masculine))); -- missing Allobrogas
Alpes_PN = mkPN (lin N (pluralN (mkNoun "" "" "" "" "" "" "Alpes" "Alpes" "Alpium" "Alpibus" feminine)));
alter_A = mkA (mkN "alter") (mkN "altera") (mkN "alterum"); -- missing alterius
alterare_V = mkV "alterare";
altitudo_N = mkN "altitudo" "altitudinis" feminine;
altus_A = mkA "altus";
aluta_N = mkN "aluta";
Ambarri_PN = mkPN (lin N (pluralN (mkN "Ambarrus")));
Ambiani_PN = mkPN (lin N (pluralN (mkN "Ambianus")));
Ambiliati_PN = mkPN (lin N (pluralN (mkN "Ambiliatus")));
Ambivariti_PN = mkPN (lin N (pluralN (mkN "Ambivaritus")));
amentia_N = mkN "amentia";
amicitia_N = mkN "amicitia";
amicus_A = mkA "amicus";
amittere_V = mkV "amittere" "amitto" "amisi" "amissum";
amplificare_V = mkV "amplificare";
amplitudo_N = mkN "amplitudo" "amplitudinis" feminine;
amplus_A = mkA "amplus";
anceps_A = mkA "anceps" "ancipitis";
ancora_N = mkN "ancora";
Andebrogius_PN = mkPN (lin N (singularN (mkN "Andebrogius")));
--Andes_PN = ???
angustia_N = mkN "angustia";
angustiare_V = mkV "angustiare";
-- an_Conj = mkConj "" "an" Sg;
-- an_an_Conj = mkConj "an" "an" Sg;
animadvertere_V = mkV "animadvertere" "animadverto" "animadverti" "animadversum";
animus_N = mkN "animus";
annuus_A = mkA "annuus";
ante_Adv = ss "ante";
ante_Prep = mkPrep "ante" Acc;
antea_Adv = ss "antea";
antecedere_V = mkV "antecedere" "antecedo" "antecessi" "antecessum"; -- ante + cedere?
antemna_N = mkN "antemna";
anteponere_V = mkV "anteponere" "antepono" "anteposui" "antepositum"; -- prefixVerb2 "ante" put_V2; -- ante + ponere
antiquitus_Adv = ss "antiquitus";
antiquus_A = mkA "antiquus"; -- missing antiquissimum
aperire_V = mkV "aperire" "aperio" "aperui" "apertum"; -- missing aperta, apertis, apertissimis, apertissimo, aperto, apertum, apertus
apertare_V = mkV "apertare";
Aprilis_PN = mkPN (lin N (singularN (mkN "Aprilis" "Aprilis" masculine))); -- missing Apr, April
appellare_V = mkV "appellare";
aptus_A = mkA "aptus";
apud_Prep = mkPrep "apud" Acc;
aquatio_N = mkN "aquatio" "aquationis" feminine;
aquila_N = mkN "aquila";
Aquileia_PN = mkPN (lin N (singularN (mkN "Aquileia")));
Aquitania_PN = mkPN (lin N (singularN (mkN "Aquitania")));
Aquitanus_N = mkN "Aquitanus";
Arar_PN = mkPN (lin N (singularN (mkN "Arar" "Araris" masculine))); -- missing Ararim
arbitrari_V = mkV "arbitrari";
arbitrium_N = mkN "arbitrium";
arcessere_V = mkV "arcessere" "arcesso" "arcessivi" "arcessitum";
arduus_A = mkA "arduus";
aries_N = mkN "aries" "arietis" masculine;
Ariovistus_PN = mkPN (lin N (singularN (mkN "Ariovistus")));
armatus_A = mkA "armatus";
arma_N = lin N (pluralN (mkNoun "" "" "" "" "" "" "arma" "arma" "armorum" "armis" neuter));
armamentum_N = mkN "armamentum";
armare_V = mkV "armare";
armatura_N = mkN "armatura";
armus_N = mkN "armus";
arroganter_Adv = ss "arroganter"; -- comparison?
arrogantia_N = mkN "arrogantia";
artus_A = mkA "artus";
Arverni_PN = mkPN (lin N (pluralN (mkN "Arvernus")));
arx_N = mkN "arx" "arcis" feminine;
ascendere_V = mkV "ascendere" "ascendo" "ascendi" "ascensum";
-- at_Conj = mkConj "at" "" Sg ;
-- atque_Conj = mkConj "atque" "" Sg ;
Atrebates_PN = mkPN (mkN "Atrebas" "Atrebatis" masculine);
attingere_V = mkV "attingere" "attingo" "attigi" "attactum"; -- ad + tangere?
attribuere_V = mkV "attribuere" "attribuo" "attribui" "attributum"; -- ad + tribuere?, missing attribuant
-- auctibus ???
auctor_N = mkN "auctor" "auctoris" masculine;
auctorare_V = mkV "auctorare";
auctoritas_N = mkN "auctoritas" "auctoritatis" feminine;
auctus_A = mkA "auctus";
audacter_Adv = ss "audacter"; -- comparison?
audax_A = mkA "audax" "audacis";
audere_V = mkV "audere"; -- semi-deponent?, missing ausos
audire_V = mkV "audire" ; -- missing audierant, audierit
auditio_N = mkN "auditio" "auditionis" feminine;
augere_V = mkV "augere"; -- missing auxisse
Atuatuci_PN = mkPN (lin N (pluralN (mkN "Atuatucus")));
Aulerci_PN = mkPN (lin N (pluralN (mkN "Aulercus")));
Auriga_PN = mkPN (mkN "Auriga");
Aurunculeius_PN = mkPN (lin N (singularN (mkN "Aurunculeius")));
Ausci_PN = mkPN (lin N (pluralN (mkN "Auscus")));
-- aut_Conj = mkConj "aut" "" Sg ;
-- autem_Conj = mkConj "autem" "" Sg ;
auxiliare_V = mkV "auxiliare";
auxilium_N = mkN "auxilium";
avaritia_N = mkN "avaritia";
avertere_V = mkV "avertere" "averto" "averti" "aversum"; -- ab + vertere?, missing aventu (noun sg supine neut dat)
avus_N = mkN "avus";
Axona_PN = mkPN (lin N (singularN (mkN "Axona")));
baculus_N = mkN "baculus";
Baleares_PN = mkPN (lin N (pluralN (mkN "Balear" "Balearis" masculine)));
barbarus_A = mkA "barbarus";
barbarus_N = mkN "barbarus";
batavus_A = mkA "batavus";
Belgae_PN = mkPN (lin N (pluralN (mkN "Belga"))); -- missing Belgos
bellare_V = mkV "bellare";
bellicosus_A = mkA "bellicosus";
Bellovaci_PN = mkPN (lin N (pluralN (mkN "Bellovacus")));
bellum_N = mkN "bellum";
bellus_A = mkA "bellus";
bene_Adv = ss "bene"; -- comparison?
beneficium_N = mkN "beneficium";
Bibrax_PN = mkPN (lin N (singularN (mkN "Bibrax" "Bibractis" masculine)));
biduum_N = mkN "biduum";
biduus_A = mkA "biduus";
biennis_A = mkA "biennis" "bienne"; -- missing biennium
biennium_N = mkN "biennium";
binus_A = mkA "binus";
bipedalis_A = mkA "bipedalis" "bipedale"; -- missing bipedalibus
bipertitus_A = mkA "bipertitus";
bis_Adv = ss "bis";
Biturix_PN = mkPN (lin N (pluralN (mkN "Biturix" "Biturigis" masculine)));
-- boc ???
Boduognatus_PN = mkPN (lin N (singularN (mkN "Boduognatus")));
Boi_PN = mkPN (lin N (pluralN (mkN "Boius"))); -- missing Boi
bonitas_N = mkN "bonitas" "bonitatis" feminine;
bracchium_N = mkN "bracchium";
Bratuspantium_PN = mkPN (lin N (singularN (mkN "Bratuspantium")));
brevi_Adv = ss "brevi";
breviare_V = mkV "breviare";
brevis_A = mkA "brevis" "breve"; -- missing brevi
brevitas_N = mkN "brevitas" "brevitatis" feminine;
Britannia_PN = mkPN (mkN "Britannia");
britannus_A = mkA "britannus";
Brutus_PN = mkPN (lin N (singularN (mkN "Brutus")));
cadaver_N = mkN "cadaver" "cadaveris" neuter;
cadere_V = mkV "cadere" "cado" "cecidi" "casum";
Caesar_PN = mkPN (lin N (singularN (mkN "Caesar" "Caesaris" masculine))); -- missing Caesare
caespes_N = mkN "caespes" "caespitis" masculine;
calamitas_N = mkN "calamitas" "calamitatis" feminine;
calare_V = mkV "calare";
calo_N = mkN "calo" "calonis" masculine;
campus_N = mkN "campus";
capere_V = mkV "capere" "capio" "cepi" "captum"; -- missing capi
captivus_A = mkA "captivus";
captivus_N = mkN "captivus";
captus_N = mkN "captus" "captus" masculine;
carina_N = mkN "carina";
carpere_V = mkV "carpere" "carpio" "carpsi" "carptum";
carrus_N = mkN "carrus";
castellum_N = mkN "castellum";
castra_N = lin N (pluralN (mkNoun "" "" "" "" "" "" "castra" "castra" "castrorum" "castris" neuter));
casus_N = mkN "casus" "casus" masculine;
catena_N = mkN "catena";
causa_N = mkN "causa";
causa_Prep = mkPostp "causa" Gen;
cavare_V = mkV "cavare";
cavere_V = mkV "cavere";
cedere_V = mkV "cedere" "cedo" "cessi" "cessum";
celare_V = mkV "celare";
celer_A = mkA "celer" "celeris"; -- strange?
celeritas_N = mkN "celeritas" "celeritatis" feminine;
celeriter_Adv = ss "celeriter"; -- comparison? missing celerius, celerrime
census_N = mkN "census" "census" masculine;
censere_V = mkV "censere";
centuriare_V = mkV "centuriare";
centurio_N = mkN "centurio" "centurionis" masculine;
cernere_V = mkV "cernere" "cerno" "crevi" "cretum";
certare_V = mkV "certare";
certamen_N = mkN "certamen" "certaminis" neuter;
certus_A = mkA "certus";
ceterus_A = mkA "ceterus";
cibarius_A = mkA "cibarius";
cibus_N = mkN "cibus";
ciere_V = mkV "ciere" "cio" "civi" "citum";
cingere_V = mkV "cingere" "cingo" "cingi" "cinctum";
circinare_V = mkV "circinare";
circinus_N = mkN "circinus";
circiter_Adv = ss "circiter";
circiter_Prep = mkPrep "circiter" Acc;
circuitus_N = mkN "circuitus" "circuitus" masculine;
circum_Adv = ss "circum";
circum_Prep = mkPrep "circum" Acc;
circumdare_V = mkV "circumdare" "circumdo" "circumdedi" "circumdatum"; -- prefixVerb "circum" dare_V; -- circum + dare, missing circumdederant, circumdederunt
circumducere_V = mkV "circumducere" "circumduco" "circumduxi" "circumductum"; -- prefixVerb "circum" ducere_V; circum + ducere
circumiectus_A = mkA "circumiectus";
circumire_V = prefixVerb "circum" ire_V;
circummunire_V = mkV "circummunire";
circumsistere_1_V = mkV "circumsistere" "circumsisto" "circumstiti" "circumstatum" ; -- prefixVerb "circum" sistere_1_V; -- circum + sistere
-- circumsistere_2_V = prefixVerb "circum" sistere_2_V; -- circum + sistere
circumvenire_V = mkV "circumvenire" ; -- prefixVerb "circum" venire_V; -- circum + venire
cis_Prep = mkPrep "cis" Acc;
citare_V = mkV "citare";
citer_A = mkA "citer"; -- missing citeriore, citeriorem, citerioris
citra_Adv = ss "citra";
citus_A = mkA "citus";
civitas_N = mkN "civitas" "civitatis" feminine;
colere_V = mkV "colere" "colo" "colui" "cultum";
cooriri_V = mkV "cooriri" "coorior" "coortus"; -- prefixVerb "con" oriri_V; -- con + oriri, missing coorta
conferre_V = prefixVerb "con" ferre_V; -- con + ferre
---
conspicere_V = mkV "conspicere" "conspicio" "conspexi" "conspectum"; -- prefixVerb "con" specere_V; -- con + specere
conspirare_V = mkV "conspirare"; -- con + spirare?
constanter_Adv = ss "constanter"; -- comparison
constantia_N = mkN "constantia";
constare_V = mkV "constare"; -- prefixVerb "con" stare_V; -- con + stare, missing constiterant, constiterat, constiterunt, constitissent, constitisset, constitit
-- consternare_V = mkV "consternare"; -- con + sternere ?
consternere_V = mkV "consternere" "consterno" "constravi" "constratum"; -- con + sternere?
constituere_V = mkV "constituere" "constituo" "constitui" "constitutum"; -- prefixVerb "con" statuere_V; -- con + statuere
constitutum_N = mkN "constitutum";
consuere_V = mkV "consuere" "consuo" "consui" "consustum";
consuescere_V = mkV "consuescere" "consuesco" "consuevi" "consuetum"; -- con + suescere?, missing consuesse, consuessent?
consuetudo_N = mkN "consuetudo" "consuetudinis" feminine;
consul_N = mkN "consul" "consulis" masculine;
consulatus_N = mkN "consulatus" "consulatus" masculine;
consulere_V = mkV "consulere" "consulo" "consului" "consultum";
consultare_V = mkV "consultare";
consultum_N = mkN "consultum";
contemptio_N = mkN "contemptio" "contemptionis" feminine;
contemptus_A = mkA "contemptus";
contemptus_N = mkN "contemptus" "contemptus" masculine;
contentio_N = mkN "contentio" "contentionis" feminine;
contendere_V = mkV "contendere" "contendo" "contendi" "contentum";
contexere_V = mkV "contexere" "contexo" "contexui" "contextum"; -- prefixVerb "con" texere_V; -- con + texere
continens_N = mkN "continens" "continentis" feminine;
continenter_Adv = ss "continenter";
continere_V2 = mkV2 (mkV "continere"); -- prefixVerb2 "con" tenere_V2; con + tenere
contingere_V = mkV "contingere" "contingo" "contigi" "contectum"; -- con + tangere?
continuatio_N = mkN "continuatio" "continuationis" feminine;
continuus_A = mkA "continuus";
contra_Adv = ss "contra";
-- contrahere_V2 = -- prefixVerb2 "con" trahere_V2; -- con + trahere
contrarius_A = mkA "contrarius";
contumelia_N = mkN "contumelia";
convallis_N = mkN "convallis" "convallis" feminine;
convenire_V = prefixVerb "con" venire_V; -- missing convenerant, convenerat, convenerunt, convenisse, convenissent, convenisset, conventu, conventus
conversare_V = mkV "conversare";
convertere_V = prefixVerb "con" vertere_V; -- con + vertere
convincere_V = prefixVerb "con" vincere_V; -- con + vincere
convocare_V = prefixVerb "con" vocare_V; -- con + vocare
copia_N = mkN "copia";
copiosus_A = mkA "copiosus";
copula_N = mkN "copula";
cora_N = mkN "cora";
corona_N = mkN "corona";
corpus_N = mkN "corpus" "corporis" neuter;
cos_N = mkN "cos" "cotis" feminine;
cotidianus_A = mkA "cotidianus";
cotidie_Adv = ss "cotidie";
Cotta_PN = mkPN (lin N (singularN (mkN "Cotta")));
crassitudo_N = mkN "crassitudo" "crassitudinis" feminine;
Crassus_PN = mkPN (lin N (singularN (mkN "Crassus")));
cratis_N = mkN "cratis" "cratis" feminine;
creare_V = mkV "creare";
creber_A = mkA "creber";
credere_V = mkV "credere" "credo" "credidi" "creditum";
cremare_V = mkV "cremare";
crescere_V = mkV "crescere" "cresco" "crevi" "cretum";
Creta_N = mkN "Creta";
cruciare_V = mkV "cruciare";
cruciatus_N = mkN "cruciatus" "cruciatus" masculine;
crudelitas_N = mkN "crudelitas" "crudelitatis" feminine;
crudeliter_Adv = ss "crudeliter"; -- comparison?
culmen_N = mkN "culmen" "culminis" neuter;
culpa_N = mkN "culpa";
cultura_N = mkN "cultura";
cultus_N = mkN "cultus" "cultus" masculine;
cum_Prep = mkPrep "cum" Abl;
cunctari_V = mkV "cunctari";
cunctatio_N = mkN "cunctatio" "cunctationis" feminine;
cunctus_A = mkA "cunctus";
cuniculus_N = mkN "cuniculus";
cupere_V = mkV "cupere" "cupio" "cupivi" "cupitum";
cupiditas_N = mkN "cupiditas" "cupiditatis" feminine;
cupidus_A = mkA "cupidus";
cur_Adv = ss "cur";
cura_N = mkN "cura";
curare_V = mkV "curare"; -- missing curasset
currere_V = mkV "currere" "curro" "cucurri" "cursum";
currus_N = mkN "currus" "currus" masculine;
custodia_N = mkN "custodia";
damnare_V = mkV "damnare";
damnatus_A = mkA "damnatus";
dare_V = mkV "dare" "do" "dedi" "datum";
datum_N = mkN "datum";
de_Prep = mkPrep "de" Abl;
debere_VV = StructuralLat.must_VV;
ducere_V = mkV "ducere" "duco" "duxi" "ductum" ;
equitare_V = mkV "equitare";
ferre_V = fixFerre (mkVerb "ferre" "fer" "fer" "fera" "fereba" "ferre" "fere" "fer" "tul" "tul" "tuleri" "tulera" "tulisse" "tuleri" "lat");
iacere_V = mkV "iacere" "iacio" "ieci" "iactum";
ire_V = LexiconLat.go_V;
-- ne_an_Conj = mkConj (BIND ++ "ne") "an" Sg;
-- nonne_an_Conj = mkConj "nonne" "an" Sg;
-- num_an_Conj = mkConj "num" "an" Sg;
oriri_V = mkV "oriri" "orior" nonExist "ortus";
qui_IP = StructuralLat.whatSg_IP;
sistere_1_V = mkV "sistere" "sisto" "stiti" "statum";
sistere_2_V = mkV "sistere" "sisto" "steti" "statum";
specere_V = mkV "specere" "speco" "spexi" "spectum";
stare_V = LexiconLat.stand_V;
statuere_V = mkV "statuere" "statuo" "statui" "statutum";
tenere_V2 = LexiconLat.hold_V2;
texere_V = mkV "texere" "texo" "texui" "textum";
trahere_V2 = LexiconLat.pull_V2;
-- utrum_an_Conj = mkConj "utrum" "an" Sg;
venire_V = LexiconLat.come_V;
vertere_V = mkV "vertere" "verto" "verti" "versum";
vincere_V = mkV "vincere" "vinco" "vici" "victum";
vocare_V = mkV "vocare";
oper
fixFerre : Verb -> Verb =
\ferre ->
{
act = table
{
(VAct VSim (VPres VInd) Sg P2) => "fers";
(VAct VSim (VPres VInd) Sg P3) => "fert";
(VAct VSim (VPres VInd) Pl P1) => "ferimus";
(VAct VSim (VPres VInd) Pl P2) => "fertis";
rest => ferre.act ! rest
};
ger = ferre.ger;
geriv = ferre.geriv;
imp = table
{
(VImp1 Sg) => "fer";
(VImp1 Pl) => "ferte";
(VImp2 Sg P2) => "ferto";
(VImp2 Sg P3) => "ferto";
(VImp2 Pl P2) => "fertote";
rest => ferre.imp ! rest
};
inf = ferre.inf;
part = ferre.part;
pass = table
{
VPass (VPres VInd) Sg P2 => "ferris";
VPass (VPres VInd) Sg P3 => "fertur";
rest => ferre.pass ! rest
};
sup = ferre.sup;
} ;
}

View File

@@ -1,417 +0,0 @@
abstract ExtraLexCaesarAbs = Cat ** {
fun
a_Prep : Prep;
ab_Prep : Prep;
abdere_V : V;
abducere_V : V;
abesse_V : V;
abicere_V : V;
abscisus_A : A;
absens_A : A;
absimilis_A : A;
abstinere_V2 : V2;
abstrahere_V2 : V2;
ac_Conj : Conj ;
accedere_V : V;
accendere_V : V;
accidere_V : V;
accipere_V : V;
acclivis_A : A;
acclivitas_N : N;
accommodare_V : V;
accommodatus_A : A;
accurrere_V : V;
accusare_V : V;
acervus_N : N;
acies_N : N;
acriter_Adv : Adv;
ad_Prep : Prep;
adaequare_V : V;
adamare_V2 : V2;
adducere_V : V;
adequitare_V : V;
adesse_V : V;
adferre_V : V;
adfectus_A : A;
adfectus_N : N;
adficere_V : V;
adfigere_V : V;
adfinitas_N : N;
adflictare_V : V;
adflictus_A : A;
adgredi_V : V;
adgregare_V : V;
adhibere_V : V;
adhuc_Adv : Adv;
Adiatunnus_PN : PN;
adicere_V : V;
adigere_V : V;
adire_V : V;
aditus_N : N;
adiungere_V : V;
adiuvare_V : V;
administrare_V : V;
admirari_V : V;
admittere_V : V;
admodum_Adv : Adv;
adoriri_V : V;
adpellere_V : V;
adpetere_V : V;
adpropinquare_V : V;
adpulsare_V : V;
adsciscere_V : V;
adsuere_V : V;
adsuefacere_V : V;
adulescentia_N : N;
adulescentulus_N : N;
advenire_V : V;
adventus_N : N;
advertere_V : V;
aedificare_V : V;
aedificium_N : N;
aeger_A : A;
aegre_Adv : Adv;
Aemilius_PN : PN;
aequaliter_Adv : Adv;
aequare_V : V;
aequinoctium_N : N;
aequitas_N : N;
aequum_N : N;
aequus_A : A;
aerarius_A : A;
aerarius_N : N;
aer_f_N : N;
aer_m_N : N;
aes_N : N;
aestas_N : N;
aestimare_V : V;
aestuarium_N : N;
aestus_N : N;
aetas_N : N;
-- afferre_V : V;
ager_N : N;
agere_V : V;
agger_N : N;
agmen_N : N;
alacer_A : A;
alacritas_N : N;
alarius_A : A;
-- alduas_??? : ???;
alere_1_V : V;
alere_2_V : V;
alienus_A : A;
alii_Conj : Conj;
aliquam_Adv : Adv;
aliquanto_Adv : Adv;
-- aliqui_Pron : Pron;
aliquis_Pron : Pron;
aliter_Adv : Adv;
alium_N : N;
alius_A : A;
Allobroges_PN : PN;
Alpes_PN : PN;
alter_A : A;
alterare_V : V;
altitudo_N : N;
altus_A : A;
aluta_N : N;
Ambarri_PN : PN;
Ambiani_PN : PN;
Ambiliati_PN : PN;
Ambivariti_PN : PN;
amentia_N : N;
amicitia_N : N;
amicus_A : A;
amittere_V : V;
amplificare_V : V;
amplitudo_N : N;
amplus_A : A;
an_Conj : Conj;
an_an_Conj : Conj;
anceps_A : A;
ancora_N : N;
Andebrogius_PN : PN;
Andes_PN : PN;
angustiare_V : V;
angustia_N : N;
animadvertere_V : V;
animus_N : N;
annuus_A : A;
ante_Adv : Adv;
ante_Prep : Prep;
antea_Adv : Adv;
antecedere_V : V;
antemna_N : N;
anteponere_V : V;
antiquitus_Adv : Adv;
antiquus_A : A;
aperire_V : V;
apertare_V : V;
appellare_V : V;
Aprilis_PN : PN;
aptus_A : A;
apud_Prep : Prep;
aquatio_N : N;
aquila_N : N;
Aquileia_PN : PN;
Aquitanus_N : N;
Aquitania_PN : PN;
Arar_PN : PN;
arbitrari_V : V;
arbitrium_N : N;
arcessere_V : V;
arduus_A : A;
aries_N : N;
Ariovistus_PN : PN;
armatus_A : A;
arma_N : N;
armamentum_N : N;
armare_V : V;
armatura_N : N;
armus_N : N;
arroganter_Adv : Adv;
arrogantia_N : N;
artus_A : A;
Arverni_PN : PN;
arx_N : N;
ascendere_V : V;
at_Conj : Conj;
atque_Conj : Conj ;
Atrebates_PN : PN;
attingere_V : V;
attribuere_V : V;
Atuatuci_PN : PN;
auctor_N : N;
auctorare_V : V;
auctoritas_N : N;
auctus_A : A;
audacter_Adv : Adv;
audax_A : A;
audere_V : V;
audire_V : V;
auditio_N : N;
augere_V : V;
Aulerci_PN : PN;
Auriga_PN : PN;
Aurunculeius_PN : PN;
Ausci_PN : PN;
aut_Conj : Conj;
autem_Conj : Conj;
auxiliare_V : V;
auxilium_N : N;
avaritia_N : N;
avertere_V : V;
avus_N : N;
Axona_PN : PN;
baculus_N : N;
Baleares_PN : PN;
barbarus_A : A;
barbarus_N : N;
batavus_A : A;
Belgae_PN : PN;
bellare_V : V;
bellicosus_A : A;
Bellovaci_PN : PN;
bellum_N : N;
bellus_A : A;
bene_Adv : Adv;
beneficium_N : N;
Bibrax_PN : PN;
biduum_N : N;
biduus_A : A;
biennis_A : A;
biennium_N : N;
binus_A : A;
bipedalis_A : A;
bipertitus_A :A;
bis_Adv : Adv;
Biturix_PN : PN;
-- boc ???
Boduognatus_PN : PN;
Boi_PN : PN;
bonitas_N : N;
bracchium_N : N;
Bratuspantium_PN : PN;
brevi_Adv : Adv;
breviare_V : V;
brevis_A : A;
brevitas_N : N;
Britannia_PN : PN;
britannus_A : A;
Brutus_PN : PN;
cadaver_N : N;
cadere_V : V;
Caesar_PN : PN;
caespes_N : N;
calamitas_N : N;
calare_V : V;
calo_N : N;
campus_N : N;
capere_V : V;
captivus_A : A;
captivus_N : N;
captus_N : N;
carina_N : N;
carpere_V : V;
carrus_N : N;
castellum_N : N;
castra_N : N;
casus_N : N;
catena_N : N;
causa_N : N;
causa_Prep : Prep; -- Postposition
cavare_V : V;
cavere_V : V;
cedere_V : V;
celare_V : V;
celer_A : A;
celeritas_N : N;
celeriter_Adv : Adv;
censere_V : V;
census_N : N;
centuriare_V : V;
centurio_N : N;
cernere_V : V;
certare_V : V;
certamen_N : N;
certus_A : A;
ceterus_A : A;
cibarius_A : A;
cibus_N : N;
ciere_V : V;
cingere_V : V;
circinare_V : V;
circinus_N : N;
circiter_Adv : Adv;
circiter_Prep : Prep;
circuitus_N : N;
circum_Adv : Adv;
circum_Prep : Prep;
circumdare_V : V;
circumducere_V : V;
circumiectus_A : A;
circumire_V : V;
circummunire_V : V;
circumsistere_1_V : V;
-- circumsistere_2_V : V;
circumvenire_V : V;
cis_Prep : Prep;
citare_V : V;
citer_A : A;
citra_Adv : Adv;
citus_A : A;
civitas_N : N;
colere_V : V;
conferre_V : V;
---
conspicere_V : V;
conspirare_V : V;
constanter_Adv : Adv;
constantia_N : N;
constare_V : V;
-- consternare_V : V;
consternere_V : V;
constituere_V : V;
constitutum_N : N;
consuere_V : V;
consuescere_V : V;
consuetudo_N : N;
consul_N : N;
consulatus_N : N;
consulere_V : V;
consultare_V : V;
consultum_N : N;
contemptio_N : N;
contemptus_A : A;
contemptus_N : N;
contendere_V : V;
contentio_N : N;
contexere_V : V;
continens_N : N;
continenter_Adv : Adv;
continere_V2 : V2;
contingere_V : V;
continuatio_N : N;
continuus_A : A;
contra_Adv : Adv;
contrahere_V2 : V2;
contrarius_A : A;
contumelia_N : N;
convallis_N : N;
convenire_V : V;
conversare_V : V;
convertere_V : V;
convincere_V : V;
convocare_V : V;
cooriri_V : V;
copia_N : N;
copiosus_A : A;
copula_N : N;
cora_N : N;
corona_N : N;
corpus_N : N;
cos_N : N;
cotidianus_A : A;
cotidie_Adv : Adv;
Cotta_PN : PN;
crassitudo_N : N;
Crassus_PN : PN;
cratis_N : N;
creare_V : V;
creber_A : A;
credere_V : V;
cremare_V : V;
crescere_V : V;
Creta_N : N;
cruciare_V : V;
cruciatus_N : N;
crudelitas_N : N;
crudeliter_Adv : Adv;
culmen_N : N;
culpa_N : N;
cultura_N : N;
cultus_N : N;
cum_Prep : Prep;
cunctari_V : V;
cunctatio_N : N;
cunctus_A : A;
cuniculus_N : N;
cupere_V : V;
cupiditas_N : N;
cupidus_A : A;
cur_Adv : Adv;
cura_N : N;
curare_V : V;
currere_V : V;
currus_N : N;
custodia_N : N;
damnare_V : V;
damnatus_A : A;
dare_V : V;
datum_N : N;
de_Prep : Prep;
debere_VV : VV;
ducere_V : V;
equitare_V : V;
ferre_V : V;
iacere_V : V;
ire_V : V;
ne_an_Conj : Conj;
nonne_an_Conj : Conj;
num_an_Conj : Conj;
oriri_V : V;
qui_IP : IP;
sistere_1_V : V;
sistere_2_V : V;
specere_V : V;
stare_V : V;
statuere_V : V;
tenere_V2 : V2;
texere_V : V;
trahere_V2 : V2;
utrum_an_Conj : Conj;
venire_V : V;
vertere_V : V;
vincere_V : V;
vocare_V : V;
}

View File

@@ -1,28 +0,0 @@
concrete ExtraLexiconLat of ExtraLexiconLatAbs = CatLat ** open ParadigmsLat in {
lin
friend_Fem_N = mkN "amica" ; -- -i/-ae m./f. (Langenscheidts)
baby_Fem_N = mkN "infans" "infantis" feminine ; -- Ranta; -antis m./f. (Langenscheidts)
blue_Var_A = mkA "caeruleus" ; -- 3 (Langenscheidts)
boss_Fem_N = mkN "dux" "ducis" feminine ; -- ducis m./f. (Langenscheidts)
bread_Neutr_N = mkN "pane" "panis" neuter ; -- -is m./n. (Langenscheidts)
cat_Var_N = mkN "felis" "felis" feminine ; -- -is f. (Langenscheidts)
cousin_Fem_N = mkN "consobrina" ; -- -i/-ae m./f. (Langenscheidts)
cow_Fem_N = mkN "bos" "bovis" feminine ; -- bovis (gen. pl. boum, dat./abl. pl. bobus/bubus) m./f. (Langenscheidts)
dog_Fem_N = mkN "canis" "canis" feminine ; -- -is m./f. (Langenscheidts)
enemy_Fem_N = mkN "hostis" "hostis" feminine ; -- -is m./f. (Langenscheidts)
policeman_Fem_N = mkN "custos" "custodis" feminine ; -- -odis m./f. (Langenscheidts)
priest_Fem_N = mkN "sacerdos" "sacerdotis" feminine ; -- -dotis m./f. (Langenscheidts)
snake_Fem_N = mkN "serpens" "serpentis" feminine ; -- -entis m./f. (Langenscheidts)
student_Fem_N = mkN "discipula" ; -- -i/-ae m./f. (Langenscheidts)
switch8on_Var_V2 = mkV2 (mkV "exstinguere" ) ; -- -ingo, -inxi, -inctum 3 (Langenscheidts)
bark_Fem_N = mkN "cortex" "corticis" feminine ; -- -icis m./(f.) (Langenscheidts)
blood_Var_N = mkN "sangis" "sanginis" masculine ; -- -inis m. (Langenscheidts)
day_Fem_N = mkN "dies" "diei" feminine ; -- -ei m./f. (Langenscheidts)
horn_Var_N = mkN "cornu" "cornus" neuter ; -- -us n. (Langenscheidts)
liver_Var_N = mkN "iocur" "iocineris" neuter ; -- iecoris/iocineris n. (Langenscheidts)
louse_Fem_N = mkN "pedis" "pedis" feminine ; -- -is m./f. (Langenscheidts)
nose_Neutr_N = mkN "nasum" ; -- -i m./n. (Langenscheidts)
rope_Fem_N = mkN "funis" "funis" feminine ; -- -is m.(/f.) (Langenscheidts)
salt_Neutr_N = mkN "sal" "salis" neuter ; -- salis m./n. (Langenscheidts)
stick_Neutr_N = mkN "baculum" ; -- -i n./m.
};

View File

@@ -1,29 +0,0 @@
abstract ExtraLexiconLatAbs = Cat, Lexicon, ExtraLexCaesarAbs ** {
fun
-- Ambigous entries from main lexicon
friend_Fem_N : N ;
baby_Fem_N : N ;
blue_Var_A : A ;
boss_Fem_N : N ;
bread_Neutr_N : N ;
cat_Var_N : N ;
cousin_Fem_N : N ;
cow_Fem_N : N ;
dog_Fem_N : N ;
enemy_Fem_N : N ;
policeman_Fem_N : N ;
priest_Fem_N : N ;
snake_Fem_N : N ;
student_Fem_N : N ;
switch8on_Var_V2 : V2 ;
bark_Fem_N : N ;
blood_Var_N : N ;
day_Fem_N : N ;
horn_Var_N : N ;
liver_Var_N : N ;
louse_Fem_N : N ;
nose_Neutr_N : N ;
rope_Fem_N : N ;
salt_Neutr_N : N ;
stick_Neutr_N : N ;
};

View File

@@ -8,7 +8,7 @@ concrete IdiomLat of Idiom = CatLat ** open Prelude, ResLat in {
--
-- CleftNP np rs = mkClause "it" (agrP3 Sg)
-- (insertObj (\\_ => rs.s ! np.a)
-- (insertObj (\\_ => np.s ! rs.c) (predAux auxBe))) ;
-- (insertObj (\\_ => combineNounPhrase np ! PronNonDrop ! rs.c) (predAux auxBe))) ;
--
-- CleftAdv ad s = mkClause "it" (agrP3 Sg)
-- (insertObj (\\_ => conjThat ++ s.s)
@@ -16,7 +16,7 @@ concrete IdiomLat of Idiom = CatLat ** open Prelude, ResLat in {
--
-- ExistNP np =
-- mkClause "there" (agrP3 (fromAgr np.a).n)
-- (insertObj (\\_ => np.s ! Acc) (predAux auxBe)) ;
-- (insertObj (\\_ => combineNounPhrase np ! PronNonDrop ! Acc) (predAux auxBe)) ;
--
-- ExistIP ip =
-- mkQuestion (ss (ip.s ! Nom))

View File

@@ -154,7 +154,7 @@ lin
open_V2 = mkV2 (mkV "aperire") ; -- aperio, aperui, apertum 4 (Langenscheidts)
paint_V2A = mkV2A (mkV "pingere" "pingo" "pinxi" "pictum" ) Acc_Prep ; -- pingo, pinxi, pictum 3 (Langenscheidts)
paper_N = mkN "charta" ; -- -ae f. (http://la.wikipedia.org/wiki/Charta / Pons)
paris_PN = mkPN (mkN "Lutetia") ; -- -ae f. (http://la.wikipedia.org/wiki/Lutetia)
paris_PN = mkPN (mkN "Lutetia") singular ; -- -ae f. (http://la.wikipedia.org/wiki/Lutetia)
peace_N = mkN "pax" "pacis" feminine ; -- pacis f. (Langenscheidts)
pen_N = mkN "stilus" ; -- -i m. (Langenscheidts)
planet_N = mkN "planeta" ; -- -ae m. (http://la.wikipedia.org/wiki/Planeta)
@@ -178,7 +178,7 @@ lin
say_VS = mkVS (mkV "dicere" "dico" "dixi" "dictum") ; -- dico, dixi, dictum 3 (Langenscheidts)
school_N = mkN "schola" ; -- -ae f. (Langenscheidts)
-- Irregular
science_N = R.pluralN (mkN "litera" ) ; -- only pl. (Langenscheidts)
science_N = pluralN (mkN "litera" ) ; -- only pl. (Langenscheidts)
sea_N = mkN "mare" "maris" neuter ; -- -is n. (Langenscheidts)
seek_V2 = mkV2 (mkV "quaerere" "quaero" "quaesivi" "quaesitum" ) ; -- quaero, quaesivi, quaesitum 3 (Langenscheidts)
see_V2 = mkV2 (mkV "videre") ; -- video, vidi, visum 2 (Langenscheidts)
@@ -384,7 +384,7 @@ lin
rule_N = mkN "regula" ; -- -ae f. (Langenscheidts)
-- added 4/6/2007
john_PN = mkPN (mkN "Iohannes") ; -- (http://en.wikipedia.org/wiki/John_(given_name))
john_PN = mkPN (mkN "Iohannes") singular ; -- (http://en.wikipedia.org/wiki/John_(given_name))
question_N = mkN "rogatio" "rogationis" feminine; -- -onis f. (Langenscheidts)
ready_A = mkA "paratus" ; -- 3 (Langenscheidts)
reason_N = mkN "causa" ; -- -ae f. (Langenscheidts)

View File

@@ -6,17 +6,18 @@ oper AdvCN : CN -> Adv -> CN = notYet "AdvCN" ;
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
oper BaseAP : AP -> AP -> ListAP = notYet "BaseAP" ;
oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ;
oper BaseS : S -> S -> ListS = notYet "BaseS" ;
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
oper CompIP : IP -> IComp = notYet "CompIP" ;
oper ComplN2 : N2 -> NP -> CN = notYet "ComplN2" ;
oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
oper ConjAdv : Conj -> ListAdv -> Adv = notYet "ConjAdv" ;
oper ConjAP : Conj -> ListAP -> AP = notYet "ConjAP" ;
oper ConjRS : Conj -> ListRS -> RS = notYet "ConjRS" ;
oper ConjS : Conj -> ListS -> S = notYet "ConjS" ;
oper ConsAP : AP -> ListAP -> ListAP = notYet "ConsAP" ;
oper ConsRS : RS -> ListRS -> ListRS = notYet "ConsRS" ;
oper ConsS : S -> ListS -> ListS = notYet "ConsS" ;
oper DetQuantOrd : Quant -> Num -> Ord -> Det = notYet "DetQuantOrd" ;
oper EmbedQS : QS -> SC = notYet "EmbedQS" ;
oper EmbedS : S -> SC = notYet "EmbedS" ;
@@ -33,18 +34,11 @@ oper ImpersCl : VP -> Cl = notYet "ImpersCl" ;
oper ImpPl1 : VP -> Utt = notYet "ImpPl1" ;
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
oper NumDigits : Digits -> Card = notYet "NumDigits" ;
oper NumNumeral : Numeral -> Card = notYet "NumNumeral" ;
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
oper OrdNumeral : Numeral -> Ord = notYet "OrdNumeral" ;
oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
oper PossPron : Pron -> Quant = notYet "PossPron" ;
oper pot1 : Digit -> Sub100 = notYet "pot1" ;
oper pot110 : Sub100 = notYet "pot110" ;
oper pot111 : Sub100 = notYet "pot111" ;
oper pot1plus : Digit -> Sub10 -> Sub100 = notYet "pot1plus" ;
oper pot1to19 : Digit -> Sub100 = notYet "pot1to19" ;
oper pot2 : Sub10 -> Sub1000 = notYet "pot2" ;
oper pot2plus : Sub10 -> Sub100 -> Sub1000 = notYet "pot2plus" ;
oper pot3 : Sub1000 -> Sub1000000 = notYet "pot3" ;
oper pot3plus : Sub1000 -> Sub1000 -> Sub1000000 = notYet "pot3plus" ;
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
@@ -78,27 +72,28 @@ oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
oper AdvQVP : VP -> IAdv -> QVP = notYet "AdvQVP" ;
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
oper BaseAdV : AdV -> AdV -> ListAdV = notYet "BaseAdV" ;
oper BaseAP : AP -> AP -> ListAP = notYet "BaseAP" ;
oper BaseCN : CN -> CN -> ListCN = notYet "BaseCN" ;
oper BaseDAP : DAP -> DAP -> ListDAP = notYet "BaseDAP" ;
oper BaseIAdv : IAdv -> IAdv -> ListIAdv = notYet "BaseIAdv" ;
oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ;
oper BaseS : S -> S -> ListS = notYet "BaseS" ;
oper CompIP : IP -> IComp = notYet "CompIP" ;
oper ComplN2 : N2 -> NP -> CN = notYet "ComplN2" ;
oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
oper ComplSlashIP : VPSlash -> IP -> QVP = notYet "ComplSlashIP" ;
oper ConjAdv : Conj -> ListAdv -> Adv = notYet "ConjAdv" ;
oper ConjAdV : Conj -> ListAdV -> AdV = notYet "ConjAdV" ;
oper ConjAP : Conj -> ListAP -> AP = notYet "ConjAP" ;
oper ConjCN : Conj -> ListCN -> CN = notYet "ConjCN" ;
oper ConjDet : Conj -> ListDAP -> Det = notYet "ConjDet" ;
oper ConjIAdv : Conj -> ListIAdv -> IAdv = notYet "ConjIAdv" ;
oper ConjRS : Conj -> ListRS -> RS = notYet "ConjRS" ;
oper ConjS : Conj -> ListS -> S = notYet "ConjS" ;
oper ConsAdV : AdV -> ListAdV -> ListAdV = notYet "ConsAdV" ;
oper ConsAP : AP -> ListAP -> ListAP = notYet "ConsAP" ;
oper ConsCN : CN -> ListCN -> ListCN = notYet "ConsCN" ;
oper ConsDAP : DAP -> ListDAP -> ListDAP = notYet "ConsDAP" ;
oper ConsIAdv : IAdv -> ListIAdv -> ListIAdv = notYet "ConsIAdv" ;
oper ConsRS : RS -> ListRS -> ListRS = notYet "ConsRS" ;
oper ConsS : S -> ListS -> ListS = notYet "ConsS" ;
oper CountNP : Det -> NP -> NP = notYet "CountNP" ;
oper DetDAP : Det -> DAP = notYet "DetDAP" ;
oper DetQuantOrd : Quant -> Num -> Ord -> Det = notYet "DetQuantOrd" ;
@@ -112,21 +107,14 @@ oper IdetIP : IDet -> IP = notYet "IdetIP" ;
oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
oper NumDigits : Digits -> Card = notYet "NumDigits" ;
oper NumNumeral : Numeral -> Card = notYet "NumNumeral" ;
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
oper OrdNumeral : Numeral -> Ord = notYet "OrdNumeral" ;
oper OrdNumeralSuperl : Numeral -> A -> Ord = notYet "OrdNumeralSuperl" ;
oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
oper PartNP : CN -> NP -> CN = notYet "PartNP" ;
oper PossNP : CN -> NP -> CN = notYet "PossNP" ;
oper PossPron : Pron -> Quant = notYet "PossPron" ;
oper pot1 : Digit -> Sub100 = notYet "pot1" ;
oper pot110 : Sub100 = notYet "pot110" ;
oper pot111 : Sub100 = notYet "pot111" ;
oper pot1plus : Digit -> Sub10 -> Sub100 = notYet "pot1plus" ;
oper pot1to19 : Digit -> Sub100 = notYet "pot1to19" ;
oper pot2 : Sub10 -> Sub1000 = notYet "pot2" ;
oper pot2plus : Sub10 -> Sub100 -> Sub1000 = notYet "pot2plus" ;
oper pot3 : Sub1000 -> Sub1000000 = notYet "pot3" ;
oper pot3plus : Sub1000 -> Sub1000 -> Sub1000000 = notYet "pot3plus" ;
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;

View File

@@ -1,5 +0,0 @@
resource MissingTranslateLat = open GrammarLat, Prelude in {
-- temporary definitions to enable the compilation of RGL Translate
}

View File

@@ -6,7 +6,7 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- DetCN : Det -> CN -> NP ; -- the man
DetCN det cn =
{
s = \\c => cn.s ! det.n ! c ;
s = \\_,c => cn.s ! det.n ! c ;
n = det.n ; g = cn.g ; p = P3 ;
adv = cn.adv ;
preap = cn.preap ;
@@ -16,32 +16,26 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- UsePN : PN -> NP ; -- John
UsePN pn =
lin NP
{
s = pn.s ! Sg ;
g = pn.g ;
n = Sg ;
p = P3 ;
adv = "" ;
preap, postap = { s = \\_ => "" } ;
det = { s,sp = \\_,_ => "" ; n = Sg }
} ;
pn **
{
s = \\_ => pn.s ;
p = P3 ;
adv = "" ;
preap, postap = { s = \\_ => "" } ;
det = { s,sp = \\_,_ => "" ; n = Sg }
} ;
-- UsePron : Pron -> NP ; -- he
UsePron p =
{
g = p.pers.g ;
n = p.pers.n ;
p.pers **
{
p = p.p ;
s = \\c => case c of {
Nom => p.pers.s ! PronDrop ! PronNonRefl ; -- Drop pronoun in nominative case
_ => p.pers.s ! PronNonDrop ! PronNonRefl -- but don't drop it otherwise
} ! c ;
s = \\pd,c => p.pers.s ! pd ! PronNonRefl ! c;
adv = "" ;
preap, postap = { s = \\_ => "" } ;
det = { s,sp = \\_,_ => "" ; n = p.pers.n } ;
} ;
-- PredetNP : Predet -> NP -> NP ; -- only the man
PredetNP predet np =
np ** {
@@ -50,7 +44,7 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- PPartNP : NP -> V2 -> NP ; -- the man seen
-- PPartNP np v2 = {
-- s = \\c => np.s ! c ++ v2.s ! VPPart ;
-- s = \\c => (combineNounPhrase np) ! PronNonDrop ! c ++ v2.s ! VPPart ;
-- a = np.a
-- } ;
--
@@ -58,7 +52,7 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- AdvNP : NP -> Adv -> NP ; -- Paris today
AdvNP np adv = np ** { adv = np.adv ++ (adv.s ! Posit) } ;
-- {
-- s = \\c => np.s ! c ;
-- s = \\pd,c => combineNounPhrase np ! pd ! c ;
-- g = np.g ; n = np.n; p = np.p ;
-- adv = cc2 np.adv adv ;
-- preap = np.preap ;
@@ -74,7 +68,7 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- DetNP : Det -> NP ; -- these five
DetNP det = {
s = det.s ! Neutr ;
s = \\_ => det.s ! Neutr ;
g = Neutr ;
n = det.n ;
p = P3 ;
@@ -111,8 +105,8 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- OrdDigits n = {s = n.s ! NOrd} ;
--
lin
NumNumeral numeral = numeral.card ;
OrdNumeral numeral = numeral.ord ;
-- NumNumeral numeral = numeral.s ;
-- OrdNumeral numeral = numeral.ord ;
--
-- AdNum adn num = {s = adn.s ++ num.s ; n = num.n} ;
--
@@ -129,15 +123,11 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
} ;
MassNP cn =
{
s = cn.s ! Sg ;
cn ** {
s = \\_ => cn.s ! Sg ;
-- s = case cn.massable of { True => cn.s ! Sg ; False => \\_ => nonExist } ;
g = cn.g ;
n = Sg ;
p = P3 ;
adv = cn.adv ;
preap = cn.preap ;
postap = cn.postap ;
det = { s,sp = \\_,_ => "" ; n = Sg } ;
};
@@ -183,11 +173,8 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
--
-- ApposCN : CN -> NP -> CN
ApposCN cn np =
cn **
{
s = \\n,c => cn.s ! n ! c ++ np.det.s ! np.g ! c ++ np.preap.s ! (Ag np.g n c) ++ np.s ! c ++ np.postap .s ! (Ag np.g n c) ++ np.det.sp ! np.g ! c ;
g = cn.g ;
preap = cn.preap ;
postap = cn.postap ;
adv = cn.adv
s = \\n,c => cn.s ! n ! c ++ (combineNounPhrase np) ! PronNonDrop ! c ;
} ; -- massable = cn.massable } ;
}

View File

@@ -1,45 +1,168 @@
concrete NumeralLat of Numeral = CatLat ** open ResLat,ParadigmsLat in {
concrete NumeralLat of Numeral = CatLat, ParamX[Number] ** open ParadigmsLat, Prelude, ResLat, Predef in {
lincat
Digit = Numeral ;
Sub10 = Numeral ;
Sub100 = Numeral ;
Sub1000 = Numeral ;
Sub1000000 = Numeral ;
Digit = TDigit ;
Sub10 = TNumeral ;
Sub100 = TNumeral ;
Sub1000 = TNumeral ;
Sub1000000 = TNumeral ;
lin
num x = x ;
n2 = lin Numeral ( mkNum "duo" "secundus" ) ;
n3 = lin Numeral ( mkNum "tres" "tertius" ) ;
n4 = lin Numeral ( mkNum "quattuor" "quartus" ) ;
n5 = lin Numeral ( mkNum "quinque" "quintus" ) ;
n6 = lin Numeral ( mkNum "sex" "sextus" ) ;
n7 = lin Numeral ( mkNum "septem" "septimus" ) ;
n8 = lin Numeral ( mkNum "octo" "ocatvus" ) ;
n9 = lin Numeral ( mkNum "novem" "nonus" ) ;
n2 = lin Digit ( mkDigit "duo" "duodecim" "viginti" "ducenti" "secundus" "triginta" Yes ) ;
n3 = lin Digit ( mkDigit "tres" "tredecim" "triginta" "trecenti" "tertius" "quadraginta" Yes ) ;
n4 = lin Digit ( mkDigit "quattuor" "quattuordecim" "quadraginta" "quadringenti" "quartus" "quinquaginta" Yes ) ;
n5 = lin Digit ( mkDigit "quinque" "quindecim" "quinquaginta" "quingenti" "quintus" "sexaginta" Yes ) ;
n6 = lin Digit ( mkDigit "sex" "sedecim" "sexaginta" "sescenti" "sextus" "septuaginta" Yes ) ;
n7 = lin Digit ( mkDigit "septem" "septendecim" "septuaginta" "septingenti" "septimus" "octoginta" Yes ) ;
n8 = lin Digit ( mkDigit "octo" "duodeviginti" "octoginta" "octingenti" "ocatvus" "nonaginta" No8 ) ;
n9 = lin Digit ( mkDigit "novem" "undeviginti" "nonaginta" "nongenti" "nonus" "centum" No9 ) ;
-- 1
pot01 = { s = n1.s ! one ; d = n1.s ; n = singular ; below8 = n1.below8 } ;
-- d * 1
pot0 d = {
s = d.s ! one ;
d = table {
thousand => \\g,c => d.s ! one ! g ! c ++ d.s ! thousand ! g ! c ;
u => \\g,c => d.s ! u ! g ! c
} ;
n = plural ;
below8 = d.below8
} ;
-- 10
pot110 = {
s = n1.s ! ten ;
d = table {
thousand => \\g,c => n1.s ! ten ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => n1.s ! u ! g ! c
} ;
n = singular ;
below8 = Yes
} ;
-- 11
pot111 = pot1to19 n1 ;
-- 10 + d
pot1to19 d = {
s = d.s ! eleven ;
d = table {
thousand => \\g,c => d.s ! eleven ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => d.s ! u ! g ! c
} ;
n = plural ;
below8 = Ign
} ;
-- coercion of 1..9
pot0as1 n = n ;
-- d * 10
pot1 d = {
s = d.s ! ten ;
d = table {
thousand => \\g,c => d.s ! ten ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => d.s ! u ! g ! c
} ;
n = plural ;
below8 = Yes
} ;
-- d * 10 + n
pot1plus d n =
let
newS : Gender => Case => Str = \\g,c => case n.below8 of {
No8 => "duo" ++ Prelude.BIND ++ "-" ++ Prelude.BIND ++ "de" ++ Prelude.BIND ++ "-" ++ Prelude.BIND ++ d.tenNext ;
No9 => "un" ++ Prelude.BIND ++ "-" ++ Prelude.BIND ++ "de" ++ Prelude.BIND ++ "-" ++ Prelude.BIND ++ d.tenNext ;
_ => d.s ! ten ! g ! c ++ n.s ! g ! c
} in
{
s = newS ;
d = table {
thousand => \\g,c => newS ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => n.d ! u ! g ! c
} ;
below8 = Ign ;
n = plural
} ;
-- coercion of 1..99
pot1as2 n = n ;
-- m * 100
pot2 n = {
s = n.d ! hundred ;
d = table {
thousand => \\g,c => n.d ! hundred ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => n.d ! u ! g ! c
} ;
n = plural ;
below8 = Yes} ;
-- d * 100 + n
pot2plus d n =
let
newS : Gender => Case => Str = \\g,c => d.d ! hundred ! g ! c ++ "et" ++ n.s ! g ! c
in
{
s = newS ;
d = table {
thousand => \\g,c => newS ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => n.d ! u ! g ! c
} ;
below8 = Ign ;
n = plural
} ;
-- coercion of 1..999
pot2as3 n = n ;
-- m * 1000
pot3 n = {
s = \\g,c => n.s ! g ! c ++ n.d ! thousand ! g ! c ;
d = table { thousand => \\g,c => n.s ! g ! c ++ n.d ! thousand ! g ! c ;
u => \\g,c => n.d ! u ! g ! c
} ;
below8 = Ign ;
n = plural
} ;
-- d * 1000 + n
pot3plus d n = {
s = \\g,c => d.d ! thousand ! g ! c ++ "et" ++ n.s ! g ! c ;
d = n.d ;
below8 = Ign ;
n = plural
} ;
oper
mkDigit : (ones, eleven, tens, hundreds, ord : Str) -> Str -> Below8 -> TDigit =
\ones, eleven, tens, hundreds, ord ->
case <tens,hundreds> of {
<"decem",_> => fullDigit ones eleven tens hundreds ord "decimus" "centesimus" ;
<"viginti",_> => fullDigit ones eleven tens hundreds ord "vicesimus" "ducentesimus" ;
<"triginta",_> => fullDigit ones eleven tens hundreds ord "tricesimus" "trecentesimus" ;
<quadra + "ginta",quadringent + "i"> => fullDigit ones eleven tens hundreds ord (quadra + "gesimus") (quadringent + "esimus") ;
_ => Predef.error "Invalid number"
} ;
fullDigit : (ones, eleven, tens, hundreds, ord1,ord10,ord100, tenNext : Str) -> Below8 -> TDigit =
\ones, eleven, tens, hundreds, ord1,ord10,ord100,tenNext,b8 ->
{ s = table { one => cardFlex ones ;
eleven => cardFlex eleven ;
ten => cardFlex tens ;
hundred => cardFlex hundreds ;
thousand => cardFlex "milia" ;
ten_thousand => \\_,_ => nonExist ;
hundred_thousand => \\_,_ => nonExist
} ;
-- n = case ones of { "unus" => singular ; _ => plural } ;
-- ord =
-- \\_,_ => [] ;
-- -- table { one => (mkA ord1).s ! Posit;
-- -- ten => (mkA ord10).s ! Posit ;
-- -- hundred => (mkA ord100).s ! Posit ;
-- -- thousand => \\_,_ => nonExist ;
-- -- ten_thousand => \\_ => nonExist ;
-- -- hundred_thousand => \\_ => nonExist } ;
tenNext = tenNext ;
below8 = b8
} ;
n1 : Digit = lin Digit ( fullDigit "unus" "decem" "undecim" "primus" "decimus" "centesimus" "millesimus" "viginti" Yes ) ;
lin pot01 = lin Numeral ( mkNum "unus" "primus" ) ;
lin pot0 d = d ;
--lin pot110 = regCardOrd "ten" ** {n = Pl} ;
--lin pot111 = regCardOrd "eleven" ** {n = Pl} ;
--lin pot1to19 d = {s = d.s ! teen} ** {n = Pl} ;
lin pot0as1 n = n ;
--lin pot1 d = {s = d.s ! ten} ** {n = Pl} ;
--lin pot1plus d e = {
-- s = \\c => d.s ! ten ! NCard ++ "-" ++ e.s ! unit ! c ; n = Pl} ;
pot1as2 n = n ;
--lin pot2 d = {s = \\c => d.s ! unit ! NCard ++ mkCard c "hundred"} ** {n = Pl} ;
--lin pot2plus d e = {
-- s = \\c => d.s ! unit ! NCard ++ "hundred" ++ "and" ++ e.s ! c ; n = Pl} ;
pot2as3 n = n ;
--lin pot3 n = {
-- s = \\c => n.s ! NCard ++ mkCard c "thousand" ; n = Pl} ;
--lin pot3plus n m = {
-- s = \\c => n.s ! NCard ++ "thousand" ++ m.s ! c ; n = Pl} ;
--
-- numerals as sequences of digits
lincat
Dig = TDigit ;
Dig = TDig ;
lin
IDig d = {s = d.s ! one; unit = ten} ;
@@ -49,30 +172,31 @@ concrete NumeralLat of Numeral = CatLat ** open ResLat,ParadigmsLat in {
unit = inc i.unit
} ;
D_0 = mkDig "" "" "" "" "" "" ;
D_1 = mkDig "I" "X" "C" "M" "(X)" "(C)" ;
D_2 = mkDig "II" "XX" "CC" "MM" "(XX)" "(CC)" ;
D_3 = mkDig "III" "XXX" "CCC" "MMM" "(XXX)" "(CCC)" ;
D_4 = mkDig "IV" "XL" "CD" "(IV)" "(XL)" "(CD)" ;
D_5 = mkDig "V" "L" "D" "(V)" "(L)" "(D)" ;
D_6 = mkDig "VI" "LX" "DC" "(VI)" "(LX)" "(DC)" ;
D_7 = mkDig "VII" "LXX" "DCC" "(VII)" "(LXX)" "(DCC)" ;
D_8 = mkDig "VIII" "LXXX" "DCCC" "(VIII)" "(LXXX)" "(DCCC)" ;
D_9 = mkDig "IX" "XC" "CM" "(IX)" "(XC)" "(CM)" ;
D_0 = mkDig "" "" "" "" "" "" "" ;
D_1 = mkDig "I" "XI" "X" "C" "M" "(X)" "(C)" ;
D_2 = mkDig "II" "XII" "XX" "CC" "MM" "(XX)" "(CC)" ;
D_3 = mkDig "III" "XIII" "XXX" "CCC" "MMM" "(XXX)" "(CCC)" ;
D_4 = mkDig "IV" "XIV" "XL" "CD" "(IV)" "(XL)" "(CD)" ;
D_5 = mkDig "V" "XV" "L" "D" "(V)" "(L)" "(D)" ;
D_6 = mkDig "VI" "XVI" "LX" "DC" "(VI)" "(LX)" "(DC)" ;
D_7 = mkDig "VII" "XVII" "LXX" "DCC" "(VII)" "(LXX)" "(DCC)" ;
D_8 = mkDig "VIII" "XVIII" "LXXX" "DCCC" "(VIII)" "(LXXX)" "(DCCC)" ;
D_9 = mkDig "IX" "XIX" "XC" "CM" "(IX)" "(XC)" "(CM)" ;
oper
TDigit = {
TDig = {
s : Unit => Str
} ;
mkDig : Str -> Str -> Str -> Str -> Str -> Str -> TDigit =
\one,ten,hundred,thousand,ten_thousand,hundred_thousand -> {
s = table Unit [one;ten;hundred;thousand;ten_thousand;hundred_thousand]
mkDig : Str -> Str -> Str -> Str -> Str -> Str -> Str -> TDig =
\one,eleven,ten,hundred,thousand,ten_thousand,hundred_thousand -> {
s = table Unit [one;eleven;ten;hundred;thousand;ten_thousand;hundred_thousand]
} ;
inc : Unit -> Unit = \u ->
case u of {
one => ten ;
eleven => hundred ;
ten => hundred ;
hundred => thousand ;
thousand => ten_thousand ;

View File

@@ -34,6 +34,10 @@ oper
abl : Case = Abl ;
voc : Case = ResLat.Voc ;
plural : Number = Pl ;
singular : Number = Sg ;
missing : Coordinator = Missing ;
mkN = overload {
mkN : (verbum : Str) -> N
= \n -> lin N ( noun n ) ;
@@ -41,6 +45,10 @@ oper
= \x,y,z -> lin N ( noun_ngg x y z ) ;
} ;
pluralN : N -> N = \n -> lin N (ResLat.pluralNoun n) ;
singularN : N -> N = \n -> lin N (ResLat.singularNoun n) ;
constN : Str -> Gender-> N = \s,g -> lin N (ResLat.constNoun s g);
mkA = overload {
mkA : (verbum : Str) -> A -- Nominative masculine
= \n -> lin A ( adj n ** {isPre = False } ) ;
@@ -65,7 +73,7 @@ oper
False => let a = adj n in { s = table { Posit => a.s ! Posit ; _ => \\_ => nonExist } ; adv = a.adv }
} ** { isPre = False } )
} ;
constA : Str -> A = \s -> lin A (ResLat.constAdj s) ;
mkV = overload {
mkV : (tacere : Str) -> V
@@ -79,7 +87,7 @@ oper
V0 : Type = V;
mkV0 = overload {
mkV0 : V -> V0 = \v -> lin V0 v ; -- Same as in english, don't know if it's working
mkV0 : Str -> V0 = \v -> lin V0 (mkImpersonal v) ;
mkV0 : Str -> V0 = \v -> lin V0 (impersonalVerb v) ;
} ;
mkV2 = overload {
@@ -91,6 +99,7 @@ oper
= \v,p -> lin V2 ( v ** { c = p } ) ;
} ;
constV : Str -> Verb = \s -> lin V (ResLat.constVerb s) ;
mkAdv = overload {
mkAdv : Str -> Adv
@@ -101,18 +110,25 @@ oper
= \p,c -> lin Adv (mkFullAdverb p c nonExist);
};
pluralN = ResLat.pluralN ;
singularN = ResLat.singularN ;
mkConj : Str -> Str -> Number -> Coordinator -> Conjunction = mkConjunction ;
mkConj = overload {
mkConj : Str -> Str -> Str -> Number -> Coordinator -> Conjunction = mkConjunction ;
mkConj : Str -> Str -> Number -> Coordinator -> Conjunction = \s1,s2,n,c -> mkConjunction s1 s2 [] n c ;
mkConj : Str -> Coordinator -> Conjunction = \s,c -> mkConjunction [] s [] Sg c ;
} ;
mkPrep : Str -> Case -> Preposition = mkPreposition ;
mkPron = mkPronoun ;
mkNum = mkNumeral ;
-- mkNum = overload {
-- mkNum : Str -> Str -> Str -> Str -> Num = \s1,s2,s3,s4 -> lin Num (mkNumeral s1 s2 s3 s4 );
-- mkNum : Str -> Str -> Str -> Str -> Str -> Str -> Num = \s1,s2,s3,s4,s5,s6 -> lin Num (fullNumeral s1 s2 s3 s4 s5 s6 ) ;
-- } ;
-- To be implemented, just place holders
mkPN : N -> PN = \n -> lin PN n ;
mkPN : N -> Number -> PN = \noun,num -> lin PN (noun ** { s = noun.s ! num ; n = num } ) ;
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 ( n ** { c = p } );
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 ( n **{ c = p1 ; c2 = p2 } ) ;
mkV2S : V -> Prep -> V2S = \v,p -> lin V2S ( v ** { c = p } ) ;

View File

@@ -3,7 +3,7 @@ concrete PhraseLat of Phrase = CatLat ** open Prelude, ResLat in {
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
--
-- UttS : S -> Utt
UttS s = { s = combineSentence s ! SPreS ! PreS ! SOV };
UttS s = { s = combineSentence s ! SPreS ! PreS ! CPreV ! SOV };
-- UttQS : QS -> Utt
UttQS qs = {s = qs.s ! QDir } ;
@@ -18,7 +18,7 @@ concrete PhraseLat of Phrase = CatLat ** open Prelude, ResLat in {
-- UttIAdv : IAdv -> Utt
UttIAdv iadv = iadv ;
-- UttNP : NP -> Utt
UttNP np = {s = np.adv ++ np.det.s ! np.g ! Nom ++ np.preap.s ! (Ag np.g np.n Nom) ++ np.s ! Nom ++ np.postap.s ! (Ag np.g np.n Nom) ++ np.det.sp ! np.g ! Nom} ;
UttNP np = {s = np.adv ++ (combineNounPhrase np) ! PronNonDrop ! Nom} ;
-- UttVP : VP -> Utt
UttVP vp = ss (vp.inf ! VInfActPres) ;
@@ -36,6 +36,6 @@ concrete PhraseLat of Phrase = CatLat ** open Prelude, ResLat in {
PConjConj conj = {s = conj.s2} ; ---
--
NoVoc = {s = []} ;
VocNP np = {s = "," ++ np.s ! ResLat.Voc} ; ---- what is the compiler error here? AR 1/2/2014 -- answer: clash with the type name Voc 3/2
VocNP np = {s = "," ++ (combineNounPhrase np) ! PronNonDrop ! ResLat.Voc} ; ---- what is the compiler error here? AR 1/2/2014 -- answer: clash with the type name Voc 3/2
--
}

View File

@@ -4,19 +4,21 @@ concrete QuestionLat of Question = CatLat ** open ResLat, IrregLat, Prelude in {
--`
lin
-- QuestCl : Cl -> QCl ; -- does John walk
-- TO FIX
-- QuestCl cl = {
-- s = \\t,a,p =>
-- let cls = (combineClause cl PreS).s ! t ! a ! p
-- in table {
-- QDir => cls ! VQTrue ! VSO ! PreV ; -- cls ! OQuest ;
-- QIndir => "" -- "if" ++ cls ! ODir -- TODO
-- }
-- } ;
QuestCl cl = cl ** {
v = \\t,a,_,ap,cp => cl.v ! t ! a ! VQTrue ! ap ! cp ;
q = ""
} ;
-- QuestVP : IP -> VP -> QCl ; -- who walks
-- TO FIX
-- QuestVP ip vp =
QuestVP ip vp =
{
s = \\_ => "" ;
adv = "" ;
neg = \\_,_ => "" ;
o = \\_ => vp.obj ;
q = ip.s ! Nom ;
v = \\t,a,_,ap,cp => vp.s ! VAct (anteriorityToVAnter a) (tenseToVTense t) ip.n P3 ! VQFalse
} ;
-- let qcl = mkQuestion { s = ip.s ! Nom } ( mkClause emptyNP vp )
-- in {s = \\t,a,b,qd => qcl.s ! t ! a ! b ! qd} ;
@@ -26,12 +28,19 @@ concrete QuestionLat of Question = CatLat ** open ResLat, IrregLat, Prelude in {
-- QuestSlash ip slash =
-- mkQuestion (ss ( ip.s ! Acc) ) slash ;
-- TO FIX
-- QuestIAdv iadv cl = mkQuestion iadv cl ;
--
-- TO FIX
-- QuestIComp icomp np =
-- mkQuestion icomp (mkClause np (predV be_V) ) ;
-- QuestIAdv : IAdv -> Cl -> QCl
QuestIAdv iadv cl = cl ** { q = iadv.s } ;
-- QuestIComp : IComp -> NP -> QCl ;
QuestIComp icomp np =
{
s = \\_ => "" ;
adv = "" ;
neg = \\_,_ => "" ;
o = \\_ => combineNounPhrase np ! PronNonDrop ! Nom ; -- Should probably not go into the object field
q = icomp.s ;
v = \\t,a,_,ap,cp => esseAux.act ! VAct (anteriorityToVAnter a) (tenseToVTense t) np.n P3 ;
} ;
--
--
-- PrepIP p ip = {s = p.s ++ ip.s ! Acc} ;

View File

@@ -33,7 +33,7 @@ concrete RelativeLat of Relative = CatLat ** open ResLat in {
-- } ;
--
-- FunRP p np rp = {
-- s = \\c => np.s ! Acc ++ p.s ++ rp.s ! RPrep (fromAgr np.a).g ;
-- s = \\c => (combineNounPhrase np) ! PronNonDrop ! Acc ++ p.s ++ rp.s ! RPrep (fromAgr np.a).g ;
-- a = RAg np.a
-- } ;
--

View File

@@ -15,7 +15,7 @@ param
Noun : Type = {s : Number => Case => Str ; g : Gender } ; -- massable : Bool } ;
NounPhrase : Type =
{
s : Case => Str ;
s : PronDropForm => Case => Str ;
g : Gender ;
n : Number ;
p : Person ;
@@ -27,6 +27,7 @@ param
param
Order = SVO | VSO | VOS | OSV | OVS | SOV ;
AdvPos = PreS | PreV | PreO | PreNeg | InV | InS ; -- | InO
ComplPos = CPreV | CPostV ;
SAdvPos = SPreS | SPreV | SPreO | SPreNeg ;
param
Agr = Ag Gender Number Case ; -- Agreement for NP et al.
@@ -55,7 +56,7 @@ param
-- massable = cn.massable;
} ;
pluralN : Noun -> Noun = \n ->
pluralNoun : Noun -> Noun = \n ->
{
s = table {
Pl => n.s ! Pl ;
@@ -67,7 +68,7 @@ param
-- massable = n.massable ;
};
singularN : Noun -> Noun = \n ->
singularNoun : Noun -> Noun = \n ->
lin N {
s = table {
Sg => n.s ! Sg ;
@@ -78,6 +79,8 @@ param
postap = n.postap
-- massable = n.massable ;
};
constNoun : Str -> Gender -> Noun = \s,g ->
{ s = \\_,_ => s ; g = g } ;
param
AdjPos = Pre | Post ;
@@ -132,7 +135,7 @@ param
regNP : (_,_,_,_,_,_ : Str) -> Gender -> Number -> NounPhrase =
\nom,acc,gen,dat,abl,voc,g,n ->
{
s = table Case [ nom ; acc ; gen ; dat ; abl ; voc ] ;
s = \\_ => table Case [ nom ; acc ; gen ; dat ; abl ; voc ] ;
g = g ;
n = n ;
p = P3;
@@ -143,7 +146,10 @@ param
dummyNP : Str -> NounPhrase = \s -> regNP s s s s s s Masc Sg ;
emptyNP : NounPhrase = { s = \\_ => ""; g = Masc; n = Sg; p = P1 ; adv = "" ; preap, postap = { s = \\_ => "" } ; det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = Sg } ;};
emptyNP : NounPhrase = { s = \\_,_ => ""; g = Masc; n = Sg; p = P1 ; adv = "" ; preap, postap = { s = \\_ => "" } ; det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = Sg } ;};
combineNounPhrase : NounPhrase -> PronDropForm => Case => Str = \np ->
\\pd,c => np.det.s ! np.g ! c ++ np.adv ++ np.preap.s ! (Ag np.g np.n c) ++ np.s ! pd ! c ++ np.postap.s ! (Ag np.g np.n c) ++ np.det.sp ! np.g ! c ;
-- also used for adjectives and so on
-- adjectives
@@ -151,7 +157,8 @@ param
AdjectivePhrase : Type = {
s : Agr => Str ;
-- isPre : Bool ; -- should have no use in latin because adjectives can appear variably before and after nouns
} ;
} ;
mkAdjective : (bonus,bona,bonum : Noun) ->
( (Agr => Str) * Str ) ->
( (Agr => Str) * Str ) ->
@@ -186,11 +193,58 @@ param
audaces audaces (audac + "ium") (audac + "ibus")
g ;
regAdj : Str -> Gender => Number => Case => Str = \s ->
case s of {
un + "us" => \\g,n,c => un + (regAdjSuffixes s g n c)
} ;
regAdjSuffixes : Str -> Gender -> Number -> Case -> Str = \str,g,n,c ->
case <g,n,c> of {
<Masc ,Sg,Nom> => "us" ;
<Masc ,Sg,Gen> => "i" ;
<Masc ,Sg,Dat> => "o" ;
<Masc ,Sg,Acc> => "um" ;
<Masc ,Sg,Abl> => "o" ;
<Masc ,Sg,Voc> => case str of { _ + "ius" => "i" ; _ => "e" } ;
<Masc ,Pl,Nom> => "i" ;
<Masc ,Pl,Gen> => "orum" ;
<Masc ,Pl,Dat> => "is" ;
<Masc ,Pl,Acc> => "os" ;
<Masc ,Pl,Abl> => "is" ;
<Masc ,Pl,Voc> => "i" ;
<Neutr,Sg,Nom> => "um" ;
<Neutr,Sg,Gen> => "i" ;
<Neutr,Sg,Dat> => "o" ;
<Neutr,Sg,Acc> => "um" ;
<Neutr,Sg,Abl> => "o" ;
<Neutr,Sg,Voc> => "um";
<Neutr,Pl,Nom> => "a" ;
<Neutr,Pl,Gen> => "orum" ;
<Neutr,Pl,Dat> => "is" ;
<Neutr,Pl,Acc> => "os" ;
<Neutr,Pl,Abl> => "is" ;
<Neutr,Pl,Voc> => "a" ;
<Fem ,Sg,Nom> => "a" ;
<Fem ,Sg,Gen> => "ae" ;
<Fem ,Sg,Dat> => "ae" ;
<Fem ,Sg,Acc> => "am" ;
<Fem ,Sg,Abl> => "a" ;
<Fem ,Sg,Voc> => "a";
<Fem ,Pl,Nom> => "ae" ;
<Fem ,Pl,Gen> => "arum" ;
<Fem ,Pl,Dat> => "is" ;
<Fem ,Pl,Acc> => "as" ;
<Fem ,Pl,Abl> => "is" ;
<Fem ,Pl,Voc> => "ae"
} ;
emptyAdj : Adjective =
{ s = \\_,_ => "" ; comp_adv = "" ; super_adv = "" ; adv = { s = \\_ => "" } } ;
-- verbs
constAdj : Str -> Adjective = \a ->
{ s = \\_,_ => a ; comp_adv = "" ; super_adv = "" ; adv = { s = \\_ => "" } } ;
-- verbs
param
VActForm = VAct VAnter VTense Number Person ;
@@ -377,6 +431,7 @@ param
VPass VFut Pl P3 => -- Future I
( case fut_I_base of {
_ + "bi" => ( init fut_I_base ) + "u" ;
"eri" => "eru" ; -- handle copula properly
_ => fut_I_base
}
) + passPresEnding Pl P3 ;
@@ -745,7 +800,7 @@ param
} ;
-- at the moment only fills present tense
mkImpersonal : Str -> Verb = \s ->
impersonalVerb : Str -> Verb = \s ->
{
act = table {
VAct VSim (VPres VInd) Sg P1 => s ;
@@ -759,7 +814,20 @@ param
part = \\_,_ => nonExist ;
sup = \\_ => nonExist ;
} ;
constVerb : Str -> Verb = \s ->
{
act = table {
_ => s
} ;
pass = \\_ => nonExist ;
imp = \\_ => nonExist ;
inf = \\_ => nonExist ;
ger = \\_ => nonExist ;
geriv = \\_ => nonExist ;
part = \\_,_ => nonExist ;
sup = \\_ => nonExist ;
} ;
actPresEnding : Number -> Person -> Str =
useEndingTable <"m", "s", "t", "mus", "tis", "nt"> ;
@@ -1001,7 +1069,7 @@ param
param
PronReflForm = PronRefl | PronNonRefl ;
PronDropForm = PronDrop | PronNonDrop;
PronDropForm = PronDrop | PronNonDrop ;
-- PronIndefUsage = PronSubst | PronAdj ;
-- PronIndefPol = PronPos | PronNeg ;
-- PronIndefMeaning = PronSomeone | PronCertainOne | PronEvery ;
@@ -1157,10 +1225,11 @@ oper
Preposition : Type = {s : Str ; c : Case ; isPost : Bool } ;
-- conjunctions
param Coordinator = And | Or | If | Neither | Because | Comma | Colon | Empty ;
param Coordinator = Aut | Et | Sed | Si | Vel | Comma | Colon | Empty | Missing ; -- Missing means not implemented yet
oper
Conjunction : Type = { s1 : Str ; s2 : Str ; n : Number ; c : Coordinator };
mkConjunction : Str -> Str -> Number -> Coordinator -> Conjunction = \s1,s2,num,coord -> { s1 = s1; s2 = s2 ; n = num ; c = coord } ;
Conjunction : Type = { s1 : Str ; s2 : Str ; s3 : Str ; n : Number ; c : Coordinator } ; -- s1 is in the beginning of the coordination phrase, s2 in the middle and s3 is a potential enclitic, s is the prefered number of the coordination phrase and c is the parameter to define which string to put within the phrase
mkConjunction : Str -> Str -> Str -> Number -> Coordinator -> Conjunction =
\s1,s2,s3,num,coord -> { s1 = s1; s2 = s2 ; s3 = s3 ; n = num ; c = coord } ;
VPSlash = VerbPhrase ** {c : Preposition} ;
@@ -1187,7 +1256,7 @@ oper
part = vp.part ;
imp = vp.imp ;
inf = vp.inf ;
obj = np.det.s ! np.g ! prep.c ++ np.preap.s ! (Ag np.g np.n prep.c) ++ (appPrep prep np.s) ++ np.postap.s ! (Ag np.g np.n prep.c) ++ np.det.sp ! np.g ! prep.c ++ vp.obj ;
obj = np.det.s ! np.g ! prep.c ++ np.preap.s ! (Ag np.g np.n prep.c) ++ (appPrep prep (np.s ! PronNonDrop)) ++ np.postap.s ! (Ag np.g np.n prep.c) ++ np.det.sp ! np.g ! prep.c ++ vp.obj ;
compl = vp.compl ;
adv = vp.adv ++ np.adv
} ;
@@ -1197,7 +1266,7 @@ oper
part = vp.part ;
imp = vp.imp ;
inf = vp.inf ;
obj = np.det.s ! np.g ! vp.c.c ++ np.preap.s ! (Ag np.g np.n vp.c.c) ++ (appPrep vp.c np.s) ++ np.postap.s ! (Ag np.g np.n vp.c.c) ++ np.det.sp ! np.g ! vp.c.c ++ vp.obj ;
obj = np.det.s ! np.g ! vp.c.c ++ np.preap.s ! (Ag np.g np.n vp.c.c) ++ (appPrep vp.c (np.s ! PronNonDrop)) ++ np.postap.s ! (Ag np.g np.n vp.c.c) ++ np.det.sp ! np.g ! vp.c.c ++ vp.obj ;
compl = vp.compl ;
c = vp.c ;
adv = vp.adv ++ np.adv
@@ -1226,19 +1295,22 @@ oper
-- clauses
Sentence =
{
s,o,v,neg : AdvPos => Str ; -- Subject, verbphrase, object and negation particle plus potential adverb
s,o,neg : AdvPos => Str ; -- Subject, verbphrase, object and negation particle plus potential adverb
v : AdvPos => ComplPos => Str ;
t : C.Tense ; -- tense marker
p : C.Pol ; -- polarity marker
sadv : Str -- sentence adverb¡
} ;
Clause = {s,o : AdvPos => Str ; v : Tense => Anteriority => VQForm => AdvPos => Str ; neg : Polarity => AdvPos => Str ; adv : Str } ;
Clause = {s,o : AdvPos => Str ; v : Tense => Anteriority => VQForm => AdvPos => ComplPos => Str ; neg : Polarity => AdvPos => Str ; adv : Str } ;
QClause = {s : C.Tense => Anteriority => C.Pol => QForm => Str} ;
mkClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
let
-- combines adverbs from noun phrase and verb phrase
adv = np.adv ++ vp.adv ;
-- extracts the complement from the verb phrase
compl = vp.compl ! Ag np.g np.n Nom ;
-- helper functions to either place the adverb in the designated position
-- or an empty string instead
pres : AdvPos -> Str = \ap -> case ap of { PreS => adv ; _ => [] } ;
@@ -1246,33 +1318,38 @@ oper
preo : AdvPos -> Str = \ap -> case ap of { PreO => adv ; _ => [] } ;
preneg : AdvPos -> Str = \ap -> case ap of { PreNeg => adv ; _ => [] } ;
ins : AdvPos -> Str = \ap -> case ap of { InS => adv ; _ => [] } ;
inv : AdvPos -> Str = \ap -> case ap of { InV => adv ; _ => [] }
inv : AdvPos -> Str = \ap -> case ap of { InV => adv ; _ => [] } ;
cprev : ComplPos -> Str = \cp -> case cp of { CPreV => compl ; _ => [] } ;
cpostv : ComplPos -> Str = \cp -> case cp of { CPostV => compl ; _ => [] }
in
{
-- subject part of the clause:
-- ap is the adverb position in the clause
s = \\ap =>
pres ap ++ -- adverbs can be placed in the beginning of the clause
-- advpos is the adverb position in the clause
s = \\advpos =>
pres advpos ++ -- adverbs can be placed in the beginning of the clause
np.det.s ! np.g ! Nom ++ -- the determiner, if any
np.preap.s ! (Ag np.g np.n Nom) ++ -- adjectives which come before the subject noun, agreeing with it
ins ap ++ -- adverbs can be placed within the subject noun phrase
np.s ! Nom ++ -- the noun of the subject noun phrase in nominative
ins advpos ++ -- adverbs can be placed within the subject noun phrase
np.s ! PronDrop ! Nom ++ -- the noun of the subject noun phrase in nominative
np.postap .s ! (Ag np.g np.n Nom) ++ -- adjectives which come after the subject noun, agreeing with it
np.det.sp ! np.g ! Nom ; -- second part of split determiners
-- verb part of the clause:
-- tense and anter(ority) for the verb tense
-- vqf is the VQForm parameter which defines if the ordinary verbform or the quistion form with suffix "-ne" will be used
-- ap is the adverb position in the clause
v = \\tense,anter,vqf,ap =>
prev ap ++ -- adverbs can be placed in the before the verb phrase
vp.compl ! Ag np.g np.n Nom ++ -- verb phrase complement, e.g. predicative expression, agreeing with the subject
inv ap ++ -- adverbs can be placed within the verb phrase
-- advposis the adverb position in the clause
-- comppos is the position of the verb complement
v = \\tense,anter,vqf,advpos,complpos =>
prev advpos ++ -- adverbs can be placed in the before the verb phrase
cprev complpos ++ -- verb phrase complement, e.g. predicative expression, agreeing with the subject, can go before the verb
inv advpos ++ -- adverbs can be placed within the verb phrase
-- verb form with conversion between different forms of tense and aspect
vp.s ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf ;
vp.s ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf ++
cpostv complpos ; -- complement can also go after the verb
-- object part of the clause
o = \\ap => preo ap ++ vp.obj ;
o = \\advpos => preo advpos ++ vp.obj ;
-- optional negation particle, adverbs can be placed before the negation
neg = \\pol,ap => preneg ap ++ negation pol ;
neg = \\pol,advpos => preneg advpos ++ negation pol ;
adv = ""
} ;
@@ -1286,20 +1363,23 @@ oper
p = pol
} ;
combineSentence : Sentence -> ( SAdvPos => AdvPos => Order => Str ) = \s ->
combineSentence : Sentence -> ( SAdvPos => AdvPos => ComplPos => Order => Str ) = \s ->
let
pres : SAdvPos -> Str = \ap -> case ap of { SPreS => s.sadv ; _ => [] } ;
prev : SAdvPos -> Str = \ap -> case ap of { SPreV => s.sadv ; _ => [] } ;
preo : SAdvPos -> Str = \ap -> case ap of { SPreO => s.sadv ; _ => [] } ;
preneg : SAdvPos -> Str = \ap -> case ap of { SPreNeg => s.sadv ; _ => [] }
in
\\sap,ap,order => case order of {
SVO => s.t.s ++ s.p.s ++ pres sap ++ s.s ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ++ preo sap ++ s.o ! ap;
VSO => s.t.s ++ s.p.s ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ++ pres sap ++ s.s ! ap ++ preo sap ++ s.o ! ap;
VOS => s.t.s ++ s.p.s ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ++ preo sap ++ s.o ! ap ++ pres sap ++ s.s ! ap ;
OSV => s.t.s ++ s.p.s ++ preo sap ++ s.o ! ap ++ pres sap ++ s.s ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap;
OVS => s.t.s ++ s.p.s ++ preo sap ++ s.o ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ++ pres sap ++ s.s ! ap ;
SOV => s.t.s ++ s.p.s ++ pres sap ++ s.s ! ap ++ preo sap ++ s.o ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap
-- sap is the position of the sentence adverbial
-- ap is the position of the adverb
-- cp is the position of the verb complement
\\sap,ap,cp,order => case order of {
SVO => s.t.s ++ s.p.s ++ pres sap ++ s.s ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ! cp ++ preo sap ++ s.o ! ap;
VSO => s.t.s ++ s.p.s ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ! cp ++ pres sap ++ s.s ! ap ++ preo sap ++ s.o ! ap;
VOS => s.t.s ++ s.p.s ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ! cp ++ preo sap ++ s.o ! ap ++ pres sap ++ s.s ! ap ;
OSV => s.t.s ++ s.p.s ++ preo sap ++ s.o ! ap ++ pres sap ++ s.s ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ! cp;
OVS => s.t.s ++ s.p.s ++ preo sap ++ s.o ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ! cp ++ pres sap ++ s.s ! ap ;
SOV => s.t.s ++ s.p.s ++ pres sap ++ s.s ! ap ++ preo sap ++ s.o ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ! cp
} ;
@@ -1307,8 +1387,8 @@ oper
-- questions
mkQuestion : SS -> Clause -> QClause = \ss,cl -> {
s = \\tense,anter,pol,form => case form of {
QDir => ss.s ++ (combineSentence (combineClause cl tense anter pol VQFalse)) ! SPreS ! PreS ! OVS ;
QIndir => ss.s ++ (combineSentence (combineClause cl tense anter pol VQFalse)) ! SPreO ! PreO ! OSV
QDir => ss.s ++ (combineSentence (combineClause cl tense anter pol VQFalse)) ! SPreS ! PreS ! CPreV ! OVS ;
QIndir => ss.s ++ (combineSentence (combineClause cl tense anter pol VQFalse)) ! SPreO ! PreO ! CPreV ! OSV
}
};
@@ -1387,49 +1467,55 @@ oper
{ s = table { Posit => p ; Compar => c ; Super => s } };
-- numerals
param
CardOrd = NCard | NOrd ;
Unit = one | ten | hundred | thousand | ten_thousand | hundred_thousand ;
-- CardOrd = NCard | NOrd ;
Unit = one | eleven | ten | hundred | thousand | ten_thousand | hundred_thousand ;
Below8 = Yes | No8 | No9 | Ign ;
oper
Cardinal : Type = {s : Gender => Case => Str ; n : Number};
Ordinal : Type = { s : Gender => Number => Case => Str } ;
Numeral : Type = { card : Cardinal ; ord : Ordinal } ;
-- Numerals are by default cardinal numbers but have a field for ordinal numbers
TDigit : Type = { s : Unit => Gender => Case => Str ; tenNext : Str ; below8 : Below8 } ; -- ord : Unit => Agr => Str } ;
TNumeral : Type = { s : Gender => Case => Str ; d : Unit => Gender => Case => Str ; n : Number ; below8 : Below8 } ; -- ord : Unit => Agr => Str } ;
-- Inflection for cardinal numbers
cardFlex : Str -> Gender => Case => Str =
\c -> case c of { "unus" => \\gen,cas => case <gen,cas> of {
<Masc, Nom | Voc> => "unus" ; <Masc, Acc> => "unum" ; <Masc, Abl> => "uno" ;
<Fem, Nom | Abl | Voc> => "una" ; <Fem, Acc> => "unam" ;
<Neutr, Nom | Acc | Voc> => "unum" ; <Neutr, Abl> => "uno" ;
<_, Gen> => "unius" ; <_, Dat> => "uni"
} ;
"duo" => table {
Masc | Neutr => table Case [ "duo" ; "duo" ; "duorum" ; "duobus" ; "duobus" ; "duo" ] ;
Fem => table Case [ "duae" ; "duas" ; "duarum" ; "duabus" ; "duabus" ; "duae" ] } ;
"tres" => \\gen,cas => case <gen,cas> of {
<Neutr, Nom | Acc | Voc > => "tria" ; <_, Nom | Acc | Voc > => "tres" ;
<_, Gen> => "trium" ; <_, Dat | Abl > => "tribus"
} ;
tre + "centi" => \\g,c => regAdj (tre + "centus") ! g ! Pl ! c ;
"milia" => table {
_ => table Case [ "milia" ; "milia" ; "milium" ; "milibus" ; "milibus" ; "milia" ]
} ;
_ => \\_,_ => c
} ;
-- ordFlex : Gender => Number => Case => Str =
-- case o of {
-- stem + "us" => table {
-- Masc => table Number [ table Case [ stem + "us" ; stem + "um" ; stem + "i" ; stem + "o" ; stem + "o" ; stem + "e" ] ;
-- table Case [ stem + "i" ; stem + "os" ; stem + "orum" ; stem + "is" ; stem + "is" ; stem + "i" ] ;
-- ];
-- Fem => table Number [ table Case [ stem + "a" ; stem + "am" ; stem + "ae" ; stem + "ae" ; stem + "a" ; stem + "a" ] ;
-- table Case [ stem + "ae" ; stem + "as" ; stem + "arum" ; stem + "is" ; stem + "is" ; stem + "ae" ] ;
-- ] ;
-- Neutr => table Number [ table Case [ stem + "um" ; stem + "um" ; stem + "i" ; stem + "o" ; stem + "o" ; stem + "um" ] ;
-- table Case [ stem + "a" ; stem + "a" ; stem + "orum" ; stem + "is" ; stem + "is" ; stem + "a" ] ;
-- ]
-- } ;
-- _ => error "unsupported ordinal form"
-- }
-- in
-- { s = cardFlex ; n = case c of { "unus" => Sg ; _ => Pl } ; ord = ordFlex } ;
-- fixedNumeral : Str -> Str -> Numeral = \c,o ->
-- { s = \\_,_,_=> c ; n = Pl ; ord = \\g,n,c => (mkA o).s ! Posit ! Ag g n c} ;
mkNumeral : Str -> Str -> Numeral = \c,o -> -- cardinal and ordinal form
let
cardFlex : Gender => Case => Str = case c of { "unus" => \\gen,cas => case <gen,cas> of {
<Masc, Nom | Voc> => "unus" ; <Masc, Acc> => "unum" ; <Masc, Abl> => "uno" ;
<Fem, Nom | Abl | Voc> => "una" ; <Fem, Acc> => "unam" ;
<Neutr, Nom | Acc | Voc> => "unum" ; <Neutr, Abl> => "uno" ;
<_, Gen> => "unius" ; <_, Dat> => "uni"
} ;
"duo" => table {
Masc | Neutr => table Case [ "duo" ; "duo" ; "duorum" ; "duobus" ; "duobus" ; "duo" ] ;
Fem => table Case [ "duae" ; "duas" ; "duarum" ; "duabus" ; "duabus" ; "duae" ] } ;
"tres" => \\gen,cas => case <gen,cas> of {
<Neutr, Nom | Acc | Voc > => "tria" ; <_, Nom | Acc | Voc > => "tres" ;
<_, Gen> => "trium" ; <_, Dat | Abl > => "tribus"
} ;
"milia" => table {
Neutr => table Case [ "milia" ; "milia" ; "milium" ; "milibus" ; "milibus" ; "milia" ] ;
_ => \\_ => nonExist
} ;
_ => \\_,_ => c
} ;
ordFlex : Gender => Number => Case => Str =
case o of {
stem + "us" => table {
Masc => table Number [ table Case [ stem + "us" ; stem + "um" ; stem + "i" ; stem + "o" ; stem + "o" ; stem + "e" ] ;
table Case [ stem + "i" ; stem + "os" ; stem + "orum" ; stem + "is" ; stem + "is" ; stem + "i" ] ;
];
Fem => table Number [ table Case [ stem + "a" ; stem + "am" ; stem + "ae" ; stem + "ae" ; stem + "a" ; stem + "a" ] ;
table Case [ stem + "ae" ; stem + "as" ; stem + "arum" ; stem + "is" ; stem + "is" ; stem + "ae" ] ;
] ;
Neutr => table Number [ table Case [ stem + "um" ; stem + "um" ; stem + "i" ; stem + "o" ; stem + "o" ; stem + "um" ] ;
table Case [ stem + "a" ; stem + "a" ; stem + "orum" ; stem + "is" ; stem + "is" ; stem + "a" ] ;
]
} ;
_ => error "unsupported ordinal form"
}
in
{ card = { s = cardFlex ; n = case c of { "unus" => Sg ; _ => Pl } } ; ord = { s = ordFlex } } ;
}

View File

@@ -36,7 +36,7 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in {
SlashPrep cl prep = cl ** {c2 = prep.s} ;
--
-- SlashVS np vs slash =
-- mkClause (np.s ! Nom) np.a
-- mkClause (combineNounPhrase np ! PronNonDrop ! Nom) np.a
-- (insertObj (\\_ => conjThat ++ slash.s) (predV vs)) **
-- {c2 = slash.c2} ;
--
@@ -47,10 +47,15 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in {
UseCl t p cl = -- Temp -> Pol-> Cl -> S
(combineClause cl (lin Tense t) t.a (lin Pol p) VQFalse) ;
-- TO FIX
--UseQCl t p cl =
-- s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p ! q
-- { s = \\q => combineSentence (combineClause cl t t.a p VQFalse) ! PreV ! VSO } ;
-- UseQCl : Temp -> Pol -> QCl -> QS -- maybe use mkQuestion
UseQCl t p cl =
{
s = let qs = combineClause cl t t.a p VQTrue in
\\q => case q of {
QDir => cl.q ++ combineSentence qs ! SPreS ! PreV ! CPostV ! SVO ; -- t.s ++ p.s ++ cl.q ++ cl.s ! PreV ++ cl.v ! t.t ! t.a ! VQTrue ! PreV ! CPostV ++ cl.o ! PreV ;
QIndir => cl.q ++ combineSentence qs ! SPreS ! PreV ! CPostV ! SOV -- t.s ++ p.s ++ cl.q ++ cl.s ! PreV ++ cl.o ! PreV ++ cl.v ! t.t ! t.a ! VQTrue ! PreV ! CPostV
}
} ;
-- UseRCl t p cl = {
-- s = \\r => t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! r ;

View File

@@ -11,21 +11,21 @@ concrete StructuralLat of Structural = CatLat **
almost_AdA, almost_AdN = ss "quasi" ; -- L...
although_Subj = ss "quamquam" ; -- L...
always_AdV = ss "semper" ; -- L...
and_Conj = mkConj [] "et" Pl And ; -- L...
and_Conj = mkConj [] "et" Pl Et ; -- L177
-----b and_Conj = ss "and" ** {n = Pl} ;
because_Subj = ss "cum" ; -- L...
before_Prep = mkPrep "ante" Acc ; -- acc. L...
behind_Prep = mkPrep "a tergo" Acc ; -- acc. L...
between_Prep = mkPrep "inter" Acc ; -- acc. L...
both7and_DConj = mkConj "et" "et" Pl And; --L...
both7and_DConj = mkConj "et" "et" Pl Et ; --L177
but_PConj = ss "sed" ; -- L...
by8agent_Prep = mkPrep "per" Abl ; -- L...
by8means_Prep = mkPrep "" Abl ; -- L...
can8know_VV, can_VV = mkVV IrregLat.can_V True ; --L...
can8know_VV, can_VV = mkVV (mkV "scire" "scio" "scivi" "scitum") False ; --L...
during_Prep = mkPrep "inter" Acc ; -- L...
either7or_DConj = mkConj "aut" "aut" Sg Or ; -- L...
either7or_DConj = mkConj "aut" "aut" Sg Aut ; -- L177
everybody_NP = regNP "quisque" "quemque" "cuiusque" "cuique" "quoque" "quisque" Masc Sg ;-- regNP "quisquae" Sg ; -- L...
every_Det = mkDeterminer ( mkA "omnis" ) Pl ; -- Pons
every_Det = mkDeterminer ( mkA "omnis" ) Sg ; -- Pons
everything_NP = regNP "omnia" "omnia" "omnium" "omnis" "omnis" "omnia" Neutr Pl ; --regNP "omnia" Pl ; -- L...
everywhere_Adv = mkAdv "ubique" ; -- L...
few_Det = mkDeterminer ( mkA "paulus" ) Pl ; -- L...
@@ -55,7 +55,7 @@ concrete StructuralLat of Structural = CatLat **
on_Prep = mkPrep "in" Acc ; -- L...
------ one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
only_Predet = ss "solum" ; -- L...
or_Conj = mkConj [] "aut" Sg Or ; -- L...
or_Conj = mkConj [] "aut" Sg Aut ; -- L177
otherwise_PConj = ss "praeterea" ; -- Pons
part_Prep = mkPrep [] Gen ; -- Bayer-Lindauer 127
please_Voc = ss "queso" ; -- L...
@@ -101,7 +101,7 @@ concrete StructuralLat of Structural = CatLat **
-----b whichPl_IDet = mkDeterminer Pl ["which"] ;
-----b whichSg_IDet = mkDeterminer Sg ["which"] ;
whoSg_IP = { s =pronForms "quis" "quem" "cuius" "cui" "quo" ; n = Sg } ; -- only feminine or masculine Bayer-Lindauer 59.1
whoPl_IP = { s = \\_ => "" ; n = Pl } ; -- no plural forms Bayer-Lindauer 59.1
whoPl_IP = { s = pronForms "qui" "quos" "quorum" "quibus" "quibus" ; n = Pl } ;
why_IAdv = ss "cur" ; -- L...
without_Prep = mkPrep "sine" Abl ; -- abl. L..
@@ -113,7 +113,7 @@ concrete StructuralLat of Structural = CatLat **
no_Quant = { s , sp = ( mkA "nullus" ).s ! Posit } ; -- nullus L...
not_Predet = ss "non" ; -- L...
if_then_Conj = mkConj "si" [] Sg If ; -- no word in s2 field L...
if_then_Conj = mkConj "si" [] Sg Si ; -- no word in s2 field L...
at_least_AdN = ss "saltem" ; -- L...
at_most_AdN = ss "summum" ; -- Pons
nobody_NP = regNP "nemo" "neminem" "neminis" "nemini" "nemine" "nemo" Masc Sg ; -- Bayer Lindauer 60.4

View File

@@ -3,26 +3,49 @@
concrete SymbolLat of Symbol = CatLat ** open Prelude, ResLat, ParadigmsLat, TenseX in {
lin
SymbPN i = {s = \\n,c => i.s ; g = Neutr} ; --- c
IntPN i = {s = \\n,c => i.s ; g = Neutr} ; --- c
FloatPN i = {s = \\n,c => i.s ; g = Neutr} ; --- c
NumPN i = {s = \\n,c => i.s ! Neutr ! c; g = Neutr} ; --- c
-- CNIntNP cn i = {
-- s = \\c => (cn.s ! Sg ! Nom ++ i.s) ;
-- a = agrgP3 Sg cn.g
-- } ;
-- CNSymbNP det cn xs = {
SymbPN i = {s = \\c => i.s ; g = Neutr ; n = Sg } ; --- c
IntPN i = {s = \\c => i.s ; g = Neutr ; n = Sg } ; --- c
FloatPN i = {s = \\c => i.s ; g = Neutr ; n = Sg } ; --- c
NumPN i = {s = \\c => i.s ! Neutr ! c; g = Neutr ; n = Pl } ; --- c
CNIntNP cn i = {
s = \\_,c => (cn.s ! Sg ! Nom ++ i.s) ;
g = cn.g ;
n = Sg ;
adv = [] ;
det = { s = \\_,_ => [] ; n = Sg ; sp = \\_,_ => [] } ;
p = P3 ;
postap = { s = \\_ => [] } ;
preap = { s = \\_ => [] } ;
} ;
CNSymbNP det cn xs = {
s = \\_,c => (cn.s ! Sg ! Nom ++ xs.s ) ;
g = cn.g ;
n = det.n ;
adv = [] ;
det = det ;
p = P3 ;
postap = { s = \\_ => [] } ;
preap = { s = \\_ => [] } ;
} ;
-- s = \\c => det.s ++ cn.s ! det.n ! c ++ xs.s ;
-- a = agrgP3 det.n cn.g
-- } ;
-- CNNumNP cn i = {
-- s = \\c => (cn.s ! Sg ! Nom ++ i.s) ;
-- a = agrgP3 Sg cn.g
-- } ;
-- } ;
CNNumNP cn i = {
s = \\_,c => (cn.s ! Sg ! Nom ++ i.s ! cn.g ! Nom ) ;
g = cn.g ;
n = Sg ;
adv = [] ;
det = { s = \\_,_ => [] ; n = Sg ; sp = \\_,_ => [] } ;
p = P3 ;
postap = { s = \\_ => [] } ;
preap = { s = \\_ => [] } ;
} ;
--
SymbS sy = { s = \\_ => sy.s ; neg = \\_ => "" ; o = \\_ => "" ; p = PPos ; sadv = "" ; t = TPres ; v = \\_ => "" } ;
SymbS sy = { s = \\_ => sy.s ; neg = \\_ => "" ; o = \\_ => "" ; p = PPos ; sadv = "" ; t = TPres ; v = \\_,_ => "" } ;
--
-- SymbNum sy = {s = sy.s ; n = Pl ; hasCard = True} ;
SymbNum sy = {s = \\_,_ => sy.s ; n = Pl } ;
SymbOrd sy = { s = \\g,n,c => sy.s } ; -- does not inflect properly
lincat
@@ -31,6 +54,6 @@ lincat
lin
MkSymb s = s ;
-- BaseSymb = infixSS "and" ;
-- ConsSymb = infixSS "," ;
BaseSymb = infixSS "et" ;
ConsSymb = infixSS "et" ;
}

View File

@@ -17,10 +17,21 @@ concrete VerbLat of Verb = CatLat ** open (S=StructuralLat),ResLat,IrregLat,Extr
} ;
-- ComplVS : VS -> S -> VP ; -- say that she runs
ComplVS v s = insertObj ( dummyNP (S.that_Subj.s ++ s.s ! PreS)) Nom_Prep (predV v) ;
ComplVS vs s = -- insertObj ( dummyNP (S.that_Subj.s ++ s.s ! PreS)) Nom_Prep (predV v) ;
vs ** {
s = \\af,qf => vs.act ! af ;
compl = \\ag => combineSentence s ! SPreS ! PreV ! CPostV ! SOV ; -- s.s ! QIndir ;
adv = [] ;
obj = []
} ;
-- ComplVQ : VQ -> QS -> VP ; -- wonder who runs
ComplVQ v q = insertObj (dummyNP (q.s ! QIndir)) Nom_Prep (predV v) ;
ComplVQ vq qs = -- insertObj (dummyNP (q.s ! QIndir)) Nom_Prep (predV v) ;
vq ** {
s = \\af,qf => vq.act ! af ;
compl = \\ag => qs.s ! QIndir ;
adv = [] ;
obj = []
} ;
-- ComplVA : VA -> AP -> VP ; -- they become red
ComplVA v ap = (predV v) ** { compl = ap.s } ;
@@ -57,7 +68,7 @@ concrete VerbLat of Verb = CatLat ** open (S=StructuralLat),ResLat,IrregLat,Extr
-- SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy
-- SlashV2VNP vv np vp =
-- insertObjPre (\\_ => vv.c2 ++ np.s ! Acc)
-- insertObjPre (\\_ => vv.c2 ++ (combineNounPhrase np) ! PronNonDrop ! Acc)
-- (insertObjc (\\a => infVP vv.isAux vp a) (predVc vv)) **
-- {c2 = vp.c2} ;
@@ -103,7 +114,9 @@ concrete VerbLat of Verb = CatLat ** open (S=StructuralLat),ResLat,IrregLat,Extr
CompAP ap = ap ;
-- CompNP : NP -> Comp ; -- (be) the man
CompNP np = {s = \\_ => let a = Ag np.g np.n Nom in np.preap.s ! a ++ np.s ! Nom ++ np.postap.s ! a } ;
CompNP np = {s = \\_ =>
(combineNounPhrase np) ! PronNonDrop ! Nom
} ;
-- CompAdv : Adv -> Comp ; -- (be) here
CompAdv a = {s = \\_ => a.s ! Posit } ;

10
src/latin/mkMissing.hs Normal file
View File

@@ -0,0 +1,10 @@
import PGF
import System.Environment
main =
do
args <- getArgs -- first one should be pgf file and second one should be the file containing the errors/warnings about missing things
pgf <- PGF.readPGF (args !! 0) -- "tmp/Lang.pgf"
ms <- readFile (args !! 1) {- "tmp/MissingLat.tmp" -} >>= return . map (last . words) . lines
let ts = [PGF.showType [] t | m <- ms, Just t <- [PGF.functionType pgf (PGF.mkCId m)]]
putStrLn $ unlines ["oper " ++ f ++ " : " ++ t ++ " = notYet \"" ++ f ++ "\" ;" | (f,t) <- zip ms ts]

18
src/latin/mkMissing.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
echo "Create tmp dir"
mkdir tmp/
echo "Remove old file"
echo "resource MissingLat = {} " > MissingLat.gf
echo "Look for missing functions"
# gf -src -i .. -batch TryLat.gf 2>&1 | grep "Warning: no linearization of" | sort -u > tmp/MissingLat.tmp
gf -src -i .. -batch ../api/TryLat.gf 2>&1 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" | grep -E "constant not found|no linearization of" | sort -u > tmp/MissingLat.tmp
echo "Compile grammar"
gf -src -make -D tmp LangLat.gf &> /dev/null
echo "Create placeholders for missing functions"
echo "resource MissingLat = open GrammarLat, Prelude in {" > MissingLat.gf
echo "" >> MissingLat.gf
echo "-- temporary definitions to enable the compilation of RGL API" >> MissingLat.gf
runghc mkMissing.hs "tmp/Lang.pgf" "tmp/MissingLat.tmp">> MissingLat.gf
echo "}" >> MissingLat.gf
echo "Cleanup"
rm -Rf tmp