1
0
forked from GitHub/gf-rgl

Merge remote-tracking branch 'upstream/master' into por

This commit is contained in:
odanoburu
2018-06-20 12:33:05 -03:00
165 changed files with 1663 additions and 991739 deletions

View File

@@ -11,9 +11,9 @@ import Data.List
-- this creates the file absfuns.html
main = do
system "grep \" : \" ../src/abstract/*.gf ../src/translator/Extensions.gf ../../examples/app/App.gf | grep \" -- \" >absfuns.tmp"
system "grep \" : \" ../src/abstract/*.gf | grep \" -- \" >absfuns.tmp"
funs <- readFile "absfuns.tmp" >>= return . lines
deps <- readFile "../src/uddeps.labels" >>= return . lines
deps <- readFile "../src/dep.labels" >>= return . lines
let depmap = M.fromListWith (\x y -> x ++ [";"] ++ y) [(fun,deps) | fun:deps <- map words deps]
let rows = sort $ filter (flip S.notMember hiddenModules . last) $ map (mkRow depmap) (map words funs)
let entries = map (sepFields . addLink) rows
@@ -47,10 +47,7 @@ putStrLnIf = putStrLn
addLink fs =
let
m = last fs
abstract = case m of
"App" -> "../../examples/app/"
"Extensions" -> "translator/"
_ -> "abstract/"
abstract = "abstract/"
in init fs ++ ["[" ++ m ++ " ../src/" ++ abstract ++ m ++ ".gf]"]
-- for tab separated generation
@@ -59,4 +56,3 @@ addLink fs =
-- italics e = e
-- putStrLnIf = return ()
-- addLink fs = fs

File diff suppressed because it is too large Load Diff

1
doc/browse/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
tags/*.gf-tags

2
doc/browse/build-tags.sh Normal file → Executable file
View File

@@ -49,7 +49,7 @@ do
$FIND | while read -r file
do
echo " \""`echo $file | sed 's|./||;s|.gf||'`"\"," >> $index
filemtime=`$STAT "${tagsdir}/${file}-tags"` 2>/dev/null
filemtime=`$STAT "${tagsdir}/${file}-tags" 2>/dev/null`
if [ -z "$filemtime" ] || [ "$filemtime" -lt "$start" ]
then
gf --batch --quiet --tags --output-dir=${tagsdir} $file 2>/dev/null

View File

@@ -2,7 +2,6 @@ RUNGHC=runghc
RUNMAKE=$(RUNGHC) Make.hs
PROBSFILE=../../treebanks/PennTreebank/ParseEngAbs.probs
TPROBSFILE=translator/translate.probs
#GF_LIB_PATH=..
@@ -120,96 +119,6 @@ compiled:
clean:
$(RUNMAKE) clean
# the previous translation grammar "Parse" now replaced by Translate:
# Dummy targets, just for convenience
Translate: TranslateEng TranslateBul TranslateEus TranslateChi TranslateGer TranslateSwe TranslateHin TranslateFin TranslateFre Translate8
TranslateEng: TranslateEng.pgf
TranslateBul: TranslateBul.pgf
TranslateChi: TranslateChi.pgf
TranslateGer: TranslateGer.pgf
TranslateDut: TranslateDut.pgf
TranslateSwe: TranslateSwe.pgf
TranslateHin: TranslateHin.pgf
TranslateFin: TranslateFin.pgf
TranslateFre: TranslateFre.pgf
TranslateIta: TranslateIta.pgf
TranslateSpa: TranslateSpa.pgf
TranslateEus: TranslateEus.pgf
S=-s
GFMKT=mkdir -p ../translator && gf $S -make -literal=PN,Symb -probs=$(TPROBSFILE) -gfo-dir ../translator
TRANSLATE8=TranslateEng.pgf TranslateBul.pgf TranslateChi.pgf TranslateGer.pgf TranslateSwe.pgf TranslateHin.pgf TranslateFin.pgf TranslateFre.pgf
TRANSLATE10=TranslateEng.pgf TranslateBul.pgf TranslateChi.pgf TranslateGer.pgf TranslateSwe.pgf TranslateHin.pgf TranslateFin.pgf TranslateFre.pgf TranslateIta.pgf TranslateSpa.pgf
TRANSLATE11=$(TRANSLATE10) TranslateDut.pgf
TRANSLATE15=$(TRANSLATE10) TranslateDut.pgf TranslateCat.pgf TranslateEst.pgf TranslateTha.pgf TranslateJpn.pgf
# Without dependencies:
Translate10:
$(GFMKT) -name=Translate10 $(TRANSLATE10) +RTS -K32M
# With dependencies:
Translate10.pgf: $(TRANSLATE10)
$(GFMKT) -name=Translate10 $(TRANSLATE10) +RTS -K32M
# Without dependencies:
Translate11:
$(GFMKT) -name=Translate11 $(TRANSLATE11) +RTS -K32M
# With dependencies:
Translate11.pgf: $(TRANSLATE11)
$(GFMKT) -name=Translate11 $(TRANSLATE11) +RTS -K32M
# Without dependencies:
Translate8:
$(GFMKT) -name=Translate8 $(TRANSLATE8) +RTS -K32M
# With dependencies:
Translate8.pgf: $(TRANSLATE8)
$(GFMKT) -name=Translate8 $(TRANSLATE8) +RTS -K32M
Translate15.pgf: $(TRANSLATE15)
$(GFMKT) -name=Translate15 $(TRANSLATE15) +RTS -K32M
# Translate grammars for individual languages
TranslateEng.pgf:: ; $(GFMKT) -name=TranslateEng translator/TranslateEng.gf
TranslateBul.pgf:: ; $(GFMKT) -name=TranslateBul translator/TranslateBul.gf
TranslateChi.pgf:: ; $(GFMKT) -name=TranslateChi translator/TranslateChi.gf +RTS -K200M
TranslateEus.pgf:: ; $(GFMKT) -name=TranslateEus translator/TranslateEus.gf
TranslateFin.pgf:: ; $(GFMKT) -name=TranslateFin translator/TranslateFin.gf +RTS -K64M
TranslateGer.pgf:: ; $(GFMKT) -name=TranslateGer translator/TranslateGer.gf
TranslateDut.pgf:: ; $(GFMKT) -name=TranslateDut translator/TranslateDut.gf
TranslateHin.pgf:: ; $(GFMKT) -name=TranslateHin translator/TranslateHin.gf
TranslateFre.pgf:: ; $(GFMKT) -name=TranslateFre translator/TranslateFre.gf +RTS -K64M
TranslateSwe.pgf:: ; $(GFMKT) -name=TranslateSwe translator/TranslateSwe.gf
TranslateIta.pgf:: ; $(GFMKT) -name=TranslateIta translator/TranslateIta.gf +RTS -K64M
TranslateSpa.pgf:: ; $(GFMKT) -name=TranslateSpa translator/TranslateSpa.gf +RTS -K64M
TranslateCat.pgf:: ; $(GFMKT) -name=TranslateCat translator/TranslateCat.gf +RTS -K64M
TranslateEst.pgf:: ; $(GFMKT) -name=TranslateEst translator/TranslateEst.gf +RTS -K64M
TranslateTha.pgf:: ; $(GFMKT) -name=TranslateTha translator/TranslateTha.gf +RTS -K64M
TranslateJpn.pgf:: ; $(GFMKT) -name=TranslateJpn translator/TranslateJpn.gf +RTS -K64M
# Selected language pairs:
TranslateEngFin: ; $(GFMKT) -name=TranslateEngFin TranslateEng.pgf TranslateFin.pgf
TranslateEngGer: ; $(GFMKT) -name=TranslateEngGer TranslateEng.pgf TranslateGer.pgf
TranslateEngHin: ; $(GFMKT) -name=TranslateEngHin TranslateEng.pgf TranslateHin.pgf
TranslateEngBul: ; $(GFMKT) -name=TranslateEngBul TranslateEng.pgf TranslateBul.pgf
TranslateEngSpa: ; $(GFMKT) -name=TranslateEngSpa TranslateEng.pgf TranslateSpa.pgf
TranslateEngFre: ; $(GFMKT) -name=TranslateEngFre TranslateEng.pgf TranslateFre.pgf
TranslateEngSwe: ; $(GFMKT) -name=TranslateEngSwe TranslateEng.pgf TranslateSwe.pgf
TranslateEngChi: ; $(GFMKT) -name=TranslateEngChi TranslateEng.pgf TranslateChi.pgf
############################## begin Parse
## now obsolete
@@ -260,4 +169,3 @@ ParseEngSwe: ; $(GFMKP) -name=ParseEngSwe ParseEng.pgf ParseSwe.pgf
ParseEngChi: ; $(GFMKP) -name=ParseEngChi ParseEng.pgf ParseChi.pgf
############################################## end Parse

View File

@@ -41,9 +41,26 @@ resource ParadigmsAra = open
--2 Nouns
-- Overloaded operator for main cases
mkN = overload {
mkN : (sg : Str) -> N -- non-human regular nouns
= smartN ;
mkN : Species -> N -> N
= \p,n -> n ** {h = p} ;
mkN : (sg,pl : Str) -> Gender -> Species -> N
= \sg,pl -> mkFullN (reg sg pl) ;
mkN : NTable -> Gender -> Species -> N -- loan words, irregular
= mkFullN ;
mkN : (root,sgPatt,brokenPlPatt : Str) -> Gender -> Species -> N -- broken plural
= brkN ;
--- mkN : (root,sgPatt : Str) -> Gender -> Species -> N -- sound feminine plural
--- = sdfN ;
} ;
--This is used for loan words or anything that has untreated irregularities
--in the interdigitization process of its words
mkN : NTable -> Gender -> Species -> N ;
mkFullN : NTable -> Gender -> Species -> N ;
--Takes a root string, a singular pattern string, a broken plural
--pattern string, a gender, and species. Gives a noun.
@@ -57,7 +74,19 @@ resource ParadigmsAra = open
--and species. Gives a noun whose plural is sound masculine
sdmN : Str -> Str -> Gender -> Species -> N ;
mkPN : Str -> Gender -> Species -> PN ;
--3 Proper names
mkPN = overload {
mkPN : Str -> PN -- Fem Hum if ends with ة, otherwise Masc Hum
= smartPN ;
mkPN : Str -> Gender -> Species -> PN
= mkFullPN ;
} ;
mkFullPN : Str -> Gender -> Species -> PN ;
--3 Relational nouns
@@ -65,13 +94,26 @@ resource ParadigmsAra = open
mkN3 : N -> Preposition -> Preposition -> N3 ;
--2 Adjectives
-- Overloaded operator for main cases
mkA = overload {
mkA : (root,patt : Str) -> A
= sndA ;
mkA : (root : Str) -> A -- forms adjectives with positive form aFCal
= clrA ;
mkA : (posit,compar,plur : Str) -> A
= degrA ;
} ;
--Takes a root string and a pattern string
sndA : Str -> Str -> A ;
sndA : (root,patt : Str) -> A ;
--Takes a root string only
clrA : Str -> A ;
clrA : (root : Str) -> A ; -- forms adjectives of type aFCal
--3 Two-place adjectives
--
@@ -96,13 +138,26 @@ resource ParadigmsAra = open
-- A preposition as used for rection in the lexicon, as well as to
-- build $PP$s in the resource API, just requires a string.
mkPreposition : Str -> Preposition ;
mkPrep : Str -> Prep
= \s -> lin Prep {s = mkPreposition s} ; -- preposition in the sense of RGL abstract syntax
mkPreposition : Str -> Preposition ; -- just a string, for internal use
-- (These two functions are synonyms.)
--2 Verbs
--The verb in the imperfect tense gives the most information
-- Overloaded operations
mkV = overload {
mkV : (imperfect : Str) -> V
= regV ;
mkV : (root : Str) -> (perf,impf : Vowel) -> V -- verb form I ; vowel = a|i|u
= v1 ;
mkV : (root : Str) -> VerbForm -> V -- FormI .. FormVIII (no VII) ; default vowels a u for I
= formV ;
} ;
-- The verb in the imperfect tense gives the most information
regV : Str -> V ;
@@ -296,7 +351,7 @@ resource ParadigmsAra = open
Preposition = Str ;
mkN nsc gen spec =
mkFullN nsc gen spec =
{ s = nsc; --NTable
g = gen;
h = spec;
@@ -307,7 +362,7 @@ resource ParadigmsAra = open
\root,sg,pl,gen,spec ->
let { kitAb = mkWord sg root;
kutub = mkWord pl root
} in mkN (reg kitAb kutub) gen spec;
} in mkFullN (reg kitAb kutub) gen spec;
brkN root sg pl gen spec =
let { raw = brkN' root sg pl gen spec} in
@@ -323,14 +378,14 @@ resource ParadigmsAra = open
sdfN =
\root,sg,gen,spec ->
let { kalima = mkWord sg root;
} in mkN (sndf kalima) gen spec;
} in mkFullN (sndf kalima) gen spec;
sdmN =
\root,sg,gen,spec ->
let { mucallim = mkWord sg root;
} in mkN (sndm mucallim) gen spec;
} in mkFullN (sndm mucallim) gen spec;
mkPN = \str,gen,species ->
mkFullPN = \str,gen,species ->
{ s = \\c => str + indecl!c ;
g = gen;
h = species;
@@ -401,6 +456,9 @@ resource ParadigmsAra = open
lock_Quant = <>
};
degrA : (posit,compar,plur : Str) -> A
= \posit,compar,plur -> lin A {s = clr posit compar plur} ;
sndA root pat =
let raw = sndA' root pat in {
s = \\af =>
@@ -467,4 +525,28 @@ resource ParadigmsAra = open
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
smartN : Str -> N = \s -> case last s of {
"ة" => mkFullN (sndf s) Fem NoHum ;
_ => mkFullN (sndm s) Masc NoHum
} ;
smartPN : Str -> PN = \s -> case last s of {
"ة" => mkFullPN s Fem Hum ;
_ => mkFullPN s Masc Hum
} ;
formV : (root : Str) -> VerbForm -> V = \s,f -> case f of {
FormI => v1 s a u ;
FormII => v2 s ;
FormIII => v3 s ;
FormIV => v4 s ;
FormV => v5 s ;
FormVI => v6 s ;
--- FormVII => v7 s ;
FormVIII => v8 s
} ;
param VerbForm =
FormI | FormIII | FormIII | FormIV | FormV | FormVI | FormVIII ;
} ;

View File

@@ -4,24 +4,24 @@ concrete AdjectiveBul of Adjective = CatBul ** open ResBul, Prelude in {
lin
PositA a = {
s = \\aform => a.s ! aform ;
s = \\aform,_ => a.s ! aform ;
adv = a.adv ;
isPre = True
} ;
ComparA a np = {
s = \\aform => "ïî" ++ hyphen ++ a.s ! aform ++ "îò" ++ np.s ! RObj Acc ;
s = \\aform,_ => "ïî" ++ hyphen ++ a.s ! aform ++ "îò" ++ np.s ! RObj Acc ;
adv = "ïî" ++ hyphen ++ a.adv ++ "îò" ++ np.s ! RObj Acc ;
isPre = True
} ;
UseComparA a = {
s = \\aform => "ïî" ++ hyphen ++ a.s ! aform ;
s = \\aform,_ => "ïî" ++ hyphen ++ a.s ! aform ;
adv = "ïî" ++ hyphen ++ a.adv ;
isPre = True
} ;
AdjOrd ord = {
s = ord.s ;
s = \\aform,_ => ord.s ! aform ;
adv = ord.s ! ASg Neut Indef ;
isPre = True
} ;
@@ -30,43 +30,43 @@ concrete AdjectiveBul of Adjective = CatBul ** open ResBul, Prelude in {
---- just to make the API compile. AR 7/4/2010
CAdvAP ad ap np = {
s = \\a => ad.s ++ ap.s ! a ++ ad.sn ++ np.s ! RObj Acc ;
adv = ad.s ++ ap.adv ++ ad.sn ++ np.s ! RObj Acc ;
s = \\a,p => ad.s ++ ap.s ! a ! p ++ ad.sn ++ np.s ! RObj Acc ;
adv = ad.s ++ ap.adv ++ ad.sn ++ np.s ! RObj Acc ;
isPre = False
} ;
ComplA2 a np = {
s = \\aform => a.s ! aform ++ a.c2 ++ np.s ! RObj Acc ;
s = \\aform,p => a.s ! aform ++ a.c2 ++ np.s ! RObj Acc ;
adv = a.adv ++ a.c2 ++ np.s ! RObj Acc ;
isPre = False
} ;
ReflA2 a = {
s = \\aform => a.s ! aform ++ a.c2 ++ ["ñåáå ñè"] ;
s = \\aform,_ => a.s ! aform ++ a.c2 ++ ["ñåáå ñè"] ;
adv = a.adv ++ a.c2 ++ ["ñåáå ñè"] ;
isPre = False
} ;
SentAP ap sc = {
s = \\a => ap.s ! a ++ sc.s ;
adv = ap.adv ++ sc.s ;
s = \\a,p => ap.s ! a ! p ++ sc.s ! {gn=aform2gennum a; p=p} ;
adv = ap.adv ++ sc.s ! agrP3 (GSg Neut) ;
isPre = False
} ;
AdAP ada ap = {
s = \\a => ada.s ++ ap.s ! a ;
s = \\a,p => ada.s ++ ap.s ! a ! p ;
adv = ada.s ++ ap.adv ;
isPre = ap.isPre
} ;
UseA2 a = {
s = a.s ;
s = \\aform,p => a.s ! aform ;
adv = a.adv ;
isPre = True
} ;
AdvAP ap adv = {
s = \\aform => ap.s ! aform ++ adv.s ;
s = \\aform,p => ap.s ! aform ! p ++ adv.s ;
adv = ap.adv ++ adv.s;
isPre = False
} ;

View File

@@ -1,5 +1,5 @@
--# -coding=utf8
concrete CatBul of Cat = CommonX - [IAdv,CAdv] ** open ResBul, Prelude, Predef, (R = ParamX) in {
concrete CatBul of Cat = CommonX - [IAdv,CAdv,AdV,SC] ** open ResBul, Prelude, Predef, (R = ParamX) in {
lincat
-- Tensed/Untensed
@@ -40,19 +40,21 @@ concrete CatBul of Cat = CommonX - [IAdv,CAdv] ** open ResBul, Prelude, Predef,
-- Adjective
AP = {s : AForm => Str; adv : Str; isPre : Bool} ;
AP = {s : AForm => Person => Str; adv : Str; isPre : Bool} ;
-- Adjective
-- Adverb
CAdv = {s : Str; sn : Str} ;
IAdv = {s : QForm => Str} ;
AdV = {s : Str; p : Polarity} ;
SC = {s : Agr => Str} ;
-- Noun
CN = {s : NForm => Str; g : AGender} ;
NP = {s : Role => Str; a : Agr; p : Polarity} ;
Pron = {s : Role => Str; clit : Case => Str; gen : AForm => Str; a : Agr} ;
Det = {s : Bool => AGender => Role => Str; nn : NNumber; spec : Species; p : Polarity} ;
Det,DAP = {s : Bool => AGender => Role => Str; nn : NNumber; spec : Species; p : Polarity} ;
Predet = {s : GenNum => Str} ;
Ord = {s : AForm => Str} ;
Num = {s : CardForm => Str; nn : NNumber; nonEmpty : Bool} ;
@@ -66,24 +68,25 @@ concrete CatBul of Cat = CommonX - [IAdv,CAdv] ** open ResBul, Prelude, Predef,
-- Structural
Conj = {s : Str; distr : Bool; conj : Ints 2; n : Number} ;
Conj = {s : Str; distr : Bool; conj : Ints 3; n : Number} ;
Subj = {s : Str} ;
Prep = {s : Str; c : Case} ;
-- Open lexical classes, e.g. Lexicon
V, VS, VQ, VA = Verb ;
V2, V2A = Verb ** {c2 : Preposition} ;
V2V, V2S, V2Q = Verb ** {c2, c3 : Preposition} ; --- AR
V2 = Verb ** {c2 : Preposition} ;
V2A, V2V = Verb ** {c2, c3 : Preposition; subjCtrl : Bool} ;
V2S, V2Q = Verb ** {c2, c3 : Preposition} ;
V3 = Verb ** {c2, c3 : Preposition} ;
VV = Verb ** {typ : VVType};
A = {s : AForm => Str; adv : Str} ;
A2 = {s : AForm => Str; adv : Str; c2 : Str} ;
N = {s : NForm => Str; rel : AForm => Str; g : AGender} ;
N2 = {s : NForm => Str; g : AGender} ** {c2 : Preposition} ;
N3 = {s : NForm => Str; g : AGender} ** {c2,c3 : Preposition} ;
N = {s : NForm => Str; rel : AForm => Str; relPost : Bool; g : AGender} ;
N2 = {s : NForm => Str; rel : AForm => Str; relPost : Bool; g : AGender} ** {c2 : Preposition} ;
N3 = {s : NForm => Str; rel : AForm => Str; relPost : Bool; g : AGender} ** {c2,c3 : Preposition} ;
PN = {s : Str; g : Gender} ;
lindef
@@ -91,20 +94,21 @@ concrete CatBul of Cat = CommonX - [IAdv,CAdv] ** open ResBul, Prelude, Predef,
ClSlash = \s -> {s = \\_,_,_,_,_ => s; c2 = {s=""; c=Acc}};
VP = \s -> predV {s = \\_,_ => s; vtype = VNormal};
VPSlash = \s -> slashV {s = \\_,_ => s; vtype = VNormal} {s=""; c=Acc};
VPSlash = \s -> slashV {s = \\_,_ => s; vtype = VNormal} {s=""; c=Acc} False ;
V, VS, VQ, VA = \s -> {s = \\_,_ => s; vtype = VNormal};
V2, V2A = \s -> {s = \\_,_ => s; vtype = VNormal; c2 = {s=""; c=Acc}};
V2V, V2S, V2Q = \s -> {s = \\_,_ => s; vtype = VNormal; c2,c3 = {s=""; c=Acc}};
V2 = \s -> {s = \\_,_ => s; vtype = VNormal; c2 = {s=""; c=Acc}};
V2A, V2V = \s -> {s = \\_,_ => s; vtype = VNormal; c2,c3 = {s=""; c=Acc}; subjCtrl = False};
V2S, V2Q = \s -> {s = \\_,_ => s; vtype = VNormal; c2,c3 = {s=""; c=Acc}};
V3 = \s -> {s = \\_,_ => s; vtype = VNormal; c2,c3 = {s=""; c=Acc}};
VV = \s -> {s = \\_,_ => s; vtype = VNormal; typ = VVInf};
VV = \s -> {s = \\_,_ => s; vtype = VNormal; typ = VVInf Perf};
A = \s -> {s = \\_ => s; adv = s};
A2 = \s -> {s = \\_ => s; adv = s; c2 = ""};
N = \s -> {s = \\_ => s; rel = \\_ => s; g = AMasc NonHuman};
N2 = \s -> {s = \\_ => s; g = AMasc NonHuman; c2 = {s=""; c=Acc}};
N3 = \s -> {s = \\_ => s; g = AMasc NonHuman; c2,c3 = {s=""; c=Acc}};
N = \s -> {s = \\_ => s; rel = \\_ => s; relPost = False; g = AMasc NonHuman};
N2 = \s -> {s = \\_ => s; rel = \\_ => s; relPost = False; g = AMasc NonHuman; c2 = {s=""; c=Acc}};
N3 = \s -> {s = \\_ => s; rel = \\_ => s; relPost = False; g = AMasc NonHuman; c2,c3 = {s=""; c=Acc}};
linref
SSlash = \ss -> ss.s ! agrP3 (GSg Masc) ++ ss.c2.s;
@@ -116,7 +120,8 @@ concrete CatBul of Cat = CommonX - [IAdv,CAdv] ** open ResBul, Prelude, Predef,
ad = vps.ad ;
compl = \\a => vps.compl1 ! a ++ vps.c2.s ++ vps.compl2 ! a ;
vtype = vps.vtype ;
p = Pos
p = Pos ;
isSimple = vps.isSimple
}
in linrefVP vp;
@@ -127,16 +132,19 @@ concrete CatBul of Cat = CommonX - [IAdv,CAdv] ** open ResBul, Prelude, Predef,
} ;
V, VS, VQ, VA = \v -> linrefVP (predV v);
V2, V2A = \v -> linrefVP (predV v) ++ v.c2.s;
V2V = \v -> linrefVP (predV v) ++ v.c2.s ++ v.c3.s ++ "да";
V2S, V2Q = \v -> linrefVP (predV v) ++ v.c2.s ++ v.c3.s;
V3 = \v -> linrefVP (predV v) ++ v.c2.s ++ v.c3.s;
V2 = \v -> linrefVP (predV v) ++ linrefPrep v.c2 ;
V2V = \v -> linrefVP (predV v) ++ linrefPrep v.c2 ++ linrefPrep v.c3 ++ "да";
V2A, V2S, V2Q = \v -> linrefVP (predV v) ++ linrefPrep v.c2 ++ linrefPrep v.c3;
V3 = \v -> linrefVP (predV v) ++ linrefPrep v.c2 ++ linrefPrep v.c3;
VV = \v -> linrefVP (predV v);
Prep = linrefPrep ;
A = \a -> a.s ! ASg Masc Indef;
A2 = \a -> a.s ! ASg Masc Indef ++ a.c2;
N = \n -> n.s ! NF Sg Indef;
N2 = \n -> n.s ! NF Sg Indef ++ n.c2.s;
N3 = \n -> n.s ! NF Sg Indef ++ n.c2.s ++ n.c3.s;
N2 = \n -> n.s ! NF Sg Indef ++ linrefPrep n.c2;
N3 = \n -> n.s ! NF Sg Indef ++ linrefPrep n.c2 ++ linrefPrep n.c3;
}

View File

@@ -17,6 +17,7 @@ concrete ConjunctionBul of Conjunction =
ConjAdV conj ss = {
s = conj.s ++ (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj;
p = Pos
} ;
ConjIAdv conj ss = {
@@ -30,8 +31,8 @@ concrete ConjunctionBul of Conjunction =
} ;
ConjAP conj ss = {
s = \\aform => conj.s ++ (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!aform;
adv = conj.s ++ (linCoordSep [])!conj.distr!conj.conj++ss.adv!conj.distr!conj.conj;
s = \\aform,p => conj.s ++ (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!aform!p;
adv = conj.s ++ (linCoordSep [])!conj.distr!conj.conj++ss.adv!conj.distr!conj.conj;
isPre = ss.isPre
} ;
@@ -65,12 +66,12 @@ concrete ConjunctionBul of Conjunction =
a = conjAgr xs.a x.a} ;
BaseAP x y =
{s = \\d,t,aform=>x.s!aform++linCoord!t++y.s!aform;
adv= \\d,t =>x.adv ++linCoord!t++y.adv;
{s = \\d,t,aform,p => x.s!aform!p++linCoord!t++y.s!aform!p;
adv= \\d,t => x.adv ++linCoord!t++y.adv;
isPre = andB x.isPre y.isPre} ;
ConsAP x xs =
{s = \\d,t,aform=>x.s!aform++(linCoordSep comma)!d!t++xs.s!d!t!aform;
adv= \\d,t =>x.adv ++(linCoordSep comma)!d!t++xs.adv!d!t;
{s = \\d,t,aform,p =>x.s!aform!p++(linCoordSep comma)!d!t++xs.s!d!t!aform!p;
adv= \\d,t =>x.adv ++(linCoordSep comma)!d!t++xs.adv!d!t;
isPre = andB x.isPre xs.isPre} ;
BaseRS x y =
@@ -86,13 +87,13 @@ concrete ConjunctionBul of Conjunction =
g = x.g} ;
lincat
[S] = {s : Bool => Ints 2 => Str} ;
[Adv] = {s : Bool => Ints 2 => Str} ;
[AdV] = {s : Bool => Ints 2 => Str} ;
[IAdv] = {s : Bool => Ints 2 => QForm => Str} ;
[NP] = {s : Bool => Ints 2 => Role => Str; a : Agr} ;
[AP] = {s : Bool => Ints 2 => AForm => Str; adv : Bool => Ints 2 => Str; isPre : Bool} ;
[RS] = {s : Bool => Ints 2 => Agr => Str} ;
[CN] = {s : Bool => Ints 2 => NForm => Str; g : AGender} ;
[S] = {s : Bool => Ints 3 => Str} ;
[Adv] = {s : Bool => Ints 3 => Str} ;
[AdV] = {s : Bool => Ints 3 => Str} ;
[IAdv] = {s : Bool => Ints 3 => QForm => Str} ;
[NP] = {s : Bool => Ints 3 => Role => Str; a : Agr} ;
[AP] = {s : Bool => Ints 3 => AForm => Person => Str; adv : Bool => Ints 3 => Str; isPre : Bool} ;
[RS] = {s : Bool => Ints 3 => Agr => Str} ;
[CN] = {s : Bool => Ints 3 => NForm => Str; g : AGender} ;
}

View File

@@ -32,7 +32,7 @@ lin
is_right_VP = mkVP (mkA084 "верен") ;
is_wrong_VP = mkVP (mkA079 "грешен") ;
n_units_AP card cn a = mkAP (lin AdA (mkUtt (mkNP <lin Card card : Card> (lin CN cn)))) (lin A a) ;
weather_adjCl a = R.mkClause (a.s ! R.ASg R.Masc R.Indef) {gn=R.GSg R.Masc; p=R.P3} R.Pos (R.insertObj (\\_=>"") R.Pos (R.predV R.verbBe)) ;
weather_adjCl a = R.mkClause (a.s ! R.ASg R.Masc R.Indef ! R.P3) {gn=R.GSg R.Masc; p=R.P3} R.Pos (R.insertObj (\\_=>"") R.Pos (R.predV R.verbBe)) ;
lin
weekdayPunctualAdv w = SyntaxBul.mkAdv in_Prep (mkNP w) ; -- on Sunday
@@ -133,7 +133,7 @@ lin
oper
mkMonth : Str -> Str -> N = \n,a -> lin N {
s = \\_ => n ;
rel = (mkA078 a).s ;
rel = (mkA078 a).s ; relPost = False ;
g = R.AMasc R.NonHuman
} ;
}

View File

@@ -5924,7 +5924,7 @@ lin
gadost_N = mkN049 "гадост" ;
gad_ja__V = stateV (mkV173 "гадя") ;
gae_ch_en_A = mkA079 "гаечен" ;
gaz_N = mkN049 "газ" ;
gaz_N = mkN001 "газ" ;
gazgenerator_N = mkN007 "газгенератор" ;
gazgeneratoren_A = mkA079 "газгенераторен" ;
gazela_N = mkN041 "газела" ;
@@ -29808,7 +29808,7 @@ lin
otb_ja_gvane_N = mkN071 "отбягване" ;
otvara_N = mkN041 "отвара" ;
otvara_ch_ka_N = mkN041 "отварачка" ;
otvar_ja_m_V = actionV (mkV187 "отварям") (mkV152 "отбегна") ;
otvar_ja_m_V = actionV (mkV187 "отварям") (mkV173 "отворя")) ;
otvar_ja_ne_N = mkN071 "отваряне" ;
otve_zj_dam_V = actionV (mkV186 "отвеждам") (mkV145 "отведа") ;
otve_zj_dane_N = mkN071 "отвеждане" ;
@@ -40670,7 +40670,7 @@ lin
razpakovane_N = mkN071 "разпаковане" ;
razpalvam_V = actionV (mkV186 "разпалвам") (mkV173 "разпаля") ;
razpalvane_N = mkN071 "разпалване" ;
razpalen_A = mkA079 "разпален" ;
razpalen_A = mkA076 "разпален" ;
razpalenost_N = mkN049 "разпаленост" ;
razpal_ja_m_V = actionV (mkV187 "разпалям") (mkV173 "разпаля") ;
razpal_ja_ne_N = mkN071 "разпаляне" ;

View File

@@ -237,8 +237,9 @@ lin
} ++
v.s ! Imperf ! VPres Sg P3 ++
case v.typ of {
VVInf => "да" ++ pp "глагол";
VVGerund => pp "деепричастие"
VVInf Perf => "да" ++ pp "свършен глагол";
VVInf Imperf => "да" ++ pp "несвършен глагол";
VVGerund => pp "деепричастие"
};
s2= inflVerb v ;
s3= ""

View File

@@ -1,7 +1,16 @@
--# -path=.:../abstract:../common:prelude
concrete ExtendBul of Extend = CatBul ** open ResBul in {
concrete ExtendBul of Extend = CatBul ** open Prelude, Predef, ResBul, GrammarBul in {
lin
GenModNP num np cn = DetCN (DetQuant DefArt num) (AdvCN cn (PrepNP possess_Prep np)) ; -- this man's car(s) ; DEFAULT the car of this man
AdAdV a adv = {s = a.s ++ adv.s; p = adv.p} ;
EmptyRelSlash slash = {
s = \\t,a,p,agr => slash.c2.s ++ whichRP ! agr.gn ++ slash.s ! agr ! t ! a ! p ! Main ;
role = RObj Acc
} ;
CompoundN n1 n2 =
let aform = ASg (case n2.g of {
AMasc _ => Masc ;
@@ -9,10 +18,151 @@ lin
ANeut => Neut
}) Indef
in {
s = \\nf => n1.rel ! nform2aform nf n2.g ++ n2.s ! (indefNForm nf) ;
rel = \\af => n1.rel ! aform ++ n2.s ! NF Sg Indef ;
s = \\nf => case n1.relPost of {
True => n2.s ! nf ++ n1.rel ! nform2aform nf n2.g ;
False => n1.rel ! nform2aform nf n2.g ++ n2.s ! indefNForm nf
} ;
rel = \\af => n1.rel ! aform ++ n2.s ! NF Sg Indef ; relPost = n1.relPost ;
g = n2.g
} ;
PositAdVAdj a = {s = a.adv; p = Pos} ;
PresPartAP vp =
let ap : AForm => Person => Str
= \\aform,p => vp.ad.s ++
vp.s ! Imperf ! VPresPart aform ++
case vp.vtype of {
VMedial c => reflClitics ! c;
_ => []
} ++
vp.compl ! {gn=aform2gennum aform; p=p} ;
in {s = ap; adv = ap ! (ASg Neut Indef) ! P3; isPre = vp.isSimple} ;
PastPartAP vp =
let ap : AForm => Person => Str
= \\aform,p => vp.ad.s ++
vp.s ! Perf ! VPassive aform ++
vp.compl1 ! {gn=aform2gennum aform; p=p} ++
vp.compl2 ! {gn=aform2gennum aform; p=p}
in {s = ap; adv = ap ! ASg Neut Indef ! P3; isPre = vp.isSimple} ;
PastPartAgentAP vp np =
let ap : AForm => Person => Str
= \\aform,p => vp.ad.s ++
vp.s ! Perf ! VPassive aform ++
vp.compl1 ! {gn=aform2gennum aform; p=p} ++
vp.compl2 ! {gn=aform2gennum aform; p=p} ++
"от" ++ np.s ! RObj Acc
in {s = ap; adv = ap ! ASg Neut Indef ! P3; isPre = False} ;
GerundCN vp = {
s = \\nform => vp.ad.s ++
vp.s ! Imperf ! VNoun nform ++
vp.compl ! {gn=GSg Neut; p=P3} ;
g = ANeut
} ;
GerundNP vp = {
s = \\_ => daComplex Simul Pos vp ! Imperf ! {gn=GSg Neut; p=P1};
a = {gn=GSg Neut; p=P3};
p = Pos
} ;
GerundAdv vp =
{s = vp.ad.s ++
vp.s ! Imperf ! VGerund ++
vp.compl ! {gn=GSg Neut; p=P3}} ;
iFem_Pron = mkPron "аз" "мен" "ме" "ми" "мой" "моя" "моят" "моя" "моята" "мое" "моето" "мои" "моите" (GSg Fem) P1 ;
youFem_Pron = youSg_Pron ;
weFem_Pron = we_Pron ;
youPlFem_Pron = youPl_Pron ;
theyFem_Pron = they_Pron ;
youPolFem_Pron = youPol_Pron ;
youPolPl_Pron = youPol_Pron ;
youPolPlFem_Pron = youPol_Pron ;
lin
PassVPSlash vp = insertObj (\\a => vp.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc)) ++
vp.compl1 ! a ++ vp.compl2 ! a) Pos (predV verbBe) ;
PassAgentVPSlash vp np =
insertObj (\\_ => "чрез" ++ np.s ! RObj Acc) Pos
(insertObj (\\a => vp.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc)) ++
vp.compl1 ! a ++ vp.compl2 ! a) Pos (predV verbBe)) ;
lincat
VPS = {s : Agr => Str} ;
[VPS] = {s : Bool => Ints 3 => Agr => Str} ;
lin
BaseVPS x y = {s = \\d,t,a=>x.s!a++linCoord!t++y.s!a} ;
ConsVPS x xs = {s = \\d,t,a=>x.s!a++(linCoordSep ResBul.comma)!d!t++xs.s!d!t!a} ;
PredVPS np vps = {s = np.s ! RSubj ++ vps.s ! np.a} ;
MkVPS t p vp = {
s = \\a =>
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! False ! Perf ;
compl = vp.compl ! a
in t.s ++ p.s ++ verb ++ compl
} ;
ConjVPS conj vps = {
s = \\a => conj.s++(linCoordSep [])!conj.distr!conj.conj++vps.s!conj.distr!conj.conj!a;
} ;
lin
ComplBareVS = ComplVS ;
lincat
RNP = {s : Role => Str; a : Agr; p : Polarity} ;
lin
ReflRNP slash rnp = {
s = slash.s ;
ad = slash.ad ;
compl = \\a => slash.compl1 ! a ++ slash.c2.s ++ rnp.s ! RObj slash.c2.c ++ slash.compl2 ! rnp.a ;
vtype = slash.vtype ;
p = orPol rnp.p slash.p ;
isSimple = False
} ;
ReflPron =
{ s = \\role => "себе си";
a = {gn = GSg Masc; p = P3} ;
p = Pos
} ;
ReflPoss num cn =
{ s = \\role =>
let nf = case num.nn of {
NNum Sg => case role of {
RVoc => NFVocative ;
_ => NF Sg Indef
} ;
NNum Pl => NF Pl Indef;
NCountable => case cn.g of {
AMasc Human => NF Pl Indef;
_ => NFPlCount
}
} ;
s = reflPron ! aform (gennum cn.g (numnnum num.nn)) Def (RObj Acc) ++ num.s ! dgenderSpecies cn.g Indef role ++ cn.s ! nf
in case role of {
RObj Dat => "на" ++ s;
RObj WithPrep => with_Word ++ s;
_ => s
} ;
a = {gn = gennum cn.g (numnnum num.nn); p = P3} ;
p = Pos
} ;
PredetRNP pred rnp = {
s = \\c => pred.s ! rnp.a.gn ++ rnp.s ! c ;
a = rnp.a ;
p = rnp.p
} ;
}

View File

@@ -56,23 +56,9 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
IAdvAdv adv = {s = \\qf => (mkIAdv "êîëêî").s ! qf ++ adv.s} ;
oper
reflPron : AForm => Str =
table {
ASg Masc Indef => "ñâîé" ;
ASg Masc Def => "ñâîÿ" ;
ASgMascDefNom => "ñâîÿò" ;
ASg Fem Indef => "ñâîÿ" ;
ASg Fem Def => "ñâîÿòà" ;
ASg Neut Indef => "ñâîå" ;
ASg Neut Def => "ñâîåòî" ;
APl Indef => "ñâîè" ;
APl Def => "ñâîèòå"
} ;
lincat
VPI = {s : Agr => Str} ;
[VPI] = {s : Bool => Ints 2 => Agr => Str} ;
[VPI] = {s : Bool => Ints 3 => Agr => Str} ;
lin
BaseVPI x y = {s = \\d,t,a=>x.s!a++linCoord!t++y.s!a} ;
@@ -87,7 +73,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
lincat
VPS = {s : Agr => Str} ;
[VPS] = {s : Bool => Ints 2 => Agr => Str} ;
[VPS] = {s : Bool => Ints 3 => Agr => Str} ;
lin
BaseVPS x y = {s = \\d,t,a=>x.s!a++linCoord!t++y.s!a} ;

View File

@@ -15,7 +15,7 @@ concrete GrammarBul of Grammar =
TextBul,
StructuralBul,
IdiomBul,
TenseX - [CAdv,IAdv]
TenseX - [CAdv,IAdv,AdV,SC]
** {
flags coding=cp1251 ;

View File

@@ -15,7 +15,10 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
CleftAdv ad s = {s = \\t,a,p,o => case p of {Pos=>[]; Neg=>"íå"} ++ ad.s ++ s.s } ;
ExistNP np =
ExistNP np = ExistNPAdv np (lin Adv {s = ""}) ;
ExistIP ip = ExistIPAdv ip (lin Adv {s = ""}) ;
ExistNPAdv np adv =
{ s = \\t,a,p,o =>
let verb = case orPol p np.p of {
Pos => mkV186 "èìàì" ;
@@ -30,7 +33,7 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
auxPres = auxBe ! VPres (numGenNum agr.gn) agr.p ;
auxAorist = auxBe ! VAorist (numGenNum agr.gn) agr.p ;
auxCondS = auxWould ! VAorist (numGenNum agr.gn) agr.p ;
auxCondS = auxCond ! numGenNum agr.gn ! agr.p ;
v : {aux1:Str; aux2:Str; main:Str}
= case <t,a> of {
@@ -45,22 +48,23 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
} ;
in case o of {
Main => v.aux1 ++ v.main ++ v.aux2 ++ np.s ! RObj Acc ;
Inv => np.s ! RObj Acc ++ v.aux1 ++ v.main ++ v.aux2 ;
Quest => v.aux1 ++ v.main ++ "ëè" ++ v.aux2 ++ np.s ! RObj Acc
Main => v.aux1 ++ v.main ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s ;
Inv => np.s ! RObj Acc ++ v.aux1 ++ v.main ++ v.aux2 ++ adv.s ;
Quest => v.aux1 ++ v.main ++ "ëè" ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s
}
} ;
ExistIP ip =
ExistIPAdv ip adv =
mkQuestion {s = ip.s ! RSubj}
(mkClause "òóê" (agrP3 ip.gn) Pos (predV verbBe)) ;
(mkClause "òóê" (agrP3 ip.gn) Pos (insertObj (\\_ => adv.s) Pos (predV verbBe))) ;
ProgrVP vp = {
s = \\_ => vp.s ! Imperf ;
ad = vp.ad ;
compl = vp.compl ;
vtype = vp.vtype ;
p = vp.p
p = vp.p ;
isSimple = False
} ;
ImpPl1 vp = {s = "íåêà" ++ daComplex Simul Pos vp ! Perf ! {gn = GPl ; p = P1}} ;

View File

@@ -24,8 +24,12 @@ oper
mkDeterminerSg : Str -> Str -> Str -> {s : Bool => AGender => Role => Str; nn : NNumber; spec : Species; p : Polarity} = \vseki,vsiaka,vsiako ->
{s = \\_,g,_ => table AGender [vseki;vseki;vsiaka;vsiako] ! g; nn = NNum Sg; spec = Indef; p = Pos} ;
mkDeterminerPl : Str -> {s : Bool => AGender => Role => Str ; nn : NNumber ; spec : Species; p : Polarity} = \vsicki ->
{s = \\_,_,_ => vsicki; sp = \\_,_ => vsicki; nn = NNum Pl; spec = Indef; p = Pos} ;
mkDeterminerPl = overload {
mkDeterminerPl : Str -> {s : Bool => AGender => Role => Str ; nn : NNumber ; spec : Species; p : Polarity} = \vsicki ->
{s = \\_,_,_ => vsicki; nn = NNum Pl; spec = Indef; p = Pos} ;
mkDeterminerPl : Str -> Str -> Str -> Str -> {s : Bool => AGender => Role => Str ; nn : NNumber ; spec : Species; p : Polarity} = \i_dvamata,i_dvata,i_dvete,i_dvete_neut ->
{s = \\_,g,_ => table AGender [i_dvamata;i_dvata;i_dvete;i_dvete_neut] ! g; nn = NNum Pl; spec = Indef; p = Pos} ;
} ;
mkQuant : Str -> Str -> Str -> Str -> {s : Bool => AForm => Str; nonEmpty : Bool; spec : Species; p : Polarity} = \tozi,tazi,towa,tezi ->
{ s = \\_ => table {

View File

@@ -16,7 +16,8 @@ oper
-- after the verb. Some can be preverbal (e.g. "always").
mkAdv : Str -> Adv = \x -> ss x ** {lock_Adv = <>} ;
mkAdV : Str -> AdV = \x -> ss x ** {lock_AdV = <>} ;
mkAdV : Str -> AdV = \x -> {s = x; p = Pos; lock_AdV = <>} ;
mkAdVNegative : Str -> AdV = \x -> {s = x; p = Neg; lock_AdV = <>} ;
-- Adverbs modifying adjectives and sentences can also be formed.
@@ -126,10 +127,21 @@ oper
mkV2S v p t = prepV2 v p ** {c3 = t ; lock_V2S = <>} ;
mkV2V : V -> Prep -> Prep -> V2V ;
mkV2V v p t = prepV2 v p ** {c3 = t ; lock_V2V = <>} ;
mkV2V v p t = prepV2 v p ** {c3 = t ; subjCtrl = False ; lock_V2V = <>} ;
mkV2A : V -> Prep -> V2A ;
mkV2A v p = prepV2 v p ** {lock_V2A = <>} ;
subjCtrlV2V : V -> Prep -> Prep -> V2V ;
subjCtrlV2V v p t = prepV2 v p ** {c3 = t ; subjCtrl = True ; lock_V2V = <>} ;
mkV2A = overload {
mkV2A : V -> Prep -> V2A
= \v, p -> prepV2 v p ** {c3 = noPrep ; subjCtrl = False ; lock_V2A = <>} ;
mkV2A : V -> Prep -> Prep -> V2A
= \v, p, t -> prepV2 v p ** {c3 = t ; subjCtrl = False ; lock_V2A = <>} ;
} ;
subjCtrlV2A : V -> Prep -> Prep -> V2A
= \v, p, t -> prepV2 v p ** {c3 = t ; subjCtrl = True ; lock_V2A = <>} ;
mkV2Q : V -> Prep -> Prep -> V2Q ;
mkV2Q v p t = prepV2 v p ** {c3 = t ; lock_V2Q = <>} ;
@@ -138,7 +150,10 @@ oper
mkVS v = v ** {lock_VS = <>} ;
mkVV : V -> VV ;
mkVV v = v ** {typ = VVInf; lock_VV = <>} ;
mkVV v = v ** {typ = VVInf Perf; lock_VV = <>} ;
imperfVV : V -> VV ;
imperfVV v = v ** {typ = VVInf Imperf; lock_VV = <>} ;
gerundVV : V -> VV ;
gerundVV v = v ** {typ = VVGerund; lock_VV = <>} ;
@@ -155,7 +170,7 @@ oper
--
prepN2 : N -> Prep -> N2 ;
prepN2 n p = {s = n.s; g = n.g; c2 = p; lock_N2 = <>} ;
prepN2 n p = n ** {c2 = p} ;
dirN2 : N -> N2 ;
dirN2 n = prepN2 n noPrep ;
@@ -165,7 +180,7 @@ oper
--
prepN3 : N -> Prep -> Prep -> N3 ;
prepN3 n p q = {s = n.s; g = n.g; c2 = p; c3 = q; lock_N3 = <>} ;
prepN3 n p q = n ** {c2 = p; c3 = q} ;
dirN3 : N -> Prep -> N3 ;
dirN3 n p = prepN3 n noPrep p ;
@@ -175,9 +190,9 @@ oper
compoundN = overload {
compoundN : Str -> N -> N
= \s,n -> {s = \\nform => s ++ n.s ! nform ; rel = \\aform => s ++ n.rel ! aform; g=n.g ; anim=n.anim ; lock_N = <>} ;
= \s,n -> {s = \\nform => s ++ n.s ! nform ; rel = \\aform => s ++ n.rel ! aform; relPost = True; g=n.g ; anim=n.anim ; lock_N = <>} ;
compoundN : N -> Str -> N
= \n,s -> {s = \\nform => n.s ! nform ++ s; rel = \\aform => n.rel ! aform ++ s; g=n.g ; anim=n.anim ; lock_N = <>} ;
= \n,s -> {s = \\nform => n.s ! nform ++ s; rel = \\aform => n.rel ! aform ++ s; relPost = True; g=n.g ; anim=n.anim ; lock_N = <>} ;
compoundN : N -> N -> N
= \n1,n2 -> lin N
{s = table {
@@ -186,22 +201,37 @@ oper
NFPlCount => n1.s ! NFPlCount ++ n2.s ! (NF Pl Indef) ;
NFVocative => n1.s ! NFVocative ++ n2.s ! (NF Sg Indef)
} ;
rel = \\aform => n1.rel ! aform;
rel = \\aform => n1.rel ! aform; relPost = True;
g = n1.g
} ;
compoundN : A -> N -> N
= \a,n -> lin N
{s = \\nf => (a.s ! nform2aform nf n.g) ++ (n.s ! (indefNForm nf)) ;
rel = \\aform => a.s ! aform ++ n.rel ! indefAForm aform ;
relPost = False ;
g = n.g
} ;
} ;
dualN : N -> A -> N;
dualN n a = lin N {
s = n.s;
rel = a.s;
g = n.g
dualN = overload {
dualN : N -> A -> N
= \n,a -> lin N { s = n.s;
rel = a.s; relPost = False;
g = n.g
} ;
dualN : N -> Prep -> N
= \n,p -> lin N { s = n.s;
rel = \\_ => p.s ++
case p.c of {
Acc => "" ;
Dat => "íà" ;
WithPrep => with_Word
} ++
n.s ! NF Sg Def ;
relPost = True;
g = n.g
}
} ;
relativeN : N -> A -> N = dualN ; -- deprecated
@@ -209,7 +239,7 @@ oper
substantiveN : A -> AGender -> N;
substantiveN a g = lin N {
s = \\nform => a.s ! nform2aform nform g;
rel = a.s;
rel = a.s; relPost = False;
g = g
} ;

View File

@@ -24,8 +24,12 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
} ;
s = det.s ! True ! cn.g ! role ++ cn.s ! nf
in case role of {
RObj Dat => "íà" ++ s;
_ => s
RObj Dat => "íà" ++ s;
RObj WithPrep => case det.p of {
Pos => with_Word ++ s ;
Neg => "áåç" ++ s
} ;
_ => s
} ;
a = {gn = gennum cn.g (numnnum det.nn); p = P3} ;
p = det.p
@@ -42,8 +46,9 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
} ;
UsePN pn = { s = table {
RObj Dat => "íà" ++ pn.s;
_ => pn.s
RObj Dat => "íà" ++ pn.s;
RObj WithPron => with_Word ++ pn.s;
_ => pn.s
} ;
a = {gn = GSg pn.g; p = P3} ;
p = Pos
@@ -51,7 +56,12 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
UsePron p = {s = p.s; a=p.a; p=Pos} ;
PredetNP pred np = {
s = \\c => pred.s ! np.a.gn ++ np.s ! c ;
s = \\c => case c of {
RObj Dat => "íà";
RObj WithPrep => with_Word;
_ => ""
} ++
pred.s ! np.a.gn ++ np.s ! RObj Acc ;
a = np.a ;
p = np.p
} ;
@@ -149,9 +159,10 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
MassNP cn = {
s = table {
RVoc => cn.s ! NFVocative ;
RObj Dat => "íà" ++ cn.s ! (NF Sg Indef);
_ => cn.s ! (NF Sg Indef)
RVoc => cn.s ! NFVocative ;
RObj Dat => "íà" ++ cn.s ! (NF Sg Indef) ;
RObj WithPrep => with_Word ++ cn.s ! (NF Sg Indef);
_ => cn.s ! (NF Sg Indef)
} ;
a = {gn = gennum cn.g Sg; p = P3} ;
p = Pos
@@ -161,21 +172,21 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
UseN2 noun = noun ;
ComplN2 f x = {s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c; g=f.g} ;
ComplN3 f x = {s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c; c2 = f.c3; g=f.g} ;
ComplN3 f x = {s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c; rel = \\af => f.rel ! af ++ f.c2.s ++ x.s ! RObj f.c2.c; relPost = True; c2 = f.c3; g=f.g} ;
Use2N3 f = {s = f.s ; g=f.g ; c2 = f.c2} ;
Use3N3 f = {s = f.s ; g=f.g ; c2 = f.c3} ;
Use2N3 f = {s = f.s ; rel = f.rel ; relPost = f.relPost ; g=f.g ; c2 = f.c2} ;
Use3N3 f = {s = f.s ; rel = f.rel ; relPost = f.relPost ; g=f.g ; c2 = f.c3} ;
AdjCN ap cn = {
s = \\nf => case ap.isPre of {
True => (ap.s ! nform2aform nf cn.g) ++ (cn.s ! (indefNForm nf)) ;
False => (cn.s ! nf) ++ (ap.s ! nform2aform (indefNForm nf) cn.g)
True => (ap.s ! nform2aform nf cn.g ! P3) ++ (cn.s ! (indefNForm nf)) ;
False => (cn.s ! nf) ++ (ap.s ! nform2aform (indefNForm nf) cn.g ! P3)
} ;
g = cn.g
} ;
RelCN cn rs = {
s = \\nf => cn.s ! nf ++ rs.s ! {gn=gennum cn.g (numNForm nf); p=P3} ;
s = \\nf => cn.s ! nf ++ rs.s ! agrP3 (gennum cn.g (numNForm nf)) ;
g = cn.g
} ;
AdvCN cn ad = {
@@ -183,7 +194,7 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
g = cn.g
} ;
SentCN cn sc = {s = \\nf => cn.s ! nf ++ sc.s; g=ANeut} ;
SentCN cn sc = {s = \\nf => cn.s ! nf ++ sc.s ! agrP3 (gennum cn.g (numNForm nf)); g=cn.g} ;
ApposCN cn np = {s = \\nf => cn.s ! nf ++ np.s ! RSubj; g=cn.g} ;
@@ -208,4 +219,25 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
a = np.a ;
p = np.p
} ;
AdjDAP dap ap = {s = \\sp,g,role => let g' = case g of {
AMasc _ => Masc ;
AFem => Fem ;
ANeut => Neut
} ;
aform = case <numnnum dap.nn,dap.spec,role> of {
<Sg,Def,RSubj> => ASgMascDefNom ;
<Sg,_ ,_ > => ASg g' dap.spec ;
<Pl,_ ,_ > => APl dap.spec
} ;
in dap.s ! True ! g ! role ++ ap.s ! aform ! P3 ;
nn = dap.nn;
spec = dap.spec;
p = dap.p
} ;
DetDAP det = {s = \\sp,g,role => det.s ! sp ! g ! role;
nn = det.nn;
spec = det.spec;
p = det.p
} ;
}

View File

@@ -20,7 +20,7 @@ oper
NFSgDefNom => base+"úň" ;
NFPlCount => base+"ŕ" ;
NFVocative => base+"ĺ"
} ;
} ;
rel = \\_ => base ; relPost = False ;
g = AMasc NonHuman ;
lock_N = <>
@@ -33,7 +33,7 @@ oper
(v0+"ĺ"+v1+"îâĺ")
(v0+"˙"+v1+"ŕ")
(v0+"˙"+v1)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -46,7 +46,7 @@ oper
(v0+"ĺ"+v1+"îâĺ")
(v0+"˙"+v1+"ŕ")
(v0+"˙"+v1)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -59,7 +59,7 @@ oper
(v0+"úđ"+v1+"îâĺ")
(v0+"úđ"+v1+"ŕ")
(v0+"đú"+v1)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -71,7 +71,7 @@ oper
(v0+"ĺňđîâĺ")
(v0+"˙ňúđŕ")
(v0+"ĺňđĺ")
g;
g;
rel = \\_ => base; relPost = False;
g = g ;
lock_N = <>
@@ -83,7 +83,7 @@ oper
(v0+"îâĺ")
(v0+"ŕ")
(v0)
g;
g;
rel = \\_ => base; relPost = False;
g = g ;
lock_N = <>
@@ -95,7 +95,7 @@ oper
(v0+"îâĺ")
(v0+"ŕ")
(v0)
g;
g;
rel = \\_ => base; relPost = False;
g = g ;
lock_N = <>
@@ -109,7 +109,7 @@ oper
NFSgDefNom => base+"úň" ;
NFPlCount => base+"ŕ" ;
NFVocative => base+"ĺ"
} ;
} ;
rel = \\_ => base; relPost = False;
g = AMasc NonHuman;
lock_N = <>
@@ -121,7 +121,7 @@ oper
(v0+"č")
(v0+"ŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base; relPost = False;
g = g ;
lock_N = <>
@@ -135,7 +135,7 @@ oper
NFSgDefNom => base+"úň" ;
NFPlCount => base+"č" ;
NFVocative => base+"ĺ"
} ;
} ;
rel = (mkA078 (base+"ńęč")).s; relPost = False;
g = AMasc Human ;
lock_N = <>
@@ -148,7 +148,7 @@ oper
(v0+v1+"č")
(v0+"ĺ"+v1+"ŕ")
(v0+"ĺ"+v1+"î")
g ;
g ;
rel = \\_ => base; relPost = False;
g = g ;
lock_N = <>
@@ -161,7 +161,7 @@ oper
(v0+v1+"č")
(v0+"ĺ"+v1+"ŕ")
(v0+"ĺ"+v1+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -174,7 +174,7 @@ oper
(v0+v1+"č")
(v0+"ĺ"+v1+"ŕ")
(v0+v1+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -186,7 +186,7 @@ oper
(v0+"öč")
(v0+"öč")
(v0+"ĺöî")
g ;
g ;
rel = (mkA078 (v0+"ńęč")).s ; relPost = False;
g = g ;
lock_N = <>
@@ -199,7 +199,7 @@ oper
(v0+v1+"č")
(v0+"ú"+v1+"ŕ")
(v0+v1+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -211,7 +211,7 @@ oper
(v0+"đîâĺ")
(v0+"úđŕ")
(v0+"đĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -223,7 +223,7 @@ oper
(v0+"đč")
(v0+"đŕ")
(v0+"đĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -239,7 +239,7 @@ oper
NFSgDefNom => v0+"ěúň" ;
NFPlCount => v0+"ěŕ" ;
NFVocative => v0+"ěĺ"
} ;
} ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -251,7 +251,7 @@ oper
(v0+"úđöč")
(v0+"úđöč")
(v0+"úđęî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -263,7 +263,7 @@ oper
(v0+"éöč")
(v0+"éöč")
(v0+"ĺöî")
g ;
g ;
rel = (mkA078 (base+"éńęč")).s; relPost = False;
g = g ;
lock_N = <>
@@ -275,7 +275,7 @@ oper
(v0+"öč")
(v0+"ęŕ")
(v0+"ę")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -287,7 +287,7 @@ oper
(v0+"öč")
(v0+"ęŕ")
(v0+"ęî")
g ;
g ;
rel = (mkA078 (v0+"÷ĺńęč")).s; relPost = False;
g = g ;
lock_N = <>
@@ -299,7 +299,7 @@ oper
(v0+"çč")
(v0+"ăŕ")
(v0+"çĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -311,7 +311,7 @@ oper
(v0+"çč")
(v0+"ăŕ")
(v0+"çĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -323,7 +323,7 @@ oper
(v0+"ńč")
(v0+"őŕ")
(v0+"őî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -335,7 +335,7 @@ oper
(v0+"ńč")
(v0+"őŕ")
(v0+"ńĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -347,7 +347,7 @@ oper
(v0+"íč")
(v0+"ęŕ")
(v0+"ęî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -359,7 +359,7 @@ oper
(v0+"č")
(v0+"č")
(v0+"číĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -372,7 +372,7 @@ oper
(v0+"č")
(v0+"č")
(v0+"č"+v1+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -384,7 +384,7 @@ oper
(v0+"öč")
(v0+"öč")
(v0+"ęî")
g ;
g ;
rel = (mkA078 (v0+"ńęč")).s; relPost = False;
g = g ;
lock_N = <>
@@ -396,7 +396,7 @@ oper
(v0+"éöč")
(v0+"ĺęŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -409,7 +409,7 @@ oper
(v0+"ú"+v1+"öč")
(v0+"ú"+v1+"öč")
(v0+v1+"ĺöî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -421,7 +421,7 @@ oper
(v0+"öč")
(v0+"öč")
(v0+"÷číî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -433,7 +433,7 @@ oper
(v0+"ŕ")
(v0+"ŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -445,7 +445,7 @@ oper
(v0+"ŕ")
(v0+"ŕ")
(v0+"číĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -457,7 +457,7 @@ oper
(v0+"çĺ")
(v0+"çĺ")
(v0+"ćĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -469,7 +469,7 @@ oper
(v0+"ĺ")
(v0+"ĺ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -481,7 +481,7 @@ oper
(v0+"˙")
(v0+"˙")
(v0+"ĺ")
g ;
g ;
rel = (mkA078 (base+"ńęč")).s; relPost = False;
g = g ;
lock_N = <>
@@ -493,7 +493,7 @@ oper
(v0+"čëčůŕ")
(v0+"čëčůŕ")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -505,7 +505,7 @@ oper
(v0+"îâöĺ")
(v0+"ĺöŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -517,7 +517,7 @@ oper
(v0+"ĺâĺ")
(v0+"˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -529,7 +529,7 @@ oper
(v0+"éîâĺ")
(v0+"˙")
(v0+"éî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -541,7 +541,7 @@ oper
(v0+"üîâĺ")
(v0+"üîâĺ")
(v0+"ęî")
g ;
g ;
rel = (mkA078 (base+"ńęč")).s; relPost = False;
g = g ;
lock_N = <>
@@ -553,7 +553,7 @@ oper
(v0+"íüîâĺ")
(v0+"úí˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -565,7 +565,7 @@ oper
(v0+"č")
(v0+"˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -577,7 +577,7 @@ oper
(v0+"č")
(v0+"˙")
(v0+"ţ")
g ;
g ;
rel = (mkA078 (base+"ńęč")).s ; relPost = False ;
g = g ;
lock_N = <>
@@ -590,7 +590,7 @@ oper
(v1+"č")
(v1+"˙")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -602,7 +602,7 @@ oper
(v0+"č")
(v0+"˙")
(v0+"ţ")
g ;
g ;
rel = (mkA078 (base+"ńęč")).s ; relPost = False ;
g = g ;
lock_N = <>
@@ -614,7 +614,7 @@ oper
(v0+"íč")
(v0+"ĺíŕ")
(v0+"ĺíĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -626,7 +626,7 @@ oper
(v0+"ňč")
(v0+"úň˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -638,7 +638,7 @@ oper
(v0+"ĺ")
(v0+"˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -650,7 +650,7 @@ oper
(v0+"ĺ")
(v0+"˙")
(v0+"ţ")
g ;
g ;
rel = (mkA078 (base+"ńęč")).s ; relPost = False ;
g = g ;
lock_N = <>
@@ -662,7 +662,7 @@ oper
(v0+"čůŕ")
(v0+"˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -674,7 +674,7 @@ oper
(v0+"čůŕ")
(v0+"˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -686,7 +686,8 @@ oper
(v0+"č")
(v0+"č")
(v0+"ŕ")
g ;
g ;
rel = (mkAdjective base (base+"ňŕ") (base+"ňŕ") base (base+"ňŕ") base (base+"ňŕ") (v0+"č") (v0+"čňĺ")).s ;
relPost = False ;
g = g ;
lock_N = <>
@@ -698,7 +699,7 @@ oper
(v0+"č")
(v0+"č")
(v0+"éo")
g ;
g ;
rel = (mkA078 (v0+"éńęč")).s ; relPost = False ;
g = g ;
lock_N = <>
@@ -710,7 +711,7 @@ oper
(v0+"îâöč")
(v0+"îâöč")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -722,7 +723,7 @@ oper
(v0+"č")
(v0+"ŕ")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -734,7 +735,7 @@ oper
(v0+"č")
(v0+"č")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -746,7 +747,7 @@ oper
(v0+"č")
(v0+"č")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -758,7 +759,7 @@ oper
(v0+"č")
(v0+"č")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -770,7 +771,7 @@ oper
(v0)
(v0)
(v0)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -783,7 +784,7 @@ oper
(v0+"ĺ"+v1+"č")
(v0+"ĺ"+v1+"č")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -796,7 +797,7 @@ oper
(v0+"ĺ"+v1+"ęč")
(v0+"ĺ"+v1+"ęč")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -808,7 +809,7 @@ oper
(v0+"ĺ")
(v0+"ĺ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -820,7 +821,7 @@ oper
(v0+"öĺ")
(v0+"öĺ")
(v0+"ęŕ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -832,7 +833,7 @@ oper
(v0+"çĺ")
(v0+"çĺ")
(v0+"ăŕ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -844,7 +845,7 @@ oper
(v0+"č")
(v0+"č")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -856,7 +857,7 @@ oper
(v0+"ĺ")
(v0+"ĺ")
(v0+"üî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -868,7 +869,7 @@ oper
(v0+"č")
(v0+"č")
(v0)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -880,7 +881,7 @@ oper
(v0+"íč")
(v0+"íč")
(v0+"ĺí")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -893,7 +894,7 @@ oper
(v0+v1+"č")
(v0+v1+"č")
(v0+"ú"+v1)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -905,7 +906,7 @@ oper
(v0+"˙ëîńňč")
(v0+"˙ëîńňč")
(v0+"˙ëîńň")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -917,7 +918,7 @@ oper
(v0+"˙đíîńňč")
(v0+"˙đíîńňč")
(v0+"˙đíîńň")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -930,7 +931,7 @@ oper
(v0+"úđ"+v1+"č")
(v0+"úđ"+v1+"č")
(v0+"đú"+v1)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -942,7 +943,7 @@ oper
(v0+"ŕ")
(v0+"ŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -954,7 +955,7 @@ oper
(v0+"ŕ")
(v0+"ŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -966,7 +967,7 @@ oper
(v0+"ŕ")
(v0+"ŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -979,7 +980,7 @@ oper
(v0+"ĺ"+v1+"ŕ")
(v0+"ĺ"+v1+"ŕ")
(v0+"˙"+v1+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -991,7 +992,7 @@ oper
(v0+"ĺńňŕ")
(v0+"ĺńňŕ")
(v0+"˙ńňî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1003,7 +1004,7 @@ oper
(v0+"ĺíŕ")
(v0+"ĺíŕ")
(v0+"˙íî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1015,7 +1016,7 @@ oper
(v0+"ĺíĺ")
(v0+"ĺíĺ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1027,7 +1028,7 @@ oper
(v0+"ĺńŕ")
(v0+"ĺńŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1039,7 +1040,7 @@ oper
(v0+"ŕ")
(v0+"ŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1051,7 +1052,7 @@ oper
(v0+"č")
(v0+"č")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1063,7 +1064,7 @@ oper
(v0+"÷č")
(v0+"÷č")
(v0+"ęî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1075,7 +1076,7 @@ oper
(v0+"řč")
(v0+"řč")
(v0+"őî")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g;
lock_N = <>
@@ -1087,7 +1088,7 @@ oper
(v0+"ňŕ")
(v0+"ňŕ")
(v0)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1099,7 +1100,7 @@ oper
(v0+"ŕ")
(v0+"ŕ")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1111,7 +1112,7 @@ oper
(v0+"öŕ")
(v0+"öŕ")
(v0+"ňĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1123,7 +1124,7 @@ oper
(v0+"˙")
(v0+"˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1135,7 +1136,7 @@ oper
(v0+"íŕ")
(v0+"íŕ")
(v0)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1147,7 +1148,7 @@ oper
(v0+"ńŕ")
(v0+"ńŕ")
(v0)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1159,7 +1160,7 @@ oper
(v0+"č˙")
(v0+"č˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1171,7 +1172,7 @@ oper
(v0+"˙")
(v0+"˙")
(v0+"ĺ")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1183,7 +1184,7 @@ oper
(v0+"ňŕ")
(v0+"ňŕ")
(v0)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1197,7 +1198,7 @@ oper
NFSgDefNom => v0 ;
NFPlCount => v0 ;
NFVocative => v0
} ;
} ;
rel = \\_ => base ; relPost = False ;
g = ANeut ;
lock_N = <>
@@ -1211,7 +1212,7 @@ oper
NFSgDefNom => Prelude.nonExist ;
NFPlCount => v0 ;
NFVocative => v0
} ;
} ;
rel = \\_ => base ; relPost = False ;
g = ANeut ;
lock_N = <>
@@ -1223,7 +1224,7 @@ oper
(v0+"ĺňŕ")
(v0+"ĺňŕ")
(v0+"î")
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>
@@ -1235,7 +1236,7 @@ oper
nonExist
nonExist
(v0)
g ;
g ;
rel = \\_ => base ; relPost = False ;
g = g ;
lock_N = <>

View File

@@ -19,7 +19,7 @@ concrete PhraseBul of Phrase = CatBul ** open Prelude, ResBul in {
UttAdv adv = adv ;
UttCN n = {s = n.s ! NF Sg Indef} ;
UttCard n = {s = n.s ! CFNeut Indef} ;
UttAP ap = {s = ap.s ! ASg Masc Indef} ;
UttAP ap = {s = ap.s ! ASg Masc Indef ! P3} ;
UttInterj i = i ;
NoPConj = {s = []} ;

View File

@@ -26,7 +26,7 @@ concrete RelativeBul of Relative = CatBul ** open ResBul in {
} ;
FunRP p np rp = {
s = \\gn => np.s ! RObj Acc ++ p.s ++ (case p.c of {Acc => []; Dat => "íà"}) ++ rp.s ! gn ;
s = \\gn => np.s ! RObj Acc ++ p.s ++ (case p.c of {Acc => []; Dat => "íà"; WithPrep => with_Word}) ++ rp.s ! gn ;
} ;
IdRP = {

View File

@@ -22,7 +22,7 @@ resource ResBul = ParamX ** open Prelude, Predef in {
param
Role = RSubj | RObj Case | RVoc ;
Case = Acc | Dat;
Case = Acc | Dat | WithPrep ;
NForm =
NF Number Species
@@ -73,7 +73,7 @@ resource ResBul = ParamX ** open Prelude, Predef in {
| VPhrasal Case
;
VVType = VVInf | VVGerund ;
VVType = VVInf Aspect | VVGerund ;
-- The order of sentence is needed already in $VP$.
@@ -227,7 +227,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
ad : {isEmpty : Bool; s : Str} ; -- sentential adverb
compl : Agr => Str ;
vtype : VType ;
p : Polarity
p : Polarity ;
isSimple : Bool -- regulates the place of participle used as adjective
} ;
VPSlash = {
@@ -237,7 +238,9 @@ resource ResBul = ParamX ** open Prelude, Predef in {
compl2 : Agr => Str ;
vtype : VType ;
p : Polarity ;
c2 : Preposition
c2 : Preposition ;
isSimple : Bool ; -- regulates the place of participle used as adjective
subjCtrl : Bool -- the second complement agrees with the subject or with the first complement
} ;
predV : Verb -> VP = \verb -> {
@@ -245,10 +248,11 @@ resource ResBul = ParamX ** open Prelude, Predef in {
ad = {isEmpty=True; s=[]} ;
compl = \\_ => [] ;
vtype = verb.vtype ;
p = Pos
p = Pos ;
isSimple = True
} ;
slashV : Verb -> Preposition -> VPSlash = \verb,prep -> {
slashV : Verb -> Preposition -> Bool -> VPSlash = \verb,prep,subjCtrl -> {
s = verb.s ;
ad = {isEmpty=True; s=[]} ;
compl1 = \\_ => [] ;
@@ -256,6 +260,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
vtype = verb.vtype ;
p = Pos ;
c2 = prep ;
isSimple = True ;
subjCtrl = subjCtrl
} ;
insertObj : (Agr => Str) -> Polarity -> VP -> VP = \obj,p,vp -> {
@@ -266,7 +272,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
p = case p of {
Neg => Neg;
_ => vp.p
}
} ;
isSimple = False
} ;
insertSlashObj1 : (Agr => Str) -> Polarity -> VPSlash -> VPSlash = \obj,p,slash -> {
@@ -279,7 +286,9 @@ resource ResBul = ParamX ** open Prelude, Predef in {
Neg => Neg ;
Pos => slash.p
} ;
c2 = slash.c2
c2 = slash.c2 ;
isSimple = False ;
subjCtrl = slash.subjCtrl
} ;
insertSlashObj2 : (Agr => Str) -> Polarity -> VPSlash -> VPSlash = \obj,p,slash -> {
@@ -292,7 +301,9 @@ resource ResBul = ParamX ** open Prelude, Predef in {
Neg => Neg ;
Pos => slash.p
} ;
c2 = slash.c2
c2 = slash.c2 ;
isSimple = False ;
subjCtrl = slash.subjCtrl
} ;
auxBe : VTable =
@@ -319,7 +330,7 @@ resource ResBul = ParamX ** open Prelude, Predef in {
VPresPart aform => regAdjective "áúäåù" ! aform ;
VImperative Sg => "áúäè" ;
VImperative Pl => "áúäåòå" ;
VNoun _ => "";
VNoun _ => "áúäåíå";
VGerund => "áèäåéêè"
} ;
@@ -331,11 +342,11 @@ resource ResBul = ParamX ** open Prelude, Predef in {
VPres Pl P1 => "áúäåì" ;
VPres Pl P2 => "áúäåòå" ;
VPres Pl P3 => "áúäàò" ;
VAorist Sg P1 => "áèõ" ;
VAorist Sg _ => "áè" ;
VAorist Pl P1 => "áèõìå" ;
VAorist Pl P2 => "áèõòå" ;
VAorist Pl P3 => "áèõà" ;
VAorist Sg P1 => "áÿõ" ;
VAorist Sg _ => "áåøå" ;
VAorist Pl P1 => "áÿõìå" ;
VAorist Pl P2 => "áÿõòå" ;
VAorist Pl P3 => "áÿõà" ;
VImperfect Sg P1 => "áúäåõ" ;
VImperfect Sg _ => "áúäåøå" ;
VImperfect Pl P1 => "áúäåõìå" ;
@@ -347,49 +358,77 @@ resource ResBul = ParamX ** open Prelude, Predef in {
VPresPart aform => regAdjective "áúäåù" ! aform ;
VImperative Sg => "áúäè" ;
VImperative Pl => "áúäåòå" ;
VNoun _ => "";
VNoun _ => "áúäåíå";
VGerund => "áúäåéêè"
} ;
verbBe : Verb = {s=\\_=>auxBe ; vtype=VNormal} ;
verbWould : Verb = {s=\\_=>auxWould ; vtype=VNormal} ;
auxCond : Number => Person => Str =
table {
Sg => table {
P1 => "áèõ" ;
_ => "áè"
} ;
Pl => table {
P1 => "áèõìå" ;
P2 => "áèõòå" ;
P3 => "áèõà"
}
} ;
reflClitics : Case => Str = table {Acc => "ñå"; Dat => "ñè"} ;
verbBe : Verb = {s=table Aspect [auxBe; auxWould] ; vtype=VNormal} ;
reflClitics : Case => Str = table {Acc => "ñå"; Dat => "ñè"; WithPrep => with_Word ++ "ñåáå ñè"} ;
personalClitics : Case => GenNum => Person => Str =
table {
Acc => table {
GSg g => table {
P1 => "ìå" ;
P2 => "òå" ;
P3 => case g of {
Masc => "ãî" ;
Fem => "ÿ" ;
Neut => "ãî"
}
} ;
GPl => table {
P1 => "íè" ;
P2 => "âè" ;
P3 => "ãè"
}
} ;
Dat => table {
GSg g => table {
P1 => "ìè" ;
P2 => "òè" ;
P3 => case g of {
Masc => "ìó" ;
Fem => "é" ;
Neut => "ìó"
}
} ;
GPl => table {
P1 => "íè" ;
P2 => "âè" ;
P3 => "èì"
}
}
Acc => table {
GSg g => table {
P1 => "ìå" ;
P2 => "òå" ;
P3 => case g of {
Masc => "ãî" ;
Fem => "ÿ" ;
Neut => "ãî"
}
} ;
GPl => table {
P1 => "íè" ;
P2 => "âè" ;
P3 => "ãè"
}
} ;
Dat => table {
GSg g => table {
P1 => "ìè" ;
P2 => "òè" ;
P3 => case g of {
Masc => "ìó" ;
Fem => "é" ;
Neut => "ìó"
}
} ;
GPl => table {
P1 => "íè" ;
P2 => "âè" ;
P3 => "èì"
}
} ;
WithPrep => table {
GSg g => table {
P1 => with_Word ++ "ìåí" ;
P2 => with_Word ++ "òåá" ;
P3 => case g of {
Masc => with_Word ++ "íåãî" ;
Fem => with_Word ++ "íåÿ" ;
Neut => with_Word ++ "íåãî"
}
} ;
GPl => table {
P1 => with_Word ++ "íàñ" ;
P2 => with_Word ++ "âàñ" ;
P3 => with_Word ++ "òÿõ"
}
}
} ;
ia2e : Str -> Str = -- to be used when the next syllable has vowel different from "à","ú","î" or "ó"
@@ -460,7 +499,7 @@ resource ResBul = ParamX ** open Prelude, Predef in {
auxPres = auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
auxAorist = auxBe ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
auxCond = auxWould ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
auxCondS = auxCond ! numGenNum clitic.agr.gn ! clitic.agr.p ;
apc : Str -> Str = \s ->
case <numGenNum clitic.agr.gn, clitic.agr.p> of {
@@ -510,7 +549,7 @@ resource ResBul = ParamX ** open Prelude, Predef in {
<Past,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
<Fut, Simul> => {aux=vf3 clitic.s; main=present} ; --# notpresent
<Fut, Anter> => {aux=vf3 (apc []); main=perfect} ; --# notpresent
<Cond,_ > => {aux=vf4 auxCond ; main=perfect} --# notpresent
<Cond,_ > => {aux=vf4 auxCondS; main=perfect} --# notpresent
}
in verb.ad.s ++ li0 ++ verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ;
@@ -543,6 +582,9 @@ resource ResBul = ParamX ** open Prelude, Predef in {
vp.s ! Imperf ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ++ clitic.s ++
vp.compl ! agr ;
linrefPrep : {s:Str; c:Case} -> Str =
\p -> case p.c of {Acc=>""; Dat=>"íà"; WithPrep=>with_Word} ++ p.s ;
gerund : VP -> Aspect => Agr => Str =
\vp -> \\asp,agr =>
let clitic = case vp.vtype of {
@@ -640,14 +682,20 @@ resource ResBul = ParamX ** open Prelude, Predef in {
mkIP : Str -> Str -> GenNum -> {s : Role => QForm => Str ; gn : GenNum} =
\koi,kogo,gn -> {
s = table {
RSubj => table QForm [koi; koi+"òî"] ;
RObj Acc => table QForm [kogo; kogo+"òî"] ;
RObj Dat => table QForm ["íà" ++ kogo; kogo+"òî"] ;
RVoc => table QForm [koi; koi+"òî"]
RSubj => table QForm [koi; koi+"òî"] ;
RObj Acc => table QForm [kogo; kogo+"òî"] ;
RObj Dat => table QForm ["íà" ++ kogo; "íà" ++ kogo+"òî"] ;
RObj WithPrep => table QForm [with_Word ++ kogo; with_Word ++ kogo+"òî"] ;
RVoc => table QForm [koi; koi+"òî"]
} ;
gn = gn
} ;
with_Word : Str
= pre { "ñ" ;
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
} ;
mkPron : (az,men,me,mi,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite : Str) ->
GenNum -> Person -> {s : Role => Str;
clit : Case => Str;
@@ -656,14 +704,16 @@ resource ResBul = ParamX ** open Prelude, Predef in {
} =
\az,men,me,mi,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite,gn,p -> {
s = table {
RSubj => az ;
RObj Acc => men ;
RObj Dat => "íà" ++ men ;
RVoc => az
RSubj => az ;
RObj Acc => men ;
RObj Dat => "íà" ++ men ;
RObj WithPrep => with_Word ++ men ;
RVoc => az
} ;
clit = table {
Acc => me;
Dat => mi
Acc => me;
Dat => mi;
WithPrep => with_Word ++ men
} ;
gen = table {
ASg Masc Indef => moj ;
@@ -685,10 +735,11 @@ resource ResBul = ParamX ** open Prelude, Predef in {
mkNP : Str -> GenNum -> Person -> Polarity -> {s : Role => Str; a : Agr; p : Polarity} =
\s,gn,p,pol -> {
s = table {
RSubj => s ;
RObj Acc => s ;
RObj Dat => "íà" ++ s ;
RVoc => s
RSubj => s ;
RObj Acc => s ;
RObj Dat => "íà" ++ s ;
RObj WithPrep => with_Word ++ s ;
RVoc => s
} ;
a = {
gn = gn ;
@@ -735,12 +786,25 @@ resource ResBul = ParamX ** open Prelude, Predef in {
GPl => "òåçè"
} ;
linCoord : Ints 2 => Str ;
linCoord = table {0 => "è"; 1=>"èëè"; 2=>"íèòî"} ;
linCoord : Ints 3 => Str ;
linCoord = table {0 => "è"; 1=>"èëè"; 2=>"íèòî"; 3=>"íî"} ;
linCoordSep : Str -> Bool => Ints 2 => Str ;
linCoordSep : Str -> Bool => Ints 3 => Str ;
linCoordSep s = table {True => linCoord; False=> \\_ => s} ;
comma : Str = SOFT_BIND ++ "," ;
hyphen : Str = SOFT_BIND ++ "-" ++ SOFT_BIND ;
reflPron : AForm => Str =
table {
ASg Masc Indef => "ñâîé" ;
ASg Masc Def => "ñâîÿ" ;
ASgMascDefNom => "ñâîÿò" ;
ASg Fem Indef => "ñâîÿ" ;
ASg Fem Def => "ñâîÿòà" ;
ASg Neut Indef => "ñâîå" ;
ASg Neut Def => "ñâîåòî" ;
APl Indef => "ñâîè" ;
APl Def => "ñâîèòå"
} ;
}

View File

@@ -11,20 +11,21 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
VMedial _ => RSubj ;
VPhrasal c => RObj c})) np.a np.p vp ;
PredSCVP sc vp = mkClause sc.s {gn=GSg Masc; p=P3} Pos vp ;
PredSCVP sc vp = let agr = {gn=GSg Masc; p=P3} in mkClause (sc.s ! agr) agr Pos vp ;
ImpVP vp = {
s = \\p,gn =>
let agr = {gn = gn ; p = P2} ;
verb = vp.s ! Perf ! VImperative (numGenNum gn) ;
verb : Aspect -> Str
= \asp -> vp.s ! asp ! VImperative (numGenNum gn) ;
compl = vp.compl ! agr ;
clitic = case vp.vtype of {
VNormal => [] ;
VMedial c => reflClitics ! c ;
VPhrasal c => personalClitics ! c ! agr.gn ! agr.p
} ;
in case p of {Pos => vp.ad.s ++ verb ++ clitic ;
Neg => "íå" ++ vp.ad.s ++ clitic ++ verb} ++ compl ;
VNormal => [] ;
VMedial c => reflClitics ! c ;
VPhrasal c => personalClitics ! c ! agr.gn ! agr.p
} ;
in case p of {Pos => vp.ad.s ++ verb Perf ++ clitic ;
Neg => "íå" ++ vp.ad.s ++ clitic ++ verb Imperf} ++ compl ;
} ;
SlashVP np slash = {
@@ -32,7 +33,8 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
ad = slash.ad ;
compl = \\_ => slash.compl1 ! np.a ++ slash.compl2 ! agr ;
vtype = slash.vtype ;
p = Pos}).s ;
p = Pos ;
isSimple = slash.isSimple}).s ;
c2 = slash.c2
} ;
@@ -49,9 +51,9 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
c2 = slash.c2
} ;
EmbedS s = {s = comma ++ "֌" ++ s.s} ;
EmbedQS qs = {s = qs.s ! QIndir} ;
EmbedVP vp = {s = daComplex Simul Pos vp ! Perf ! {gn=GSg Masc; p=P1}} ;
EmbedS s = {s = \\_ => "֌" ++ s.s} ;
EmbedQS qs = {s = \\_ => qs.s ! QIndir} ;
EmbedVP vp = {s = \\agr => daComplex Simul Pos vp ! Perf ! agr} ;
UseCl t p cl = {
s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! Main

View File

@@ -13,7 +13,7 @@ concrete StructuralBul of Structural = CatBul **
almost_AdA, almost_AdN = ss "ïî÷òè" ;
at_least_AdN, at_most_AdN = ss "ïî÷òè" ; ---- AR
although_Subj = ss ["âúïðåêè ÷å"] ;
always_AdV = ss "âèíàãè" ;
always_AdV = mkAdV "âèíàãè" ;
and_Conj = {s=[]; conj=0; distr=False; n = Pl} ;
because_Subj = ss "çàùîòî" ;
before_Prep = mkPrep "ïðåäè" Acc ;
@@ -116,9 +116,7 @@ concrete StructuralBul of Structural = CatBul **
whoPl_IP = mkIP "êîè" "êîè" GPl ;
why_IAdv = mkIAdv "çàùî" ;
without_Prep = mkPrep "áåç" Acc ;
with_Prep = mkPrep (pre { "ñ" ;
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
}) Acc ;
with_Prep = mkPrep "" WithPrep ;
yes_Utt = ss "äà" ;
youSg_Pron = mkPron "òè" "òåá" "òå" "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Masc) P2 ;
youPl_Pron = mkPron "âèå" "âàñ" "âè" "âè" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl P2 ;

View File

@@ -8,18 +8,18 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
lin
UseV = predV ;
SlashV2a v = slashV v v.c2 ;
SlashV2a v = slashV v v.c2 False ;
Slash2V3 v np =
insertSlashObj1 (\\_ => v.c2.s ++ np.s ! RObj v.c2.c) np.p (slashV v v.c3) ;
insertSlashObj1 (\\_ => v.c2.s ++ np.s ! RObj v.c2.c) np.p (slashV v v.c3 False) ;
Slash3V3 v np =
insertSlashObj2 (\\_ => v.c3.s ++ np.s ! RObj v.c3.c) np.p (slashV v v.c2) ;
insertSlashObj2 (\\_ => v.c3.s ++ np.s ! RObj v.c3.c) np.p (slashV v v.c2 False) ;
ComplVV vv vp =
insertObj (case vv.typ of {
VVInf => daComplex Simul Pos vp ! Perf;
VVGerund => gerund vp ! Imperf
VVInf asp => daComplex Simul Pos vp ! asp;
VVGerund => gerund vp ! Imperf
}) vp.p
(predV vv) ;
@@ -27,31 +27,33 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
ComplVQ v q = insertObj (\\_ => q.s ! QDir) Pos (predV v) ;
ComplVA v ap =
insertObj (\\agr => ap.s ! aform agr.gn Indef (RObj Acc)) Pos (predV v) ;
insertObj (\\agr => ap.s ! aform agr.gn Indef (RObj Acc) ! agr.p) Pos (predV v) ;
SlashV2A v ap =
insertSlashObj2 (\\a => ap.s ! aform a.gn Indef (RObj Acc)) Pos (slashV v v.c2) ;
insertSlashObj2 (\\a => v.c3.s ++ ap.s ! aform a.gn Indef (RObj Acc) ! a.p) Pos (slashV v v.c2 v.subjCtrl) ;
-- test: I saw a boy to whom she said that they are here
SlashV2S v s = insertSlashObj2 (\\_ => comma ++ "֌" ++ s.s) Pos (slashV v v.c2) ;
SlashV2S v s = insertSlashObj2 (\\_ => comma ++ "֌" ++ s.s) Pos (slashV v v.c2 False) ;
-- test: I saw a boy whom she asked who is here
SlashV2Q v q = insertSlashObj2 (\\_ => q.s ! QDir) Pos (slashV v v.c2) ;
SlashV2Q v q = insertSlashObj2 (\\_ => q.s ! QDir) Pos (slashV v v.c2 False) ;
-- test: I saw a boy whom she begged to walk
SlashV2V vv vp =
insertSlashObj2 (\\agr => vv.c3.s ++ daComplex Simul vp.p vp ! Perf ! agr) Pos (slashV vv vv.c2) ;
insertSlashObj2 (\\agr => vv.c3.s ++ daComplex Simul vp.p vp ! Perf ! agr) Pos (slashV vv vv.c2 vv.subjCtrl) ;
-- test: I saw a car whom she wanted to buy
SlashVV vv slash = {
s = vv.s ;
ad = {isEmpty=True; s=[]};
compl1 = daComplex Simul Pos {s=slash.s; ad=slash.ad; compl=slash.compl1; vtype=slash.vtype; p = Pos} ! Perf ;
compl1 = daComplex Simul Pos {s=slash.s; ad=slash.ad; compl=slash.compl1; vtype=slash.vtype; p = Pos; isSimple = slash.isSimple} ! Perf ;
compl2 = slash.compl2 ;
vtype = vv.vtype ;
p = slash.p ;
c2 = slash.c2
c2 = slash.c2 ;
isSimple = False ;
subjCtrl = slash.subjCtrl
} ;
-- test: I saw a car whom she begged me to buy
@@ -59,19 +61,23 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
s = vv.s ;
ad = {isEmpty=True; s=[]};
compl1 = \\agr => vv.c2.s ++ np.s ! RObj vv.c2.c ++
daComplex Simul np.p {s=slash.s; ad=slash.ad; compl=slash.compl1; vtype=slash.vtype; p=Pos} ! Perf ! np.a ;
daComplex Simul np.p {s=slash.s; ad=slash.ad; compl=slash.compl1; vtype=slash.vtype; p=Pos; isSimple = slash.isSimple} ! Perf ! np.a ;
compl2 = slash.compl2 ;
vtype = vv.vtype ;
p = Pos ;
c2 = slash.c2
c2 = slash.c2 ;
isSimple = False ;
subjCtrl = slash.subjCtrl
} ;
ComplSlash slash np = {
s = slash.s ;
ad = slash.ad ;
compl = \\a => slash.compl1 ! a ++ slash.c2.s ++ np.s ! RObj slash.c2.c ++ slash.compl2 ! np.a ;
compl = \\a => let a2 = case slash.subjCtrl of {True => a; False => np.a}
in slash.compl1 ! a ++ slash.c2.s ++ np.s ! RObj slash.c2.c ++ slash.compl2 ! a2 ;
vtype = slash.vtype ;
p = orPol np.p slash.p
p = orPol np.p slash.p ;
isSimple = False
} ;
UseComp comp = insertObj comp.s comp.p (predV verbBe) ;
@@ -88,7 +94,8 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
ad = {isEmpty=False; s=vp.ad.s ++ adv.s} ;
compl = vp.compl ;
vtype = vp.vtype ;
p = vp.p
p = orPol adv.p vp.p ;
isSimple = vp.isSimple
} ;
AdVVPSlash adv vp = {
s = vp.s ;
@@ -97,7 +104,9 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
compl2 = vp.compl2 ;
vtype = vp.vtype ;
p = vp.p ;
c2 = vp.c2
c2 = vp.c2 ;
isSimple = vp.isSimple ;
subjCtrl = vp.subjCtrl
} ;
ReflVP slash = {
@@ -105,16 +114,17 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
ad = slash.ad ;
compl = \\agr => slash.compl1 ! agr ++ slash.compl2 ! agr ;
vtype = VMedial slash.c2.c ;
p = slash.p
p = slash.p ;
isSimple = slash.isSimple
} ;
PassV2 v = insertObj (\\a => v.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc))) Pos (predV verbBe) ;
CompAP ap = {s = \\agr => ap.s ! aform agr.gn Indef (RObj Acc); p = Pos} ;
CompAP ap = {s = \\agr => ap.s ! aform agr.gn Indef (RObj Acc) ! agr.p; p = Pos} ;
CompNP np = {s = \\_ => np.s ! RObj Acc; p = np.p} ;
CompAdv a = {s = \\_ => a.s; p = Pos} ;
CompCN cn = {s = \\agr => cn.s ! (NF (numGenNum agr.gn) Indef); p = Pos} ;
VPSlashPrep vp prep = vp ** {c2 = prep ; compl1 = vp.compl ; compl2 = \\_ => []} ; ---- AR
VPSlashPrep vp prep = vp ** {c2 = prep ; compl1 = vp.compl ; compl2 = \\_ => []; subjCtrl = False} ;
}

View File

@@ -14,7 +14,7 @@ concrete AdjectiveChi of Adjective = CatChi ** open ResChi, Prelude in {
-- CAdvAP ad ap np = complexAP (ap.s ++ ad.s ++ ad.p ++ np.s) ;
CAdvAP ad ap np = complexAP (ad.s++ np.s++ad.p++ap.s ) ; --modified by ChenPeng 11.24
ComplA2 a np = complexAP (a.s ++ appPrep a.c2 np.s) ;
ComplA2 a np = complexAP (appPrep a.c2 np.s ++ a.s) ;
ReflA2 a = complexAP (a.s ++ appPrep a.c2 reflPron) ;

View File

@@ -1,105 +0,0 @@
abstract Chunk = Cat, Symbol [Symb], Extensions [VPS,VPI] ** {
cat
Chunks ;
Chunk ;
VC ;
fun
OneChunk : Chunk -> Chunks ;
PlusChunk : Chunk -> Chunks -> Chunks ;
ChunkPhr : Chunks -> Phr ;
fun
AP_Chunk : AP -> Chunk ;
AdA_Chunk : AdA -> Chunk ;
Adv_Chunk : Adv -> Chunk ;
AdV_Chunk : AdV -> Chunk ;
AdN_Chunk : AdN -> Chunk ;
S_Chunk : S -> Chunk ;
SSlash_Chunk : SSlash -> Chunk ;
QS_Chunk : QS -> Chunk ;
CN_Pl_Chunk : CN -> Chunk ;
CN_Sg_Chunk : CN -> Chunk ;
CN_Pl_Gen_Chunk : CN -> Chunk ;
CN_Sg_Gen_Chunk : CN -> Chunk ;
Conj_Chunk : Conj -> Chunk ;
Det_Chunk : Det -> Chunk ; -- needed if article form is different from NP form, e.g. English a/an
IAdv_Chunk : IAdv -> Chunk ;
IP_Chunk : IP -> Chunk ;
NP_Nom_Chunk : NP -> Chunk ;
NP_Acc_Chunk : NP -> Chunk ;
NP_Gen_Chunk : NP -> Chunk ;
Numeral_Nom_Chunk : Numeral -> Chunk ;
Numeral_Gen_Chunk : Numeral -> Chunk ;
Ord_Nom_Chunk : Ord -> Chunk ;
Ord_Gen_Chunk : Ord -> Chunk ;
Predet_Chunk : Predet -> Chunk ;
Prep_Chunk : Prep -> Chunk ;
RP_Nom_Chunk : RP -> Chunk ;
RP_Gen_Chunk : RP -> Chunk ;
RP_Acc_Chunk : RP -> Chunk ;
Subj_Chunk : Subj -> Chunk ;
--- PConj_Chunk : PConj -> Chunk ;
VPS_Chunk : VPS -> Chunk ;
VPI_Chunk : VPI -> Chunk ;
-- verbs lifted to one cat
V2_V : V2 -> VC ;
VA_V : VA -> VC ;
VQ_V : VQ -> VC ;
VS_V : VS -> VC ;
VV_V : VV -> VC ;
V3_V : V3 -> VC ;
V2A_V : V2A -> VC ;
V2Q_V : V2Q -> VC ;
V2S_V : V2S -> VC ;
V2V_V : V2V -> VC ;
UseVC : Temp -> Pol -> VC -> VPS ;
-- for unknown words that are not names
Symb_Chunk : Symb -> Chunk ;
-- syncategorematic chunks
refl_SgP1_Chunk,
refl_SgP2_Chunk,
refl_SgP3_Chunk,
refl_PlP1_Chunk,
refl_PlP2_Chunk,
refl_PlP3_Chunk : Chunk ;
neg_Chunk : Chunk ;
copula_Chunk : Chunk ;
copula_neg_Chunk : Chunk ;
copula_inf_Chunk : Chunk ;
past_copula_Chunk : Chunk ;
past_copula_neg_Chunk : Chunk ;
future_Chunk : Chunk ;
future_neg_Chunk : Chunk ;
cond_Chunk : Chunk ;
cond_neg_Chunk : Chunk ;
perfect_Chunk : Chunk ;
perfect_neg_Chunk : Chunk ;
past_perfect_Chunk : Chunk ;
past_perfect_neg_Chunk : Chunk ;
-- chunks for punctuation marks
fullstop_Chunk : Chunk ;
exclmark_Chunk : Chunk ;
questmark_Chunk : Chunk ;
comma_Chunk : Chunk ;
colon_Chunk : Chunk ;
semicolon_Chunk : Chunk ;
quote_Chunk : Chunk ;
lpar_Chunk : Chunk ;
rpar_Chunk : Chunk ;
dash_Chunk : Chunk ;
}

View File

@@ -1,69 +0,0 @@
concrete ChunkBul of Chunk = CatBul, ExtensionsBul [VPS,VPI] **
ChunkFunctor - [
CN_Pl_Chunk, CN_Sg_Chunk, Conj_Chunk, IAdv_Chunk, IP_Chunk, Numeral_Nom_Chunk, SSlash_Chunk, Predet_Chunk,
emptyNP, Prep_Chunk
]
with (Syntax = SyntaxBul), (Extensions = ExtensionsBul) **
open
SyntaxBul, (E = ExtensionsBul), Prelude,
ResBul, MorphoFunsBul, (P = ParadigmsBul) in {
lin VPI_Chunk vpi = {s = vpi.s ! {gn = GSg allGender ; p = P3}} ;
lin CN_Pl_Chunk, CN_Pl_Gen_Chunk = \cn -> {s = cn.s ! (NF Pl allSpecies | NFPlCount)} ;
lin CN_Sg_Chunk, CN_Sg_Gen_Chunk = \cn -> {s = cn.s ! (NF Sg allSpecies | NFSgDefNom)} ;
lin Conj_Chunk c = {s = c.s ++ linCoord ! c.conj};
lin IAdv_Chunk iadv = {s = iadv.s ! allQForm};
lin IP_Chunk ip = {s = ip.s ! (RSubj | RObj allCases | RVoc) ! allQForm};
lin Predet_Chunk predet = {s = predet.s ! allGenNum};
lin Numeral_Nom_Chunk, Numeral_Gen_Chunk = \num -> {s = num.s ! NCard allCardForm};
lin Prep_Chunk prep = prep;
lin NP_Acc_Chunk np = {s = np.s ! RObj allCases};
lin NP_Gen_Chunk np = {s = np.s ! RSubj};
oper
emptyNP : NP = SyntaxBul.mkNP (P.mkPN [] Masc) ;
lin refl_SgP1_Chunk, refl_SgP2_Chunk, refl_SgP3_Chunk, refl_PlP1_Chunk,
refl_PlP2_Chunk, refl_PlP3_Chunk =
{s = reflClitics ! allCases};
lin neg_Chunk = {s = "не"};
lin copula_Chunk = {s = auxBe ! VPres allNumber allPerson};
lin copula_neg_Chunk = {s = "не" ++ auxBe ! VPres allNumber allPerson};
lin copula_inf_Chunk = {s = auxWould ! VPres allNumber allPerson};
lin past_copula_Chunk = {s = auxBe ! VAorist allNumber allPerson};
lin past_copula_neg_Chunk = {s = "не" ++ auxBe ! VAorist allNumber allPerson};
lin future_Chunk = {s = "ще"};
lin future_neg_Chunk = {s = "не ще"};
lin cond_Chunk = {s = auxWould ! VAorist allNumber allPerson} ;
lin cond_neg_Chunk = {s = "не" ++ auxWould ! VAorist allNumber allPerson} ;
lin perfect_Chunk = {s = "*"} ;
lin perfect_neg_Chunk = {s = "не" ++ "*"} ;
lin past_perfect_Chunk = {s = "*"} ;
lin past_perfect_neg_Chunk = {s = "не" ++ "*"} ;
lin SSlash_Chunk s = mkUtt <lin S {s = s.s ! agrP3 (GSg Masc) ++ s.c2.s} : S> ;
oper
allAForm
= ASg allGender allSpecies
| ASgMascDefNom
| APl allSpecies ;
allGender = Masc | Fem | Neut ;
allSpecies = Indef | Def ;
allCases = Acc | Dat ;
allQForm = QDir | QIndir ;
allAnimacy = Human | NonHuman ;
allCardForm =
CFMasc allSpecies allAnimacy
| CFMascDefNom allAnimacy
| CFFem allSpecies
| CFNeut allSpecies ;
allGenNum = GSg allGender | GPl ;
allNumber = Sg | Pl ;
allPerson = P1 | P2 | P3 ;
}

View File

@@ -1,45 +0,0 @@
concrete ChunkCat of Chunk = CatCat, ExtensionsCat [VPS,VPI] **
ChunkFunctor - [AP_Chunk, SSlash_Chunk]
with (Syntax = SyntaxCat), (Extensions = ExtensionsCat) **
open
SyntaxCat, (E = ExtensionsCat), Prelude,
ResCat, CommonRomance, (P = ParadigmsCat) in {
lin
AP_Chunk ap = {s = ap.s ! AF (Masc | Fem) (Sg | Pl)} ;
SSlash_Chunk s = mkUtt <lin S {s = s.s ! {g = Masc ; n = Sg}} : S> ;
lin
NP_Acc_Chunk np = ss (np.s ! Acc).ton ;
NP_Gen_Chunk np = ss (np.s ! genitive).comp ;
VPI_Chunk vpi = vpi ;
oper
emptyNP = mkNP (P.mkPN []) ;
lin
copula_inf_Chunk = ss "ser" ;
refl_SgP1_Chunk = ss "jo mateix" ;
refl_SgP2_Chunk = ss "tu mateix" ;
refl_SgP3_Chunk = ss "aquell mateix" ;
refl_PlP1_Chunk = ss "nosaltres mateixos" ;
refl_PlP2_Chunk = ss "vosaltres mateixos" ;
refl_PlP3_Chunk = ss "ells mateixos" ;
neg_Chunk = ss "no" ;
copula_Chunk = ss "és" ;
copula_neg_Chunk = ss "no és" ;
past_copula_Chunk = ss "va ser" ;
past_copula_neg_Chunk = ss "no va ser" ;
future_Chunk = ss "va" ; ----
future_neg_Chunk = ss "no va" ; ----
cond_Chunk = ss "aniria" ; ----
cond_neg_Chunk = ss "no aniria" ; ----
perfect_Chunk = ss "ha" ;
perfect_neg_Chunk = ss "no ha" ;
past_perfect_Chunk = ss "havia" ;
past_perfect_neg_Chunk = ss "no havia" ;
}

View File

@@ -1,53 +0,0 @@
concrete ChunkChi of Chunk = CatChi, ExtensionsChi [VPS,VPI] **
ChunkFunctor - [Numeral_Nom_Chunk, Conj_Chunk, CN_Pl_Chunk, Subj_Chunk, emptyNP, Prep_Chunk, Predet_Chunk]
with (Syntax = SyntaxChi), (Extensions = ExtensionsChi) **
open
SyntaxChi, (E = ExtensionsChi), Prelude,
ResChi, (P = ParadigmsChi) in {
oper
emptyNP : NP = mkNP [] ;
-- exceptions to functor
lin
Conj_Chunk conj = ss (conj.s ! CSent).s2 ;
Numeral_Nom_Chunk num = ss (num.s ++ ge_s) ;
CN_Pl_Chunk cn = cn ;
Subj_Chunk subj = ss (subj.prePart ++ subj.sufPart) ;
Prep_Chunk prep = ss (prep.prepPre ++ prep.prepPost) ;
Predet_Chunk predet = predet ;
lin
NP_Acc_Chunk np = np ;
NP_Gen_Chunk np = ss (np.s ++ de_s) ;
VPI_Chunk vpi = vpi ;
copula_inf_Chunk = ss copula_s ;
refl_SgP1_Chunk = ss reflPron ;
refl_SgP2_Chunk = ss reflPron ;
refl_SgP3_Chunk = ss reflPron ;
refl_PlP1_Chunk = ss reflPron ;
refl_PlP2_Chunk = ss reflPron ;
refl_PlP3_Chunk = ss reflPron ;
neg_Chunk = ss neg_s ;
copula_Chunk = ss copula_s ;
copula_neg_Chunk = ss (neg_s ++ copula_s) ;
past_copula_Chunk = ss "了" ;
past_copula_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ;
future_Chunk = ss copula_s ; ----
future_neg_Chunk = ss (neg_s ++ copula_s) ;
cond_Chunk = ss copula_s ; ----
cond_neg_Chunk = ss (neg_s ++ copula_s) ;
perfect_Chunk = ss "了" ;
perfect_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ;
past_perfect_Chunk = ss "了" ;
past_perfect_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ;
}

View File

@@ -1,42 +0,0 @@
concrete ChunkDut of Chunk = CatDut, ExtensionsDut [VPS,VPI]
**
ChunkFunctor - [emptyNP]
with (Syntax = SyntaxDut), (Extensions = ExtensionsDut)
**
open
SyntaxDut, (E = ExtensionsDut), Prelude,
ResDut, (P = ParadigmsDut) in {
oper
emptyNP = SyntaxDut.mkNP (P.mkPN []) ;
lin
NP_Acc_Chunk np = ss (np.s ! NPAcc) ;
NP_Gen_Chunk np = ss ("van" ++ np.s ! NPAcc) ; ----
VPI_Chunk vpi = {s = vpi.s ! (True | False)} ;
lin
copula_inf_Chunk = ss "zijn" ;
refl_SgP1_Chunk = ss "mij zelf" ;
refl_SgP2_Chunk = ss "jij zelf" ;
refl_SgP3_Chunk = ss "zij zelf" ;
refl_PlP1_Chunk = ss "ons zelf" ;
refl_PlP2_Chunk = ss "jullie zelf" ;
refl_PlP3_Chunk = ss "zij zelf" ;
neg_Chunk = ss "niet" ;
copula_Chunk = ss "is" ;
copula_neg_Chunk = ss "is niet" ;
past_copula_Chunk = ss "was" ;
past_copula_neg_Chunk = ss "was niet" ;
future_Chunk = ss "zal" ;
future_neg_Chunk = ss "zal niet" ;
cond_Chunk = ss "zou" ;
cond_neg_Chunk = ss "zou niet" ;
perfect_Chunk = ss "heeft" ;
perfect_neg_Chunk = ss "heeft niet" ;
past_perfect_Chunk = ss "had" ;
past_perfect_neg_Chunk = ss "had niet" ;
}

View File

@@ -1,47 +0,0 @@
concrete ChunkEng of Chunk = CatEng, SymbolEng [Symb], ExtensionsEng [VPS,VPI] **
ChunkFunctor - [Det_Chunk]
with (Syntax = SyntaxEng), (Extensions = ExtensionsEng) **
open
SyntaxEng, (E = ExtensionsEng), Prelude,
(R = ResEng), (P = ParadigmsEng) in {
lin
Det_Chunk det = lin Utt {
s = case det.n of {
R.Sg => det.s ;
R.Pl => det.sp ! R.NCase R.Nom
}
} ;
NP_Acc_Chunk np = ss (np.s ! R.NPAcc) ;
NP_Gen_Chunk np = ss (np.s ! R.NCase R.Gen) | ss (np.s ! R.NPNomPoss) ;
VPI_Chunk vpi = {s = vpi.s ! (R.VVInf | R.VVPresPart) ! R.AgP3Sg R.Masc} ; ----
oper
emptyNP = mkNP (P.mkPN []) ;
lin
copula_inf_Chunk = ss "to be" | ss "be" ;
refl_SgP1_Chunk = ss "myself" ;
refl_SgP2_Chunk = ss "yourself" ;
refl_SgP3_Chunk = ss "himself" | ss "herself" | ss "itself" ;
refl_PlP1_Chunk = ss "ourselves" ;
refl_PlP2_Chunk = ss "yourselves" ;
refl_PlP3_Chunk = ss "themselves" ;
neg_Chunk = ss "not" | ss "doesn't" | ss "don't" ;
copula_Chunk = ss "is" | ss "are" | ss "am" ; ---- | ss (Predef.BIND ++ "'s") | ss (Predef.BIND ++ "'re") ;
copula_neg_Chunk = ss "isn't" | ss "aren't" ;
past_copula_Chunk = ss "was" | ss "were" ;
past_copula_neg_Chunk = ss "wasn't" | ss "weren't" ;
future_Chunk = ss "will" ;
future_neg_Chunk = ss "won't" ;
cond_Chunk = ss "would" ;
cond_neg_Chunk = ss "wouldn't" ;
perfect_Chunk = ss "has" | ss "have" ;
perfect_neg_Chunk = ss "hasn't" | ss "haven't" ;
past_perfect_Chunk = ss "had" ;
past_perfect_neg_Chunk = ss "hadn't" ;
}

View File

@@ -1,43 +0,0 @@
concrete ChunkEst of Chunk = CatEst, ExtensionsEst [VPS,VPI] **
ChunkFunctor - [Prep_Chunk] with (Syntax = SyntaxEst), (Extensions = ExtensionsEst) **
open
SyntaxEst, (E = ExtensionsEst), Prelude,
ResEst, (P = ParadigmsEst) in {
oper
emptyNP = mkNP (lin PN {s = \\_ => []}) ;
-- overridden, to avoid the generation of dangling case endings
lin
Prep_Chunk prep = mkAdv prep something_NP ;
lin
NP_Acc_Chunk np = ss (np.s ! NPAcc) ;
NP_Gen_Chunk np = ss (np.s ! NPCase Gen) ;
---- VPI_Chunk vpi = {s = vpi.s ! (VVIllat | VVInf)} ;
lin
copula_inf_Chunk = ss "olla" ;
refl_SgP1_Chunk = ss "ise" ;
refl_SgP2_Chunk = ss "ise" ;
refl_SgP3_Chunk = ss "ise" ;
refl_PlP1_Chunk = ss "ise" ;
refl_PlP2_Chunk = ss "ise" ;
refl_PlP3_Chunk = ss "ise" ;
neg_Chunk = ss "ei" ;
copula_Chunk = ss "on" ;
copula_neg_Chunk = ss "ei ole" ;
past_copula_Chunk = ss "oli" ;
past_copula_neg_Chunk = ss "ei olnud" ;
future_Chunk = ss "tuleb" ;
future_neg_Chunk = ss "ei tule" ;
cond_Chunk = ss "oleks" ;
cond_neg_Chunk = ss "ei oleks" ;
perfect_Chunk = ss "on" ;
perfect_neg_Chunk = ss "ei ole" ;
past_perfect_Chunk = ss "oli" ;
past_perfect_neg_Chunk = ss "ei olnud" ;
}

View File

@@ -1,44 +0,0 @@
concrete ChunkEus of Chunk = CatEus, SymbolEus [Symb], ExtensionsEus [VPS,VPI] **
ChunkFunctor - [Det_Chunk]
with (Syntax = SyntaxEus), (Extensions = ExtensionsEus) **
open
Prelude, (R = ResEus), (P=ParadigmsEus), (E=ExtensionsEus) in {
lin
NP_Acc_Chunk np = ss (np.s ! R.Abs) ; -- lol I'm ergative-absolutive
NP_Gen_Chunk np = ss (np.s ! R.Gen) ;
VPI_Chunk vpi = vpi ; ----
oper
empty_NP : NP = lin NP R.empty_NP ;
lin
--TODO: these are just Google translate / my wild guesses
copula_inf_Chunk = ss "izan" | ss "izaten" ;
refl_SgP1_Chunk = ss "neuk" ;
refl_SgP2_Chunk = ss "zeuk" | ss "heuk" ;
refl_SgP3_Chunk = ss "berau" ;
refl_PlP1_Chunk = ss "geuk" ;
refl_PlP2_Chunk = ss "zeuek" ;
refl_PlP3_Chunk = ss "beraiek " ;
neg_Chunk = ss "not" | ss "doesn't" | ss "don't" ;
copula_Chunk = ss "naiz" | ss "zara" | ss "da" | ss "gara" | ss "zarete" | ss "dira" ;
copula_neg_Chunk = ss "ez naiz" | ss "ez zara" | ss "ez da" | ss "ez gara" | ss "ez zarete" | ss "ez dira" ;
past_copula_Chunk = ss "zen" ;
past_copula_neg_Chunk = ss "ez zen" ;
future_Chunk = ss "izango" ;
future_neg_Chunk = ss "ez izango" ;
cond_Chunk = ss "litzateke" ;
cond_neg_Chunk = ss "ez litzateke" ;
perfect_Chunk = ss "izan" ;
perfect_neg_Chunk = ss "ez izan" ;
past_perfect_Chunk = ss "zen" ;
past_perfect_neg_Chunk = ss "ez zen" ;
}

View File

@@ -1,43 +0,0 @@
concrete ChunkFin of Chunk = CatFin, ExtensionsFin [VPS,VPI] **
ChunkFunctor - [Prep_Chunk] with (Syntax = SyntaxFin), (Extensions = ExtensionsFin) **
open
SyntaxFin, (E = ExtensionsFin), Prelude,
ResFin, (P = ParadigmsFin) in {
oper
emptyNP = mkNP (lin PN {s = \\_ => []}) ;
-- overridden, to avoid the generation of dangling case endings
lin
Prep_Chunk prep = mkAdv prep something_NP ;
lin
NP_Acc_Chunk np = ss (np.s ! NPAcc) ;
NP_Gen_Chunk np = ss (np.s ! NPCase Gen) ;
VPI_Chunk vpi = {s = vpi.s ! (VVIllat | VVInf)} ;
lin
copula_inf_Chunk = ss "olla" ;
refl_SgP1_Chunk = ss "itseni" ;
refl_SgP2_Chunk = ss "itsesi" ;
refl_SgP3_Chunk = ss "itse" ;
refl_PlP1_Chunk = ss "itsemme" ;
refl_PlP2_Chunk = ss "itsenne" ;
refl_PlP3_Chunk = ss "itsensä" ;
neg_Chunk = ss "ei" ;
copula_Chunk = ss "on" ;
copula_neg_Chunk = ss "ei ole" ;
past_copula_Chunk = ss "oli" ;
past_copula_neg_Chunk = ss "ei ollut" ;
future_Chunk = ss "tulee" ;
future_neg_Chunk = ss "ei tule" ;
cond_Chunk = ss "olisi" ;
cond_neg_Chunk = ss "ei olisi" ;
perfect_Chunk = ss "on" ;
perfect_neg_Chunk = ss "ei ole" ;
past_perfect_Chunk = ss "oli" ;
past_perfect_neg_Chunk = ss "ei ollut" ;
}

View File

@@ -1,50 +0,0 @@
concrete ChunkFre of Chunk = CatFre, ExtensionsFre [VPS,VPI] **
ChunkFunctor - [AP_Chunk, SSlash_Chunk, quote_Chunk]
with (Syntax = SyntaxFre), (Extensions = ExtensionsFre) **
open
SyntaxFre, (E = ExtensionsFre), Prelude,
ResFre, PhonoFre, CommonRomance, (P = ParadigmsFre) in {
lin
AP_Chunk ap = {s = ap.s ! AF (Masc | Fem) (Sg | Pl)} ;
SSlash_Chunk s = mkUtt <lin S {s = s.s ! {g = Masc ; n = Sg}} : S> ;
quote_Chunk = variants { ss (SOFT_BIND ++ "\"") ;
ss ("\"" ++ SOFT_BIND) ;
ss ("«" ++ SOFT_BIND) ;
ss (SOFT_BIND ++ "»") } ;
lin
NP_Acc_Chunk np = ss (np.s ! Acc).ton ;
NP_Gen_Chunk np = ss (np.s ! genitive).comp ;
VPI_Chunk vpi = vpi ;
oper
emptyNP = mkNP (P.mkPN []) ;
lin
copula_inf_Chunk = ss "être" ;
refl_SgP1_Chunk = ss "moi-même" ;
refl_SgP2_Chunk = ss "toi-même" ;
refl_SgP3_Chunk = ss "lui-même" ;
refl_PlP1_Chunk = ss "nous-mêmes" ;
refl_PlP2_Chunk = ss "vous-mêmes" ;
refl_PlP3_Chunk = ss "eux-mêmes" ;
neg_Chunk = ss "non" ;
copula_Chunk = ss "est" ;
copula_neg_Chunk = ss "n'est pas" ;
past_copula_Chunk = ss "était" ;
past_copula_neg_Chunk = ss "n'était pas" ;
future_Chunk = ss "va" ;
future_neg_Chunk = ss "ne va pas" ;
cond_Chunk = ss "ferait" ; ----
cond_neg_Chunk = ss "ne ferait pas" ; ----
perfect_Chunk = ss "a" ;
perfect_neg_Chunk = ss "n'a pas" ;
past_perfect_Chunk = ss "avait" ;
past_perfect_neg_Chunk = ss "n'avait pas" ;
}

View File

@@ -1,85 +0,0 @@
incomplete concrete ChunkFunctor of Chunk = Cat, Symbol [Symb], Extensions [VPS,VPI] **
open
Syntax, Extensions,
Prelude in {
lincat
Chunks = {s : Str} ;
Chunk = {s : Str};
VC = V ;
lin
OneChunk c = c ;
PlusChunk c cs = cc2 c cs ;
ChunkPhr c = ss ("*" ++ c.s) | c ;
lin
AP_Chunk ap = mkUtt ap ;
AdA_Chunk ada = ada ;
Adv_Chunk adv = adv ;
AdV_Chunk adv = adv ;
AdN_Chunk adn = adn ;
S_Chunk s = mkUtt s ;
SSlash_Chunk s = mkUtt <lin S s : S> ;
QS_Chunk qs = mkUtt qs ;
CN_Pl_Chunk cn = mkUtt (Syntax.mkNP aPl_Det cn) ;
CN_Sg_Chunk cn = mkUtt cn ;
---- CN_Pl_Gen_Chunk cn = ss (cn.s ! Pl ! Gen) ;
---- CN_Sg_Gen_Chunk cn = ss (cn.s ! Sg ! Gen) ;
Conj_Chunk conj = ss conj.s2 ; ----
Det_Chunk det = mkUtt (Syntax.mkNP det) ;
IAdv_Chunk iadv = iadv ;
IP_Chunk ip = mkUtt ip ;
NP_Nom_Chunk np = mkUtt np ;
---- NP_Acc_Chunk np = ss (np.s ! NPAcc) ;
---- NP_Gen_Chunk np = ss (np.s ! NCase Gen) | ss (np.s ! NPNomPoss) ;
Numeral_Nom_Chunk num = mkUtt (Syntax.mkNP (Syntax.mkDet num)) ;
---- Numeral_Gen_Chunk num = ss (num.s ! NCard ! Gen) ;
---- Ord_Nom_Chunk ord = ss (ord.s ! Nom) ;
---- Ord_Gen_Chunk ord = ss (ord.s ! Gen) ;
Predet_Chunk predet = mkUtt (Syntax.mkNP predet emptyNP) ;
Prep_Chunk prep = mkAdv prep emptyNP ; ----
---- RP_Nom_Chunk rp = ss (rp.s ! RC Neutr (NCase Nom)) ;
---- RP_Acc_Chunk rp = ss (rp.s ! RPrep Masc) ; ----
---- RP_Gen_Chunk rp = ss (rp.s ! RC Neutr (NCase Gen)) ;
Subj_Chunk subj = subj ;
--- PConj_Chunk pconj = pconj ;
VPS_Chunk vps = mkUtt (E.PredVPS emptyNP vps) ;
-- VPI_Chunk : VPI -> Chunk ;
V2_V,
VA_V,
VQ_V,
VS_V,
---- VV_V,
V3_V,
V2A_V,
V2Q_V,
V2S_V,
V2V_V
= \v -> <lin V v : V> ;
UseVC t p vc = E.MkVPS t p (mkVP vc) ;
Symb_Chunk s = lin Utt s ;
fullstop_Chunk = sbSS "." ;
exclmark_Chunk = sbSS "!" ;
questmark_Chunk = sbSS "?" ;
comma_Chunk = sbSS "," ;
colon_Chunk = sbSS ":" ;
semicolon_Chunk = sbSS ";" ;
quote_Chunk = variants {sbSS "\"" ; ss ("\"" ++ SOFT_BIND) } ;
lpar_Chunk = ss ("(" ++ SOFT_BIND) ;
rpar_Chunk = sbSS ")" ;
dash_Chunk = sbSS "-" ;
oper
emptyNP : NP = Syntax.mkNP (P.mkPN []) ;
sbSS : Str -> SS = \s -> ss (SOFT_BIND ++ s) ;
}

View File

@@ -1,39 +0,0 @@
concrete ChunkGer of Chunk = CatGer, ExtensionsGer [VPS,VPI] **
ChunkFunctor with (Syntax = SyntaxGer), (Extensions = ExtensionsGer) **
open
SyntaxGer, (E = ExtensionsGer), Prelude,
ResGer, (P = ParadigmsGer) in {
oper
emptyNP = mkNP (P.mkPN []) ;
lin
NP_Acc_Chunk np = ss (np.s ! NPC Acc ++ bigNP np) ;
NP_Gen_Chunk np = ss (np.s ! NPC Gen ++ bigNP np) ;
VPI_Chunk vpi = {s = vpi.s ! (True | False)} ;
lin
copula_inf_Chunk = ss "sein" ;
refl_SgP1_Chunk = ss "mich selbst" ;
refl_SgP2_Chunk = ss "dich selbst" ;
refl_SgP3_Chunk = ss "sich selbst" ;
refl_PlP1_Chunk = ss "uns selbst" ;
refl_PlP2_Chunk = ss "euch selbst" ;
refl_PlP3_Chunk = ss "sich selbst" ;
neg_Chunk = ss "nicht" ;
copula_Chunk = ss "ist" ;
copula_neg_Chunk = ss "ist nicht" ;
past_copula_Chunk = ss "war" ;
past_copula_neg_Chunk = ss "war nicht" ;
future_Chunk = ss "wird" ;
future_neg_Chunk = ss "wird nicht" ;
cond_Chunk = ss "würde" ;
cond_neg_Chunk = ss "würde nicht" ;
perfect_Chunk = ss "hat" ;
perfect_neg_Chunk = ss "hat nicht" ;
past_perfect_Chunk = ss "hatte" ;
past_perfect_neg_Chunk = ss "hatte nicht" ;
}

View File

@@ -1,48 +0,0 @@
concrete ChunkHin of Chunk = CatHin, ExtensionsHin [VPS,VPI] **
ChunkFunctor - [Adv_Chunk, Prep_Chunk]
with (Syntax = SyntaxHin), (Extensions = ExtensionsHin) **
open
SyntaxHin, (E = ExtensionsHin), Prelude, CommonHindustani,
(R = ResHin), (P = ParadigmsHin) in {
lin
Adv_Chunk adv = mkUtt adv ;
Prep_Chunk prep = pss (prep.s ! Masc) ; ----
oper
emptyNP = mkNP (P.mkPN []) ;
pss = Prelude.ss ;
lin
NP_Acc_Chunk np = mkUtt np ;
NP_Gen_Chunk np = mkUtt (mkAdv possess_Prep np) ;
---- VPI_Chunk vpi = vpi ;
copula_inf_Chunk = pss " है " ;
refl_SgP1_Chunk,
refl_SgP2_Chunk,
refl_SgP3_Chunk,
refl_PlP1_Chunk,
refl_PlP2_Chunk,
refl_PlP3_Chunk = pss " आप " ; ----
neg_Chunk = pss " नहीं " ;
copula_Chunk = pss " है " ;
copula_neg_Chunk = pss " नहीं है " ;
past_copula_Chunk = pss " था " ;
past_copula_neg_Chunk = pss " नहीं था " ;
future_Chunk = pss " हीं होगा " ;
future_neg_Chunk = pss " नहीं होगा " ;
cond_Chunk = pss " हीं होगा " ; ---- same as future
cond_neg_Chunk = pss " नहीं होगा " ;
perfect_Chunk = pss " है " ;
perfect_neg_Chunk = pss " नहीं " ;
past_perfect_Chunk = pss " था " ;
past_perfect_neg_Chunk = pss " नहीं " ;
}

View File

@@ -1,45 +0,0 @@
concrete ChunkIta of Chunk = CatIta, ExtensionsIta [VPS,VPI] **
ChunkFunctor - [AP_Chunk, SSlash_Chunk]
with (Syntax = SyntaxIta), (Extensions = ExtensionsIta) **
open
SyntaxIta, (E = ExtensionsIta), Prelude,
ResIta, CommonRomance, (P = ParadigmsIta) in {
lin
AP_Chunk ap = {s = ap.s ! AF (Masc | Fem) (Sg | Pl)} ;
SSlash_Chunk s = mkUtt <lin S {s = s.s ! {g = Masc ; n = Sg}} : S> ;
lin
NP_Acc_Chunk np = ss (np.s ! Acc).ton ;
NP_Gen_Chunk np = ss (np.s ! genitive).comp ;
VPI_Chunk vpi = vpi ;
oper
emptyNP = mkNP (P.mkPN []) ;
copula_inf_Chunk = ss "essere" ;
refl_SgP1_Chunk = ss "me stesso" ;
refl_SgP2_Chunk = ss "te stesso" ;
refl_SgP3_Chunk = ss "lui stesso" ;
refl_PlP1_Chunk = ss "noi stessi" ;
refl_PlP2_Chunk = ss "voi stessi" ;
refl_PlP3_Chunk = ss "loro stessi" ;
neg_Chunk = ss "non" ;
copula_Chunk = ss "è" ;
copula_neg_Chunk = ss "non è" ;
past_copula_Chunk = ss "era" ;
past_copula_neg_Chunk = ss "non era" ;
future_Chunk = ss "vuole" ; ----
future_neg_Chunk = ss "non vuole" ; ----
cond_Chunk = ss "vorrebbe" ; ----
cond_neg_Chunk = ss "non vorrebbe" ; ----
perfect_Chunk = ss "ha" ;
perfect_neg_Chunk = ss "non ha" ;
past_perfect_Chunk = ss "aveva" ;
past_perfect_neg_Chunk = ss "non aveva" ;
}

View File

@@ -1,144 +0,0 @@
concrete ChunkJpn of Chunk = CatJpn, ExtensionsJpn [VPS,VPI] **
ChunkFunctor[Chunk, Chunks, OneChunk, PlusChunk, ChunkPhr,
AdA_Chunk, AdV_Chunk, AdN_Chunk, PConj_Chunk, Symb_Chunk,
fullstop_Chunk, exclmark_Chunk, questmark_Chunk, comma_Chunk,
colon_Chunk, semicolon_Chunk, quote_Chunk, lpar_Chunk,
rpar_Chunk, dash_Chunk, sbSS]
with (Syntax = SyntaxJpn), (Extensions = ExtensionsJpn) **
open
SyntaxJpn, (E = ExtensionsJpn), Prelude,
ResJpn, (P = ParadigmsJpn) in {
flags coding = utf8 ;
lincat
VC = {s : Speaker => Style => TTense => Polarity => Str ;
a_stem, i_stem : Speaker => Str ;
te, ba : Speaker => Polarity => Str} ;
lin
AP_Chunk ap = {s = (mkUtt ap).s ! Wa ! Resp} ;
Adv_Chunk adv = {s = adv.s ! Resp} ;
S_Chunk s = {s = s.s ! Wa ! Resp} ;
SSlash_Chunk sslash = {s = sslash.s ! Resp} ;
QS_Chunk qs = {s = qs.s ! Wa ! Resp} ;
CN_Pl_Chunk cn = {s = cn.prepositive ! Resp ++ cn.object ! Resp ++ cn.s ! Pl ! Resp} ;
CN_Sg_Chunk cn = {s = cn.prepositive ! Resp ++ cn.object ! Resp ++ cn.s ! Sg ! Resp} ;
CN_Pl_Gen_Chunk = CN_Pl_Chunk ;
CN_Sg_Gen_Chunk = CN_Sg_Chunk ;
Conj_Chunk conj = {s = conj.s} ;
Det_Chunk det = {s = det.quant ! Resp ++ det.num ++ det.postpositive} ;
IAdv_Chunk iadv = {s = iadv.s ! Resp} ;
IP_Chunk ip = {s = ip.s_subj ! Resp} ;
NP_Nom_Chunk np = {s = (mkUtt np).s ! Wa ! Resp} ;
NP_Acc_Chunk, NP_Gen_Chunk = NP_Nom_Chunk ;
Numeral_Nom_Chunk num = {s = num.s} ;
Numeral_Gen_Chunk = Numeral_Nom_Chunk ;
Ord_Nom_Chunk ord = {s = ord.attr} ;
Ord_Gen_Chunk = Ord_Nom_Chunk ;
Predet_Chunk predet = {s = predet.s} ;
Prep_Chunk prep = {s = prep.s} ;
RP_Nom_Chunk rp = {s = rp.s ! Resp} ;
RP_Gen_Chunk, RP_Acc_Chunk = RP_Nom_Chunk ;
Subj_Chunk subj = {s = subj.s} ;
VPS_Chunk vps = {s = vps.prepositive ! Resp ++ vps.obj ! Resp ++ vps. prep ++
vps.verb ! SomeoneElse ! Inanim ! Resp} ;
VPI_Chunk vpi = {s = vpi.prepositive ! Resp ++ vpi.obj ! Resp ++ vpi. prep ++
vpi.verb ! SomeoneElse ! Inanim } ;
refl_SgP1_Chunk, refl_SgP2_Chunk, refl_SgP3_Chunk,
refl_PlP1_Chunk, refl_PlP2_Chunk, refl_PlP3_Chunk = ss "自分" | ss "自分自身" ; -- "jibun" | "jibunjishin"
neg_Chunk = ss "ない" | ss "しない" | ss "ではない" | ss "ません" | ss "ないで" ;
copula_Chunk, future_Chunk = ss "です" | ss "だ" ;
copula_neg_Chunk, future_neg_Chunk = ss "ではない" | ss "ではありません" ;
copula_inf_Chunk = ss "です" | ss "だ" ;
past_copula_Chunk = ss "でした" | ss "だった" ;
past_copula_neg_Chunk = ss "ではありませんでした" | ss "ではなかった" ;
cond_Chunk = copula_Chunk ; -- no "would" in Japanese
cond_neg_Chunk = copula_neg_Chunk ;
perfect_Chunk = past_copula_Chunk ** (ss "てしまった" | ss "ちゃった" | ss "でしまった" |
ss "じゃった" | ss "ことがある" | ss "ことがあります") ;
perfect_neg_Chunk = past_copula_neg_Chunk ** (ss "てしまわない" | ss "でしまわない" |
ss "ことがありません" | ss "ことがない") ;
past_perfect_Chunk = perfect_Chunk ;
past_perfect_neg_Chunk = perfect_neg_Chunk ;
V2_V v2 = lin VC {
s = \\sp => v2.s ;
a_stem = \\sp => v2.a_stem ;
i_stem = \\sp => v2.i_stem ;
te = \\sp => v2.te ;
ba = \\sp => v2.ba
} ;
VA_V va = lin VC {
s = \\sp => va.s ;
a_stem = \\sp => va.a_stem ;
i_stem = \\sp => va.i_stem ;
te = \\sp => va.te ;
ba = \\sp => va.ba
} ;
VQ_V, VS_V = V2_V ;
VV_V vv = lin VC {
s = vv.s ;
a_stem = vv.a_stem ;
i_stem = vv.i_stem ;
te = vv.te ;
ba = vv.ba
} ;
V3_V v3 = lin VC {
s = v3.s ;
a_stem = v3.a_stem ;
i_stem = v3.i_stem ;
te = v3.te ;
ba = v3.ba
} ;
V2A_V v2a = lin VC {
s = \\sp => v2a.s ;
a_stem = \\sp => v2a.a_stem ;
i_stem = \\sp => v2a.i_stem ;
te = \\sp => v2a.te ;
ba = \\sp => v2a.ba
} ;
V2Q_V, V2S_V, V2V_V = V2A_V ;
UseVC t p vc = lin VPS {
verb = \\sp,a,st => case t.a of {
Simul => vc.s ! sp ! st ! t.t ! p.b ;
Anter => case t.t of {
TFut => vc.s ! sp ! st ! TPres ! p.b ;
_ => vc.s ! sp ! st ! TPast ! p.b
}
} ;
a_stem = \\sp,a,st => vc.a_stem ! sp ;
i_stem = \\sp,a,st => vc.i_stem ! sp ;
te = \\sp,a,st => vc.te ! sp ! p.b ;
ba = \\sp,a,st => vc.ba ! sp ! p.b ;
prep = "" ;
obj = \\st => "" ;
prepositive = \\st => ""
} ;
}
{-
emptyNP : NP = lin NP {s = \\st => "" ;
prepositive = \\st => "" ;
needPart = False ;
changePolar = False ;
meaning = SomeoneElse ;
anim = Inanim} ;
lin
NP_Acc_Chunk np = np ;
NP_Gen_Chunk np = ss (np.s ++ de_s) ;
VPI_Chunk vpi = vpi ;
-}

View File

@@ -1,57 +0,0 @@
concrete ChunkRus of Chunk = CatRus, ExtensionsRus [VPS,VPI] **
ChunkFunctor - [
CN_Pl_Chunk, CN_Sg_Chunk, Conj_Chunk, IP_Chunk, Numeral_Nom_Chunk, Predet_Chunk, Prep_Chunk, VPS_Chunk, UseVC, emptyNP
]
with (Syntax = SyntaxRus), (Extensions = ExtensionsRus) **
open
SyntaxRus, (E = ExtensionsRus), Prelude,
ResRus, (P = ParadigmsRus) in {
lin VPI_Chunk vpi = {s = vpi.s} ;
lin CN_Pl_Chunk, CN_Pl_Gen_Chunk = \cn -> {s = cn.nounpart ! NF Pl allCases allSizes ++ cn.relcl ! Pl ! allCases} ;
lin CN_Sg_Chunk, CN_Sg_Gen_Chunk = \cn -> {s = cn.nounpart ! NF Sg allCases allSizes ++ cn.relcl ! Sg ! allCases} ;
lin Conj_Chunk c = {s = c.s1 | c.s2 };
lin IP_Chunk ip = {s = ip.s ! (PF allCases allAfterPrep allPossessive)};
lin Predet_Chunk predet = {s = predet.s ! AF allCases allAnimacy allGenNum};
lin Numeral_Nom_Chunk, Numeral_Gen_Chunk = \num -> {s = num.s ! allGender ! allAnimacy ! allCases };
lin Prep_Chunk prep = { s = prep.s };
lin NP_Acc_Chunk np = { s = np.s ! PF Acc allAfterPrep allPossessive } ;
lin NP_Gen_Chunk np = { s = np.s ! PF Acc allAfterPrep allPossessive } ;
oper
emptyNP : NP = lin NP {s = \\_ => ""; n = allNumber; p = allPerson; g=PNoGen; anim = allAnimacy; pron=False} ;
lin refl_SgP1_Chunk, refl_SgP2_Chunk, refl_SgP3_Chunk, refl_PlP1_Chunk,
refl_PlP2_Chunk, refl_PlP3_Chunk =
{s = sam.s ! allCases};
lin neg_Chunk = variants {};
lin copula_Chunk = { s = "является" | "являются" | "являешься" | "являемся" | "являемся" | "являетесь"} ;
lin copula_neg_Chunk = { s = "не является" | "не являются" | "не являешься" | "не являемся" | "не являемся" | "не являетесь"} ;
lin copula_inf_Chunk = variants {} ;
lin past_copula_Chunk = { s = "был" | "были" | "была" | "было" } ;
lin past_copula_neg_Chunk = { s = "не был" | "не были" | "не была" | "не было" } ;
lin future_Chunk = { s = "буду" | "будем" | "будешь" | "будете" | "будет" | "будут" } ;
lin future_neg_Chunk = { s = "не буду" | "не будем" | "не будешь" | "не будете" | "не будет" | "не будут" } ;
lin cond_Chunk = variants {} ;
lin cond_neg_Chunk = variants {} ;
lin perfect_Chunk = variants {} ;
lin perfect_neg_Chunk = variants {} ;
lin past_perfect_Chunk = variants {} ;
lin past_perfect_neg_Chunk = variants {} ;
oper
allGender = Masc | Fem | Neut ;
allCases = Nom | Gen | Dat | Acc | Inst | Prepos PrepOther ;
allQForm = QDir | QIndir ;
allAnimacy = Animate | Inanimate ;
allGenNum = GSg allGender | GPl ;
allNumber = Sg | Pl ;
allPerson = P1 | P2 | P3 ;
allSizes = nom | nompl | sgg | plg ;
allAfterPrep = Yes | No ;
allPossessive = NonPoss | Poss (GSg allGender | GPl) ;
}

View File

@@ -1,44 +0,0 @@
concrete ChunkSpa of Chunk = CatSpa, ExtensionsSpa [VPS,VPI] **
ChunkFunctor - [AP_Chunk, SSlash_Chunk]
with (Syntax = SyntaxSpa), (Extensions = ExtensionsSpa) **
open
SyntaxSpa, (E = ExtensionsSpa), Prelude,
ResSpa, CommonRomance, (P = ParadigmsSpa) in {
lin
AP_Chunk ap = {s = ap.s ! AF (Masc | Fem) (Sg | Pl)} ;
SSlash_Chunk s = mkUtt <lin S {s = s.s ! {g = Masc ; n = Sg}} : S> ;
lin
NP_Acc_Chunk np = ss (np.s ! Acc).ton ;
NP_Gen_Chunk np = ss (np.s ! genitive).comp ;
VPI_Chunk vpi = vpi ;
oper
emptyNP = mkNP (P.mkPN []) ;
lin
copula_inf_Chunk = ss "ser" | ss "estar" ;
refl_SgP1_Chunk = ss "yo mismo" ;
refl_SgP2_Chunk = ss "tu mismo" ;
refl_SgP3_Chunk = ss "ello mismo" ;
refl_PlP1_Chunk = ss "nosotros mismos" ;
refl_PlP2_Chunk = ss "vosotros mismos" ;
refl_PlP3_Chunk = ss "ellos mismos" ;
neg_Chunk = ss "no" ;
copula_Chunk = ss "es" | ss "está" ;
copula_neg_Chunk = ss "no es" | ss "no está" ;
past_copula_Chunk = ss "era" ;
past_copula_neg_Chunk = ss "no era" ;
future_Chunk = ss "va" ; ----
future_neg_Chunk = ss "no va" ; ----
cond_Chunk = ss "iría" ; ----
cond_neg_Chunk = ss "no iría" ; ----
perfect_Chunk = ss "ha" ;
perfect_neg_Chunk = ss "no ha" ;
past_perfect_Chunk = ss "había" ;
past_perfect_neg_Chunk = ss "no había" ;
}

View File

@@ -1,38 +0,0 @@
concrete ChunkSwe of Chunk = CatSwe, ExtensionsSwe [VPS,VPI] **
ChunkFunctor with (Syntax = SyntaxSwe), (Extensions = ExtensionsSwe) **
open
SyntaxSwe, (E = ExtensionsSwe), Prelude,
(C=CommonScand), (R=ResSwe), (P = ParadigmsSwe) in {
lin
NP_Acc_Chunk np = ss (np.s ! C.NPAcc) ;
NP_Gen_Chunk np = ss (np.s ! C.NPPoss (C.GSg C.Utr) C.Nom) ;
VPI_Chunk vpi = {s = optStr "att" ++ vpi.s ! R.VPIInf ! R.agrP3 (C.Utr | C.Neutr) C.Sg} ;
oper
emptyNP = mkNP (P.mkPN []) ;
lin
copula_inf_Chunk = ss "att vara" | ss "vara" ;
refl_SgP1_Chunk = ss "mig själv" ;
refl_SgP2_Chunk = ss "dig själv" ;
refl_SgP3_Chunk = ss "sig själv" ;
refl_PlP1_Chunk = ss "oss själva" ;
refl_PlP2_Chunk = ss "er själva" ;
refl_PlP3_Chunk = ss "sig själva" ;
neg_Chunk = ss "inte" ;
copula_Chunk = ss "är" ;
copula_neg_Chunk = ss "är inte" ;
past_copula_Chunk = ss "var" ;
past_copula_neg_Chunk = ss "var inte" ;
future_Chunk = ss "ska" | ss "skall" ;
future_neg_Chunk = ss "ska inte" | ss "skall inte" ;
cond_Chunk = ss "skulle" ;
cond_neg_Chunk = ss "skulle inte" ;
perfect_Chunk = ss "har" ;
perfect_neg_Chunk = ss "har inte" ;
past_perfect_Chunk = ss "hade" ;
past_perfect_neg_Chunk = ss "hade inte" ;
}

View File

@@ -1,54 +0,0 @@
concrete ChunkTha of Chunk = CatTha, ExtensionsTha [VPS,VPI] **
ChunkFunctor -- - [Numeral_Nom_Chunk, Conj_Chunk, CN_Pl_Chunk, Subj_Chunk, emptyNP, Prep_Chunk, Predet_Chunk]
with (Syntax = SyntaxTha), (Extensions = ExtensionsTha) **
open
SyntaxTha, (E = ExtensionsTha), Prelude,
ResTha, (P = ParadigmsTha), StringsTha in {
oper
emptyNP : NP = mkNP [] ;
{-
-- exceptions to functor ONLY IF NEEDED
lin
Conj_Chunk conj = ss (conj.s ! CSent).s2 ;
Numeral_Nom_Chunk num = ss (num.s ++ ge_s) ;
CN_Pl_Chunk cn = cn ;
Subj_Chunk subj = ss (subj.prePart ++ subj.sufPart) ;
Prep_Chunk prep = ss (prep.prepPre ++ prep.prepPost) ;
Predet_Chunk predet = predet ;
-}
-- THESE ARE NEEDED
lin
NP_Acc_Chunk np = np ;
NP_Gen_Chunk np = ss (khoog_s ++ np.s) ;
VPI_Chunk vpi = vpi ;
copula_inf_Chunk = ss pen_s ;
refl_SgP1_Chunk = ss reflPron ;
refl_SgP2_Chunk = ss reflPron ;
refl_SgP3_Chunk = ss reflPron ;
refl_PlP1_Chunk = ss reflPron ;
refl_PlP2_Chunk = ss reflPron ;
refl_PlP3_Chunk = ss reflPron ;
neg_Chunk = ss may_s ;
copula_Chunk = ss pen_s ;
copula_neg_Chunk = ss (thbind may_s chay_s) ;
{- ---- TODO
past_copula_Chunk = ss "了" ;
past_copula_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ;
future_Chunk = ss copula_s ; ----
future_neg_Chunk = ss (neg_s ++ copula_s) ;
cond_Chunk = ss copula_s ; ----
cond_neg_Chunk = ss (neg_s ++ copula_s) ;
perfect_Chunk = ss "了" ;
perfect_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ;
past_perfect_Chunk = ss "了" ;
past_perfect_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ;
-}
}

View File

@@ -1,48 +0,0 @@
concrete ChunkUrd of Chunk = CatUrd, ExtensionsUrd [VPS,VPI] **
ChunkFunctor - [Adv_Chunk, Prep_Chunk]
with (Syntax = SyntaxUrd), (Extensions = ExtensionsUrd) **
open
SyntaxUrd, (E = ExtensionsUrd), Prelude, CommonHindustani,
(R = ResUrd), (P = ParadigmsUrd) in {
lin
Adv_Chunk adv = mkUtt adv ;
Prep_Chunk prep = pss (prep.s ! Masc) ; ----
oper
emptyNP = mkNP (P.mkPN []) ;
pss = Prelude.ss ;
lin
NP_Acc_Chunk np = mkUtt np ;
NP_Gen_Chunk np = mkUtt (mkAdv possess_Prep np) ;
---- VPI_Chunk vpi = vpi ;
copula_inf_Chunk = pss " है " ;
refl_SgP1_Chunk,
refl_SgP2_Chunk,
refl_SgP3_Chunk,
refl_PlP1_Chunk,
refl_PlP2_Chunk,
refl_PlP3_Chunk = pss " आप " ; ----
neg_Chunk = pss " नहीं " ;
copula_Chunk = pss " है " ;
copula_neg_Chunk = pss " नहीं है " ;
past_copula_Chunk = pss " था " ;
past_copula_neg_Chunk = pss " नहीं था " ;
future_Chunk = pss " हीं होगा " ;
future_neg_Chunk = pss " नहीं होगा " ;
cond_Chunk = pss " हीं होगा " ; ---- same as future
cond_neg_Chunk = pss " नहीं होगा " ;
perfect_Chunk = pss " है " ;
perfect_neg_Chunk = pss " नहीं " ;
past_perfect_Chunk = pss " था " ;
past_perfect_neg_Chunk = pss " नहीं " ;
}

View File

@@ -2,7 +2,7 @@
concrete ConstructionDut of Construction = CatDut **
open SyntaxDut, SymbolicDut, ParadigmsDut,
(L = LexiconDut), (E = ExtraDut), (G = GrammarDut), (I = IrregDut), (R = ResDut), (N = NounDut), Prelude in {
(L = LexiconDut), (E = ExtendDut), (G = GrammarDut), (I = IrregDut), (R = ResDut), (N = NounDut), (P=ParamX), Prelude in {
lin
@@ -49,9 +49,9 @@ lin
monthAdv m = SyntaxDut.mkAdv in_Prep (mkNP the_Det m) ;
yearAdv y = SyntaxDut.mkAdv (mkPrep "in jaar") y ; ----
dayMonthAdv d m = ParadigmsDut.mkAdv ("op" ++ d.s ! R.NPNom ++ BIND ++ "." ++ m.s ! R.NF R.Sg R.Nom) ; -- op 17 Mai
monthYearAdv m y = SyntaxDut.mkAdv in_Prep (mkNP the_Det (mkCN m y)) ; -- im Mai 2012
dayMonthYearAdv d m y = ParadigmsDut.mkAdv ("op" ++ d.s ! R.NPNom ++ BIND ++ "." ++ m.s ! R.NF R.Sg R.Nom ++ y.s ! R.NPNom) ; -- am 17 Mai 2013
dayMonthAdv d m = ParadigmsDut.mkAdv ("op" ++ d.s ! R.NPNom ++ m.s ! R.NF R.Sg R.Nom) ; -- op 17 mei
monthYearAdv m y = SyntaxDut.mkAdv in_Prep (mkNP the_Det (mkCN m y)) ; -- in mei 2012
dayMonthYearAdv d m y = ParadigmsDut.mkAdv ("op" ++ d.s ! R.NPNom ++ m.s ! R.NF R.Sg R.Nom ++ y.s ! R.NPNom ) ; -- op 17 mei 2013
intYear = symb ;
intMonthday = symb ;

View File

@@ -2,7 +2,7 @@
concrete ExtendDut of Extend =
CatDut ** ExtendFunctor
- [PastPartAP]
- [PastPartAP,ICompAP,IAdvAdv]
with
(Grammar = GrammarDut) **
open
@@ -12,7 +12,7 @@ concrete ExtendDut of Extend =
Prelude,
ParadigmsDut in {
lin --# notpresent
lin
PastPartAP vp = { --# notpresent
s = \\agr,af => let aForm = case vp.isHeavy of { --# notpresent
@@ -22,4 +22,7 @@ lin --# notpresent
isPre = notB vp.isHeavy ; --# notpresent
} ; --# notpresent
}
ICompAP ap = {s = \\agr => "hoe" ++ ap.s ! agr ! APred} ;
IAdvAdv adv = {s = "hoe" ++ adv.s} ;
}

View File

@@ -1,5 +1,5 @@
concrete ExtraDut of ExtraDutAbs = CatDut **
open ResDut, Coordination, Prelude, IrregDut, (P = ParadigmsDut), NounDut in
open ResDut, Coordination, Prelude, IrregDut, (P = ParadigmsDut), (E=ExtendDut), NounDut in
{
flags coding=utf8 ;
@@ -19,9 +19,9 @@ concrete ExtraDut of ExtraDutAbs = CatDut **
predVGen v.isAux BeforeObjs v) ; ----
lin
ICompAP ap = {s = \\agr => "hoe" ++ ap.s ! agr ! APred} ;
ICompAP = E.ICompAP ;
IAdvAdv adv = {s = "hoe" ++ adv.s} ;
IAdvAdv = E.IAdvAdv ;
lincat
VPS = {s : Order => Agr => Str} ;

View File

@@ -169,7 +169,7 @@ lin weven_V = mkV "weven" "weefde" "weefden" "geweven" ;
lin wijken_V = mkZijnV "wijken" "week" "weken" "geweken" ;
lin wijten_V = mkV "wijten" "weet" "weten" "geweten" ;
lin wijzen_V = mkV "wijzen" "wees" "wezen" "gewezen" ;
lin willen_V = mkV "wil" "wilt" "wil" "willen" "wilde" "wilde" "wilden" "gewild" ; -- mkV "wil" "wilt" "wil" "willen" "wou" "wou" "wouden" "gewild" ;
lin willen_V = mkV "wil" "wil" "wil" "willen" "wilde" "wilde" "wilden" "gewild" ; -- mkV "wil" "wilt" "wil" "willen" "wou" "wou" "wouden" "gewild" ;
lin winden_V = mkV "winden" "wond" "wonden" "gewonden" ;
lin winnen_V = mkV "winnen" "won" "wonnen" "gewonnen" ;
lin worden_V = mkV "worden" "werd" "werden" "geworden" ;

View File

@@ -9,22 +9,17 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in {
isPron = False ;
} ;
DetNP det = {
DetNP det = det ** {
s = \\_ => det.sp ! Neutr ;
a = agrP3 det.n ;
isPron = False ;
mergesWithPrep = det.mergesWithPrep ;
mergeForm = det.mergeForm
isPron = False
} ;
UsePN pn = noMerge ** {s = pn.s ; a = agrP3 Sg ; isPron = False} ;
UsePron pron = {
UsePron pron = pron ** {
s = table {NPNom => pron.stressed.nom ; NPAcc => pron.stressed.acc} ;
a = pron.a ;
isPron = True ;
mergesWithPrep = pron.mergesWithPrep ;
mergeForm = pron.mergeForm
} ;
PredetNP pred np = heavyNP {
@@ -50,33 +45,30 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in {
DetQuantOrd quant num ord =
let
n = num.n ;
a = quant.a
in {
s = \\g => quant.s ! num.isNum ! n ! g ++
num.s ++ ord.s ! agrAdj g quant.a (NF n Nom) ;
sp = \\g => quant.sp ! n ! g ++
num.s ++ ord.s ! agrAdj g quant.a (NF n Nom) ;
n = n ;
a = a ;
mergesWithPrep = quant.mergesWithPrep ;
mergeForm = quant.mergeForm
detQuant = DetQuant quant num ;
af : Gender -> AForm = \g -> agrAdj g quant.a (NF num.n Nom) ;
in detQuant ** {
-- When combined with an ord, don't use the sp form of the quant.
-- Works the same way in English:
-- e.g. s="your", sp="yours" -> s,sp="your youngest", not sp="*yours youngest"
s,sp = \\g => detQuant.s ! g ++ ord.s ! af g ;
-- Even if the original quant merges; when you add an ord, it doesn't.
mergesWithPrep = False
} ;
DetQuant quant num =
let
n = num.n ;
a = quant.a
in {
in quant ** {
s = \\g => quant.s ! num.isNum ! n ! g ++ num.s ;
sp = \\g => case num.isNum of {
False => quant.sp ! n ! g ++ num.s ;
True => quant.s ! True ! n ! g ++ num.s
True => quant.s ! True ! n ! g ++ num.s -- to prevent "een 5 …"
} ;
n = n ;
a = a ;
mergesWithPrep = quant.mergesWithPrep ;
mergeForm = quant.mergeForm
} ;
PossPron p = noMerge ** {

View File

@@ -47,9 +47,10 @@ resource ResDut = ParamX ** open Prelude, Predef in {
_ + ("ie"|"ee") => mkNoun s (s + "ën") Utr ; -- zee→zeeën, knie→knieën.
-- olie→oliën, industrie→industrieën with 2-arg constructor.
_ + ("i"|"u") => mkNoun s (endCons s + "en") Utr ;
b + #diphthong + ? => mkNoun s (endCons s + "en") Utr ; -- boek→boeken
b + v@#dupVow + c@? => mkNoun s (b + shortVoc v c + "en") Utr ;
b + v@#vowel + c@#dupCons => mkNoun s (b + v + c + c + "en") Utr ;
b + v@#dupVow + c@? => mkNoun s (b + shortVoc v c + "en") Utr ;
b + #diphthong + ? => mkNoun s (endCons s + "en") Utr ;
_ + "e" => mkNoun s (s + "s") Utr ; -- vrede→vredes. Might not be a good generalisation though. /IL2018
_ => mkNoun s (endCons s + "en") Utr
} ;
@@ -110,7 +111,7 @@ resource ResDut = ParamX ** open Prelude, Predef in {
b + v@#dupVow + c@? => b + shortVoc v c + "e" ;
b + #diphthong + ? => endCons s + "e" ;
b + v@#vowel + c@dupCons => b + v + c + c + "e" ;
b + v@#vowel + c@#dupCons => b + v + c + c + "e" ;
_ => endCons s + "e"
} ;
in reg2Adjective s se ;
@@ -357,7 +358,7 @@ param
VInf => "zullen" ;
VInfFull => "zullen" ;
VPresSg1 => "zal" ;
VPresSg2 => "zult" ;
VPresSg2 => "zal" ;
VPresSg3 => "zal" ;
VPresPl => "zullen" ;
VPastSg => "zou" ; --# notpresent
@@ -382,7 +383,7 @@ param
VInf => "kunnen" ;
VInfFull => "kunnen" ;
VPresSg1 => "kan" ;
VPresSg2 => "kunt" ;
VPresSg2 => "kan" ;
VPresSg3 => "kan" ; ---- kun je
VPresPl => "kunnen" ;
VPastSg => "kon" ; --# notpresent

View File

@@ -36,7 +36,7 @@ concrete AdjectiveEng of Adjective = CatEng ** open ResEng, Prelude in {
} ;
SentAP ap sc = {
s = \\a => ap.s ! a ++ sc.s ;
s = \\a => ap.s ! a ++ sc.s ! a ;
isPre = False
} ;

View File

@@ -1,4 +1,4 @@
concrete CatEng of Cat = CommonX - [Pol] ** open ResEng, Prelude in {
concrete CatEng of Cat = CommonX - [Pol,SC] ** open ResEng, Prelude in {
flags optimize=all_subs ;
@@ -49,6 +49,7 @@ concrete CatEng of Cat = CommonX - [Pol] ** open ResEng, Prelude in {
-- Adjective
AP = {s : Agr => Str ; isPre : Bool} ;
SC = {s : Agr => Str} ;
-- Noun

View File

@@ -141,7 +141,7 @@ concrete ExtendEng of Extend =
isPre = vp.isSimple -- depends on whether there are complements
} ;
EmbedPresPart vp = {s = infVP VVPresPart vp Simul CPos (agrP3 Sg)} ; --- agr
EmbedPresPart vp = {s = \\a => infVP VVPresPart vp Simul CPos a} ;
PastPartAP vp = {
s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ vp.ext ;
@@ -282,6 +282,8 @@ concrete ExtendEng of Extend =
lin
AdAdV = cc2 ;
AdjAsCN ap = let cn = mkNoun "one" "one's" "ones" "ones'" ** {g = Neutr}
in {
s = \\n,c => preOrPost ap.isPre (ap.s ! agrgP3 n cn.g) (cn.s ! n ! c) ;
@@ -292,6 +294,8 @@ concrete ExtendEng of Extend =
a = agrgP3 Sg nonhuman
} ;
PositAdVAdj a = {s = a.s ! AAdv} ;
lincat
RNP = {s : Agr => Str} ;
RNPList = {s1,s2 : Agr => Str} ;

View File

@@ -91,7 +91,7 @@ concrete ExtraEng of ExtraEngAbs = CatEng **
isPre = vp.isSimple -- depends on whether there are complements
} ;
EmbedPresPart vp = {s = infVP VVPresPart vp Simul CPos (agrP3 Sg)} ; --- agr
EmbedPresPart vp = {s = \\a => infVP VVPresPart vp Simul CPos a} ; --- agr
UttVPShort vp = {s = infVP VVAux vp Simul CPos (agrP3 Sg)} ;

View File

@@ -11,10 +11,10 @@ concrete GrammarEng of Grammar =
RelativeEng,
ConjunctionEng,
PhraseEng,
TextX - [Pol,PPos,PNeg],
TextX - [Pol,PPos,PNeg,SC],
StructuralEng,
IdiomEng,
TenseX - [Pol,PPos,PNeg]
TenseX - [Pol,PPos,PNeg,SC]
** open ResEng, Prelude in {
flags startcat = Phr ; unlexer = text ; lexer = text ;

View File

@@ -141,7 +141,7 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
} ;
AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s ; g = cn.g} ;
SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s ; g = cn.g} ;
SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s ! agrgP3 n cn.g ; g = cn.g} ;
ApposCN cn np = {s = \\n,c => cn.s ! n ! Nom ++ np.s ! NCase c ; g = cn.g} ;

View File

@@ -1,7 +1,7 @@
--# -path=.:../abstract:../translator
concrete ParseEng of ParseEngAbs =
TenseX - [Pol, PNeg, PPos],
TenseX - [Pol, PNeg, PPos, SC],
CatEng,
NounEng - [PPartNP],
AdjectiveEng,
@@ -142,7 +142,7 @@ lin
VPSlashVS vs vp =
insertObj (\\a => infVP VVInf vp Simul CPos a) (predV vs) **
{c2 = ""; gapInMiddle = False} ;
{c2 = ""; missingAdv = False; gapInMiddle = False} ;
PastPartRS ant pol vps = {
s = \\agr => vps.ad ! agr ++ vps.ptp ++ vps.s2 ! agr ;

View File

@@ -6,7 +6,7 @@ concrete SentenceEng of Sentence = CatEng ** open Prelude, ResEng in {
PredVP np vp = mkClause (np.s ! npNom) np.a vp ;
PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
PredSCVP sc vp = let a = agrP3 Sg in mkClause (sc.s ! a) a vp ;
ImpVP vp = {
s = \\pol,n =>
@@ -37,9 +37,9 @@ concrete SentenceEng of Sentence = CatEng ** open Prelude, ResEng in {
(insertObj (\\_ => conjThat ++ slash.s) (predV vs)) **
{c2 = slash.c2} ;
EmbedS s = {s = conjThat ++ s.s} ;
EmbedQS qs = {s = qs.s ! QIndir} ;
EmbedVP vp = {s = infVP VVInf vp Simul CPos (agrP3 Sg)} ; --- agr
EmbedS s = {s = \\_ => conjThat ++ s.s} ;
EmbedQS qs = {s = \\_ => qs.s ! QIndir} ;
EmbedVP vp = {s = \\a => infVP VVInf vp Simul CPos a} ;
UseCl t p cl = {
s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! oDir

View File

@@ -161,6 +161,9 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
CompPartAP ap = {
s = \\agr => ap.s ! False ! NCase (complNumAgr agr) ResFin.Part
} ;
CompNomAP ap = {
s = \\agr => ap.s ! False ! NCase (complNumAgr agr) ResFin.Nom
} ;
---- copied from VerbFin.CompAP, should be shared
ICompAP ap = {

View File

@@ -28,7 +28,8 @@ abstract ExtraFinAbs = Extra [
vai_Conj : Conj ; -- minä vai sinä? ("or" in question)
CompPartAP : AP -> Comp ; -- kahvi on valmista
CompPartAP : AP -> Comp ; -- kahvi on valmista: partitive complement also in singular
CompNomAP : AP -> Comp ; -- kengät ovat mustat: nominative complement also in plural
ProDropPoss : Pron -> Quant ; -- vaimoni

View File

@@ -42,16 +42,17 @@ incomplete concrete CatScand of Cat =
s : Voice => VPForm => {
fin : Str ; -- V1 har ---s1
inf : Str ; -- V2 sagt ---s4
a1 : Polarity => Agr => Str * Str ; -- A1 inte ---s3 själv/själva/självt
a1 : Polarity => Agr => Str * Str -- A1 inte ---s3 själv/själva/självt
-- p1: with infinite "jag har inte älskat dig",
-- p2: without infinite "jag älskar dig inte"
-- p2: without infinite "jag älskar dig inte"
} ;
sp : PartForm => Str ;
n1 : Agr => Str ; -- N2 dig ---s5
n2 : Agr => Str ; -- N2 den där mannen ---s5
a2 : Str ; -- A2 idag ---s6
ext : Str ; -- S-Ext att hon går ---s7
en2,ea2,eext : Bool -- indicate if the field exists
en2,ea2,eext : Bool ; -- indicate if the field exists
isSimple : Bool
} ;
VPSlash = CommonScand.VP ** {
n3 : Agr => Str ; -- object-control complement
@@ -132,13 +133,12 @@ incomplete concrete CatScand of Cat =
V2V = \v -> infVP (predV v) agrUSgP3 ++ v.c2.s ;
Conj = \c -> c.s1 ++ c.s2 ;
{-
A = \a -> a.s ! AAdj Posit Nom ;
A2 = \a -> a.s ! AAdj Posit Nom ++ a.c2 ;
N = \n -> n.s ! Sg ! Nom ;
N2 = \n -> n.s ! Sg ! Nom ++ n.c2 ;
N3 = \n -> n.s ! Sg ! Nom ++ n.c2 ++ n.c3 ;
-}
A = \a -> a.s ! AF (APosit (Strong (GSg Utr))) Nom ;
A2 = \a -> a.s ! AF (APosit (Strong (GSg Utr))) Nom ++ a.c2.s ;
N = \n -> n.s ! Sg ! Indef ! Nom ;
N2 = \n -> n.s ! Sg ! Indef ! Nom ++ n.c2.s ;
N3 = \n -> n.s ! Sg ! Indef ! Nom ++ n.c2.s ++ n.c3.s ;
}

View File

@@ -297,7 +297,8 @@ oper
a2 : Str ; -- A2 idag ---s6
ext : Str ; -- S-Ext att hon går ---s7
--- ea1,ev2, --- these depend on params of v and a1
en2,ea2,eext : Bool -- indicate if the field exists
en2,ea2,eext : Bool ; -- indicate if the field exists
isSimple : Bool
} ;
@@ -305,6 +306,7 @@ oper
n1 = \\a => vp.n1 ! a ++ if_then_Str isPron (obj ! a) [] ;
n2 = \\a => vp.n2 ! a ++ if_then_Str isPron [] (obj ! a) ;
en2 = notB isPron ;
isSimple = False
} ;
insertObj : (Agr => Str) -> VP -> VP = insertObjPron False ;
@@ -312,16 +314,19 @@ oper
insertObjPost : (Agr => Str) -> VP -> VP = \obj,vp -> vp ** {
n2 = \\a => vp.n2 ! a ++ obj ! a ;
en2 = True ;
isSimple = False
} ;
insertAdv : Str -> VP -> VP = \adv,vp -> vp ** {
a2 = vp.a2 ++ adv ;
ea2 = True ;
isSimple = False
} ;
insertExt : Str -> VP -> VP = \ext,vp -> vp ** {
ext = vp.ext ++ ext ;
eext = True ;
isSimple = False
} ;
insertAdV : Str -> VP -> VP = \adv -> insertAdVAgr (\\_ => adv) ;

View File

@@ -82,7 +82,8 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
n2 : Agr => Str = \\a => verb.part ; ---- check: hon ser (inte) vacker ut ; spotta (inte) ut snusen
a2 : Str = [] ;
ext : Str = [] ;
en2,ea2,eext : Bool = False -- indicate if the field exists
en2,ea2,eext : Bool = False ; -- indicate if the field exists
isSimple = True
} ;
comma : Str = SOFT_BIND ++ "," ;

View File

@@ -89,13 +89,13 @@ oper mkLanguage : Str -> N = \s -> mkN s ;
----------------------------------------------
---- lexicon of special names
lin monday_Weekday = mkN "måndag" ;
lin tuesday_Weekday = mkN "tisdag" ;
lin wednesday_Weekday = mkN "onsdag" ;
lin thursday_Weekday = mkN "torsdag" ;
lin friday_Weekday = mkN "fredag" ;
lin saturday_Weekday = mkN "lördag" ;
lin sunday_Weekday = mkN "söndag" ;
lin monday_Weekday = changeCompoundN "måndags" (mkN "måndag") ;
lin tuesday_Weekday = changeCompoundN "tisdags" (mkN "tisdag") ;
lin wednesday_Weekday = changeCompoundN "onsdags" (mkN "onsdag") ;
lin thursday_Weekday = changeCompoundN "torsdags" (mkN "torsdag") ;
lin friday_Weekday = changeCompoundN "fredags" (mkN "fredag") ;
lin saturday_Weekday = changeCompoundN "lördags" (mkN "lördag") ;
lin sunday_Weekday = changeCompoundN "söndags" (mkN "söndag") ;
lin january_Month = mkN "januari" ;
lin february_Month = mkN "februari" ;

View File

@@ -2,11 +2,13 @@
concrete ExtendSwe of Extend = CatSwe **
ExtendFunctor -
[
GenNP, ComplBareVS, CompBareCN,
GenNP, GenModNP, ComplBareVS, CompBareCN,
StrandRelSlash, EmptyRelSlash, StrandQuestSlash,
PassVPSlash, PassAgentVPSlash,
MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
ICompAP,
AdAdV, PositAdVAdj, GerundCN, GerundNP, GerundAdv, PresPartAP, PastPartAP, PastPartAgentAP,
RNP, RNPList, ReflRNP, ReflPron, ReflPoss, PredetRNP, ConjRNP,
Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP,
CompoundN
@@ -24,6 +26,7 @@ concrete ExtendSwe of Extend = CatSwe **
det = DDef Indef
} ;
GenModNP num np cn = DetCN (DetQuant (GenNP (lin NP np)) num) cn ;
ComplBareVS v s = insertObj (\\_ => s.s ! Sub) (predV v) ;
@@ -40,7 +43,7 @@ concrete ExtendSwe of Extend = CatSwe **
} ;
EmptyRelSlash slash = {
s = \\t,a,p,ag,_ =>
slash.s ! t ! a ! p ! Sub ++ slash.c2.s ;
slash.s ! t ! a ! p ! Sub ++ slash.n3 ! ag ++ slash.c2.s ;
c = NPAcc
} ;
@@ -56,6 +59,11 @@ concrete ExtendSwe of Extend = CatSwe **
}
} ;
lin
PassVPSlash vps =
insertObj (\\a => vps.c2.s ++ vps.n3 ! a) (passiveVP vps) ;
PassAgentVPSlash vps np =
insertObjPost (\\a => vps.c2.s ++ vps.n3 ! a) (insertObj (\\_ => (PrepNP by8agent_Prep np).s) (passiveVP vps)) ;
lincat
VPI = {s : VPIForm => Agr => Str} ;
@@ -149,5 +157,47 @@ concrete ExtendSwe of Extend = CatSwe **
co = n1.co ++ BIND ++ n2.co ;
g = n2.g
} ;
lin
AdAdV = cc2 ;
PositAdVAdj a = {s = a.s ! AAdv} ;
PresPartAP vp = {
s = \\af => case vp.isSimple of {
True => partVPPlus vp (PartPres Sg Indef Nom) (aformpos2agr af) Pos ;
False => partVPPlusPost vp (PartPres Sg Indef Nom) (aformpos2agr af) Pos
} ;
isPre = vp.isSimple
} ;
PastPartAP vp = {
s = \\af => case vp.isSimple of {
True => partVPPlus vp (PartPret af Nom) (aformpos2agr af) Pos ;
False => partVPPlusPost vp (PartPret af Nom) (aformpos2agr af) Pos
} ;
isPre = vp.isSimple
} ;
PastPartAgentAP vp np = {
s = \\af => partVPPlusPost vp (PartPret af Nom) (aformpos2agr af) Pos ++ "av" ++ np.s ! accusative ;
isPre = False
} ;
GerundCN vp = { -- infinitive: att dricka öl, att vara glad
s = \\_,_,_ => "att" ++ infVP vp {g = Utr ; n = Sg ; p = P3} ;
g = Neutr ;
isMod = False
} ;
GerundNP vp = { -- infinitive: att dricka öl, att vara glad
s = \\_ => "att" ++ infVP vp {g = Utr ; n = Sg ; p = P3} ;
a = {g = Neutr ; n = Sg ; p = P3} ;
isPron = False
} ;
GerundAdv vp = {
s = partVPPlusPost vp (PartPres Sg Indef (Nom|Gen)) {g = Utr ; n = Sg ; p = P3} Pos -- sovande(s) i sängen
} ;
}

View File

@@ -167,7 +167,7 @@ lin
shirt_N = regGenN "skjorta" utrum ;
shoe_N = mk2N "sko" "skor" ;
shop_N = mk2N "affär" "affärer" ;
short_A = regA "kort" ;
short_A = mkA "kort" "kort" ;
silver_N = mkN "silver" "silvret" "silver" "silvren" ;
sister_N = mk2N "syster" "systrar" ;
sleep_V = (irregV "sova" "sov" "sovit") ;

View File

@@ -757,7 +757,7 @@ oper
mkV2V : V -> V2V =
\v -> mmkV2 v (mkPrep []) ** {c3 = mkComplement "att" ; lock_V2V = <>} ;
mkV2V : V -> Prep -> Prep -> V2V =
\v, p, t -> mmkV2 v p ** {c3 = mkComplement p.s ; lock_V2V = <>} ;
\v, p, t -> mmkV2 v p ** {c3 = mkComplement t.s ; lock_V2V = <>} ;
mkV2V : (x,y,z : Str) -> V2V = \x,y,z -> mmkV2 (irregV x y z) (mkPrep []) ** {c3 = mkComplement "att" ; lock_V2V = <>} ;
mkV2V : (x,y,z,u,v,w : Str) -> V2V = \x,y,z,u,v,w -> mmkV2 (mkV x y z u v w) (mkPrep []) ** {c3 = mkComplement "att" ; lock_V2V = <>} ;
} ;

View File

@@ -1,135 +0,0 @@
import qualified Data.Map
import qualified Data.Set
import Data.List
langs = words "Bul Cat Chi Dut Eng Fin Fre Ger Hin Ita Jpn Mlt Spa Swe Tha"
-- apply a function to every line, changing it to a list
changeLinesLang :: (String -> [String]) -> String -> IO ()
changeLinesLang f lang = do
dict <- readFile (gfFile "Dictionary" lang) >>= return . lines
writeFile (gfFile "tmp/Dictionary" lang) $ unlines $ concatMap f dict
createAllConcretes = do
createAbstract
mapM_ createConcrete langs
createAbstract = do
bnc <- readFile "bnc-to-check.txt" >>= return . words -- list of BNC funs
writeFile (gfFile "todo/tmp/TopDictionary" "") $
unlines $ ["abstract TopDictionary = Cat **{"] ++
[unwords ("fun":f:":": snd (splitFun f) :[";"]) | f <- bnc] ++ ["}"] -- print inspectable file, to todo/tmp/
createConcrete lang = do
bnc <- readFile "bnc-to-check.txt" >>= return . words -- list of BNC funs
dict <- readFile (gfFile "Dictionary" lang) >>= return . lines -- current lang lexicon
let header = getHeader dict
let dictmap = Data.Map.fromList [(f,unwords ws) | "lin":f:"=":ws <- map words dict] -- lin rules to a map
let bncdict = [(f,lookupFun f dictmap) | f <- bnc] -- current lang for BNC
writeFile (gfFile "todo/tmp/TopDictionary" lang) $
unlines $ toTop header ++ [unwords ("lin":f:"=":[ws]) | (f,ws) <- bncdict] ++ ["}"] -- print inspectable file, to todo/tmp/
gfFile body lang = body ++ lang ++ ".gf"
mergeDict lang = do
old <- readFile (gfFile "Dictionary" lang) >>= return . lines -- read old lexicon
new <- readFile (gfFile "todo/TopDictionary" lang) >>= return . lines -- read corrected and new words
let header = getHeader new
let oldmap = Data.Map.fromList [(f,unwords ws) | "lin":f:"=":ws <- map words old]
let newlist = [(f,unwords ws) | "lin":f:"=":ws <- map words new]
let newmap = foldr (uncurry Data.Map.insert) oldmap newlist -- insert corrected words
writeFile (gfFile "tmp/Dictionary" lang) $
unlines $ fromTop header ++ [unwords ("lin":f:"=":[ws]) | (f,ws) <- Data.Map.assocs newmap] ++ ["}"] -- print revised file to tmp/
changeFunNames nameFile lang = do
ns <- readFile nameFile
let names = Data.Map.fromList [(old,new) | old:new:_ <- map words (lines ns)] -- format: "old new" on separate lines
let look w = Data.Map.lookup w names
dict <- readFile (gfFile "Dictionary" lang) >>= return . lines -- read old lexicon
let
change line = case words line of
"lin":f:ws -> case look f of
Just g -> unwords $ "lin":g:ws
_ -> line
_ -> line
writeFile (gfFile "tmp/Dictionary" lang) $ unlines $ map change dict
-- get the part of Dict before the first lin rule
getHeader = takeWhile ((/= "lin") . take 3)
toTop = map tt where
tt s = case s of
'D':'i':'c':'t':cs -> "TopDict" ++ tt cs
c:cs -> c : tt cs
_ -> s
fromTop = map tt where
tt s = case s of
'T':'o':'p':'D':'i':'c':'t':cs -> "Dict" ++ tt cs
c:cs -> c : tt cs
_ -> s
-- try to find lin rules by searching first literally, then subcategories in priority order
lookupFun f dictmap = case look f of
Just rule | notEmpty rule -> rule
_ -> case [r | Just r <- map look (subCats f), notEmpty r] of
rule:_ -> "variants{}; -- " ++ rule -- cannot return it as such, as probably type incorrect
_ -> "variants{} ; -- "
where
look = flip Data.Map.lookup dictmap
notEmpty r = take 1 (words r) `notElem` [["variants"],["variants{}"]]
subCats f = case splitFun f of
(fun,cat) -> case cat of
"V" -> [fun ++ c | c <- words "V2 V3 VS VQ VA VV V2S V2Q V2A V2V"]
"V2" -> [fun ++ c | c <- words "V3 V2S V2Q V2A V2V V VS VQ VA VV"]
"VS" -> [fun ++ c | c <- words "VQ V2S V2Q V2 V V2A V2V V3 VA VV"]
"VQ" -> [fun ++ c | c <- words "VS V2Q V2S V2 V V2A V2V V3 VA VV"]
"VA" -> [fun ++ c | c <- words "V V2A V2 V3 VS VQ VV V2S V2Q V2V"]
"VV" -> [fun ++ c | c <- words "V2V V V2 V3 VS VQ VV V2S V2Q V2V"]
"V3" -> [fun ++ c | c <- words "V2 V2S V2Q V2A V2V V VS VQ VA VV"]
"V2S" -> [fun ++ c | c <- words "VS VQ V2Q V2A V2V V2 V3 VA V VV"]
"V2Q" -> [fun ++ c | c <- words "VQ VS V2S V2A V2V V2 V3 VA V VV"]
"V2A" -> [fun ++ c | c <- words "VA V2 V3 V VS VQ VV V2S V2Q V2V"]
"V2V" -> [fun ++ c | c <- words "VV V2 V2 V VS VQ VV V2S V2Q V2V"]
"Adv" -> [fun ++ c | c <- words "AdV Prep"]
"AdV" -> [fun ++ c | c <- words "Adv Prep"]
_ -> []
splitFun f = case span (/='_') (reverse f) of (tac,nuf) -> (reverse nuf, reverse tac)
------ word statistics
isUnchecked line = isInfixOf "--" line -- checked = no comments
isUnknown line = isInfixOf "{}" line -- known = not variants {}
statLang lang = do
dict <- readFile (gfFile "Dictionary" lang) >>= return . lines
let lins = filter ((==["lin"]) . take 1 . words) dict
let nall = length $ filter (not . isUnknown) lins
let nchecked = length $ filter (not . (\x -> isUnknown x || isUnchecked x)) lins
putStrLn $ lang ++ "\t" ++ show nall ++ "\t" ++ show nchecked
statAll = mapM_ statLang langs
{-
-- lin f = def ; -- comment
analyseLine :: String -> (String,String,String,String,String)
analyseLine s = case words s of
k:f:s:dc -> (k,f,s)
-------
-- handle split senses: remove the unsplit variant ; if the split ones are empty, copy the unsplit to them
handleSplit :: Data.Set.Set String -> String -> [String]
handleSplit sset line =
let (keyw,fun,sep,def,comment) = analyseLine line
-}

View File

@@ -1,42 +0,0 @@
-- elementary soundness check of a dictionary, e.g. if all verbs have verb-like endings
-- usage: checkSoundness <Filename> <Lang>
-- comment out bad lines in tmp/file with --UNSOUND
checkSoundness file lang = do
dict <- readFile file >>= return . lines
let wrongs = [(if has then ("--UNSOUND " ++ d) else d,has) | d <- dict, let has = hasError lang (words d)]
putStrLn $ unlines $ [p | (p,h) <- wrongs, h]
writeFile ("tmp/" ++ file) $ unlines $ map fst wrongs
hasError lang ws = case ws of
u:v:ww | isError lang u v -> True
_:v:ww -> hasError lang (v:ww)
_ -> False
isError lang u v = case lang of
"Spa" -> case bareOp u of
"mkV" | head v == '"' -> notElem (dp 2 (stringOf v)) ["ar","er","ir","se"] || elem '_' v
"mkV2" | head v == '"' -> notElem (dp 2 (stringOf v)) ["ar","er","ir","se"] || elem '_' v
"mkA" -> elem '_' (stringOf v)
_ -> False
"Ita" -> case take 3 (bareOp u) of
"mkV" | head v == '"' -> notElem (dp 3 (stringOf v)) ["are","ere","ire","rsi"] || elem '_' v
"mkA" -> elem '_' (stringOf v)
_ -> False
"Fre" -> case take 3 (bareOp u) of
"mkV" | head v == '"' -> notElem (dp 2 (stringOf v)) ["er","ir","re"] || elem '_' v
"mkv" | head v == '"' -> notElem (dp 2 (stringOf v)) ["er","ir","re"] || elem '_' v
_ | bareOp u == "mkA" -> elem '_' (stringOf v)
_ -> False
"Ger" -> case bareOp u of
"mkV" | head v == '"' -> notElem (dp 2 (stringOf v)) ["en","rn","ln"]
_ -> False
dp :: Int -> String -> String
dp i s = drop (length s - i) s
stringOf s = takeWhile (/='"') (tail s)
bareOp = filter (flip notElem "()")
lexs s = case lex s of [(t,cs@(_:_))] -> t:lexs cs ; [(t,[])] -> [t] ; _ -> []

View File

@@ -1,29 +0,0 @@
abstract Dataview = Dictionary ** {
-- Generating database entries from Dictionary
-- AR 9/1/2015 under LGPL/BSD
cat
Row ; -- a row in the database
fun
RowN : N -> Row ;
RowN2 : N2 -> Row ;
RowN3 : N3 -> Row ;
RowA : A -> Row ;
RowA2 : A2 -> Row ;
RowV : V -> Row ;
RowV2 : V2 -> Row ;
RowVV : VV -> Row ;
RowVS : VS -> Row ;
RowVQ : VQ -> Row ;
RowVA : VA -> Row ;
RowV3 : V3 -> Row ;
RowV2V : V2V -> Row ;
RowV2S : V2S -> Row ;
RowV2Q : V2Q -> Row ;
RowV2A : V2A -> Row ;
RowAdv : Adv -> Row ;
RowPrep : Prep -> Row ;
}

View File

@@ -1,27 +0,0 @@
module Dataview where
import Data.List
dataFile :: FilePath -> IO ()
dataFile file = do
wss <- readFile file >>= return . filter (not . null) . map commaSep . lines
let d = view2data wss
writeFile (file ++ ".tsv") (unlines d)
view2data :: [[String]] -> [String]
view2data ss = case ss of
s:ss2 -> case s of
"Dataview":f:_ ->
let (s1,s2) = break ((=="Dataview") . head) ss2
in [last (words f) ++ sp ++ values l | l <- s1] ++ view2data s2
_ -> error (show s)
_ -> []
where
values (w:ws) = concat $ intersperse sp $ map normalize $ case w of {'D':'a':'t':'a':'v':'i':'e':'w':_:_ -> ws ; _ -> w:ws}
sp = "\t"
commaSep :: String -> [String]
commaSep = lines . map (\c -> if elem c ":," then '\n' else c) . normalize
normalize = unwords . words

View File

@@ -1,74 +0,0 @@
concrete DataviewSwe of Dataview = DictionarySwe ** open ResSwe, CommonScand, Prelude in {
-- Generating database entries from Dictionary
-- AR 9/1/2015 under LGPL/BSD
lincat
Row = {s : Str} ; -- a row in the database
lin
RowN noun = ss (sep
(noun.s ! Sg ! Indef ! Nom)
(noun.s ! Sg ! Def ! Nom)
(noun.s ! Pl ! Indef ! Nom)
(noun.s ! Pl ! Def ! Nom)
(gender (lin N noun))
[]
) ;
{-
RowN2 : N2 -> Row ;
RowN3 : N3 -> Row ;
RowA : A -> Row ;
RowA2 : A2 -> Row ;
-}
RowV verb = ss (sep (rowV (lin V verb)) []) ;
RowV2 verb = ss (sep (rowV (lin V verb)) (pad verb.c2.s) []) ;
oper
rowV : V -> Str = \verb -> sep
(verb.s ! VI (VInfin Act))
(verb.s ! VF (VPres Act))
(sep
(verb.s ! VF (VImper Act))
(verb.s ! VF (VPret Act))
(verb.s ! VI (VSupin Act))
(verb.s ! VI (VPtPret (Strong (GSg Utr)) Nom))
(pad verb.part)
(vtype verb.vtype)
) ;
{-
RowV2 : V2 -> Row ;
RowVV : VV -> Row ;
RowVS : VS -> Row ;
RowVQ : VQ -> Row ;
RowVA : VA -> Row ;
RowV3 : V3 -> Row ;
RowV2V : V2V -> Row ;
RowV2S : V2S -> Row ;
RowV2Q : V2Q -> Row ;
RowV2A : V2A -> Row ;
RowAdv : Adv -> Row ;
RowPrep : Prep -> Row ;
-}
oper
gender : N -> Str = \noun -> case noun.g of {Utr => "Utr" ; Neutr => "Neutr"} ;
vtype : VType -> Str = \vt -> case vt of {VAct => "Act" ; VPass => "Dep" ; VRefl => "Refl"} ;
oper
sep = overload {
sep : (_,_ : Str) -> Str = \x,y -> seps x y ;
sep : (_,_,_ : Str) -> Str = \x,y,z -> seps x (seps y z) ;
sep : (_,_,_,_ : Str) -> Str = \x,y,z,u -> seps x (seps y (seps z u)) ;
sep : (_,_,_,_,_ : Str) -> Str = \x,y,z,u,v -> seps x (seps y (seps z (seps u v))) ;
sep : (_,_,_,_,_,_ : Str) -> Str = \x,y,z,u,v,w -> seps x (seps y (seps z (seps u (seps v w)))) ;
} ;
seps : Str -> Str -> Str = \x,y -> x ++ BIND ++ "," ++ y ;
pad : Str -> Str = \s -> "+" ++ s ;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,523 +0,0 @@
--# -path=.:../maltese
-- Maltese translation dictionary
-- started by Aarne Ranta 2015
-- based on Maltese resource grammar by John J. Camilleri 2011 -- 2013
-- Licensed under LGPL
concrete DictionaryMlt of Dictionary = CatMlt ** open
MorphoMlt,
ResMlt,
ParadigmsMlt,
IrregMlt,
DictMlt,
(C = ConstructX),
Prelude
in {
flags
coding=utf8 ;
oper
fuqP = mkPrep "fuq" ;
ghandP = mkPrep "għand" ;
ghalP = mkPrep "għal" ;
minnP = mkPrep "minn" ;
goP = mkPrep "ġo" ;
lilP = mkPrep "lil" ;
maP = mkPrep "ma'" ;
taP = mkPrep "ta'" ;
saP = mkPrep "sa" ;
biP = mkPrep "bi" ;
fiP = mkPrep "fi" ;
lilV2 : V -> V2 ;
lilV2 v = prepV2 v (mkPrep "lil") ;
genderedN : N = overload {
genderedN : Str -> Str -> N = \qattus,qtates ->
let
m : N = mkN qattus qtates masculine ;
f : N = mkN (qattus+"a") qtates feminine ;
in (m | f) ;
genderedN : Str -> Str -> Str -> N = \qattus,qattusa,qtates ->
let
m : N = mkN qattus qtates masculine ;
f : N = mkN qattusa qtates feminine ;
in (m | f) ;
} ;
af_V = irregularV form1 (ResMlt.mkRoot "'-'-f") (ResMlt.mkVowels "a" [])
"kont naf" "kont taf" "kien jaf" "kienet taf" "konna nafu" "kontu tafu" "kienu jafu" --- will fail for negative
"naf" "taf" "jaf" "taf" "nafu" "tafu" "jafu"
"kun af" "kunu afu"
;
sata'_V = mkV "sata'" (ResMlt.mkRoot "s-t-għ") ;
ried_V = mkV "ried" (ResMlt.mkRoot "r-j-d") ;
kellu_V = irregularV form1 (ResMlt.mkRoot) (ResMlt.mkVowels)
"kelli" "kellek" "kellu" "kellha" "kellna" "kellkom" "kellhom"
"għandi" "għandek" "għandu" "għandha" "għandna" "għandkom" "għandhom"
"kollok" "kollkom"
;
lin above_Prep = mkPrep "fuq" ;
lin add_V3 = mkV3 zied_ZJD_1_10424_V maP ;
lin after_Prep = mkPrep "wara" ;
lin airplane_N = mkN "ajruplan" "ajruplani" ;
lin alas_Interj = ss "sfortunatament" ;
lin all_Predet = ss "kollha" ;
lin almost_AdA = mkAdA "kważi" ;
lin almost_AdN = mkAdN "kważi" ;
lin already_Adv = mkAdv "diġà" ;
lin although_Subj = ss "avolja" ;
lin always_AdV = mkAdV "dejjem" ;
lin and_Conj = mkConj "u" ;
lin animal_N = mkN "annimal" "annimali" ;
lin answer_V2S = lilV2 (wiegeb_WGB_3_10033_V) ;
lin apartment_N = mkN "appartament" "appartamenti" ;
lin apple_N = mkNColl "tuffieħa" "tuffieħ" "tuffieħat" ;
lin art_N = mkNNoPlural "arti" feminine ;
lin as_CAdv = C.mkCAdv "" "daqs" ; -- "as good as gold"
lin ashes_N = mkN "rmied" "rmiet" ;
lin ask_V2Q = lilV2 (saqsa_SQSJ_1_7268_V) ;
lin at_least_AdN = mkAdN "mill-inqas" ;
lin at_most_AdN = mkAdN "l-iktar" ;
lin baby_N = mkN "tarbija" "trabi" ;
lin back_N = possN (mkN "dahar" "dhur") ;
lin bad_A = brokenA "ħażin" "hżiena" "agħar" ;
lin bank_1_N = mkN "bank" "bankijiet" ;
lin bank_2_N = mkN "bank" "bankijiet" ;
lin bark_N = mkN "qoxra" "qoxriet" ;
lin beautiful_A = brokenA "sabiħ" "sbieħ" "isbaħ" ;
lin because_Subj = ss "għax" ;
lin become_VA = sar_SJR_1_9797_V ;
lin beer_N = mkN "birra" "birer" ;
lin before_Prep = mkPrep "qabel" "qabli" "qablek" "qablu" "qabilha" "qabilna" "qabilkom" "qabilhom" ;
lin beg_V2V = mkV2V ttallab_TLB_5_9893_V ghalP minnP ;
lin behind_Prep = after_Prep ;
lin belly_N = possN (mkN "żaqq" "żquq") ;
lin between_Prep = mkPrep "bejn" ;
lin big_A = brokenA "kbir" "kbar" "ikbar" ;
lin bike_N = mkN "rota" "roti" ;
lin bird_N = mkN "għasfur" "għasafar" ; -- genderedN
lin bite_V2 = lilV2 (gidem_GDM_1_8009_V) ;
lin black_A = mkA "iswed" "sewda" "suwed" ;
lin blood_N = possN (mkNColl "demm" "dmija") ;
lin blow_V = nefah_NFH_1_8966_V ;
lin blue_A = sameA "blu" ;
lin boat_N = mkN "dgħajsa" "dgħajjes" ;
lin bone_N = mkNColl "għadma" "għadam" "għadmiet" ;
lin book_N = mkN "ktieb" "kotba" ;
lin boot_N = mkNColl "żarbuna" "żarbun" "żraben" ;
lin boss_N = mkN "mgħallem" "mgħallmin" ;
lin both7and_DConj = mkConj "kemm" "u kemm";
lin boy_N = mkN "tifel" "subien" ;
lin bread_N = mkNColl "ħobża" "ħobż" "ħobżiet" ;
lin break_V2 = dirV2 (kiser_KSR_1_8636_V) ;
lin breast_N = possN (mkN "sider" "sdur") ;
lin breathe_V = mkV "respira" ; -- ĦA N-NIFS
lin broad_A = mkA "wiesgħa" "wiesgħa" "wiesgħin" ;
lin brother_N2 = mkN2 (possN (mkN "ħu" "aħwa")) ;
lin brown_A = sameA "kannella" ;
lin burn_V = haraq_HRQ_1_8367_V ;
lin but_PConj = ss "imma" ;
lin butter_N = mkNColl "butir" "butirijiet" ;
lin buy_V2 = dirV2 (xtara_XRJ_8_10296_V) ;
lin by8agent_Prep = prep_minn ; -- mkPrep "minn" "mill-" "mit-" ;
lin by8means_Prep = mkPrep "bi" "b'" "bil-" "bit-" "bl-" ;
lin camera_N = mkN "kamera" "kameras" ;
lin can8know_VV = af_V ;
lin can_VV = sata'_V ;
lin cap_1_N = mkN "kappell" "kpiepel" ;
lin cap_2_N = mkN "kappell" "kpiepel" ;
lin car_N = mkN "karozza" "karozzi" ;
lin carpet_N = mkN "tapit" "twapet" ;
lin cat_N = mkN "qattus" "qtates" ; -- genderedN
lin ceiling_N = mkN "saqaf" "soqfa" ;
lin chair_N = mkN "siġġu" "siġġijiet" ;
lin cheese_N = mkNColl "ġobna" "ġobon" "ġobniet" ;
lin child_N = mkN "tifel / tifla" "tfal" ; -- genderedN
lin church_N = mkN "knisja" "knejjes" ;
lin city_N = mkN "belt" "bliet" feminine ;
lin clean_A = brokenA "nadif" "nodfa" ;
lin clever_A = mkA "bravu" ;
lin close_V2 = dirV2 (ghalaq_GHLQ_1_10530_V) ;
lin cloud_N = mkNColl "sħaba" "sħab" "sħabiet" ;
lin coat_N = mkN "kowt" "kowtijiet" ;
lin cold_A = mkA "kiesaħ" "kiesħa" "kesħin" ;
lin come_V = gie_GJ'_1_8123_V ;
lin computer_N = mkN "kompjuter" "kompjuters" ;
lin correct_A = mkA "korrett" ;
lin count_V2 = dirV2 (ghadd_GHDD_1_10460_V) ;
lin country_N = possN (mkN "pajjiż" "pajjiżi") ;
lin cousin_N = mkN "kuġin" "kuġini" ; -- genderedN
lin cow_N = mkNColl "baqra" "baqar" "baqriet" ;
lin cut_V2 = dirV2 (qata'_QTGH_1_9305_V) ;
lin day_N = mkN "ġurnata" "ġranet" ;
lin die_V = miet_MWT_1_8923_V ;
lin dig_V = haffer_HFR_2_8236_V ;
lin dirty_A = mkA "maħmuġ" ;
lin distance_N3 = mkN3 (mkN "distanza") saP minnP ;
lin do_V2 = dirV2 (ghamel_GHML_1_10544_V) ;
lin doctor_N = mkN "tabib" "tobba" ; -- genderedN
lin dog_N = mkN "kelb" "klieb" ;
lin door_N = mkN "bieb" "bibien" ;
lin drink_V2 = dirV2 (xorob_XRB_1_10231_V) ;
lin dry_A = mkA "niexef" ;
lin dull_A = sameA "tad-dwejjaq" ;
lin during_Prep = mkPrep "waqt" ;
lin dust_N = mkNColl "traba" "trab" "trabiet" ;
lin ear_N = possN (mkNDual "widna" "widnejn" "widniet") ;
lin earth_N = mkN "art" "artijiet" feminine ;
lin easy_A2V = dirA2 (sameA "faċli") ;
lin eat_V2 = dirV2 (kiel_KJL_1_8672_V) ;
lin egg_N = mkNColl "bajda" "bajd" "bajdiet" ;
lin either7or_DConj = mkConj "jew" "inkella" ;
lin empty_A = mkA "vojt" "vojta" "vojta" ;
lin enemy_N = mkN "għadu" "għedewwa" ;
lin every_Det = mkDeterminer singular "kull" ;
lin everybody_NP = regNP "kulħadd" ;
lin everything_NP = regNP "kollox" ;
lin everywhere_Adv = mkAdv "kullimkien" ;
lin except_Prep = mkPrep "apparti" ; --- special case..
lin eye_N = possN (mkNDual "għajn" "għajnejn" "għajnejn" "għejun" feminine) ;
lin factory_N = mkN "fabbrika" "fabbriki" ;
lin fall_V = waqa'_WQGH_1_10070_V ;
lin far_Adv = mkAdv "il-bogħod" ; -- use glue?
lin fat_N = mkNColl "xaħma" "xaħam" "xaħmiet" "xaħmijiet" ;
lin father_N2 = mkN2 (possN (mkN "missier" "missirijiet")) ;
lin fear_V2 = prepV2 (beza'_BZGH_1_7541_V) minnP ;
lin fear_VS = beza'_BZGH_1_7541_V;
lin feather_N = mkNColl "rixa" "rix" "rixiet" ;
lin few_Det = mkDeterminer plural "ftit" ;
lin fight_V2 = prepV2 (ggieled_GLD_6_8074_V) maP ;
lin find_V2 = lilV2 (sab_SJB_1_9779_V) ;
lin fingernail_N = possN (mkNDual "difer" "difrejn" "dwiefer") ;
lin fire_N = mkN "nar" "nirien" ;
lin fish_N = mkNColl "ħuta" "ħut" "ħutiet" ;
lin float_V = gham_GHWM_1_10750_V ; ---
lin floor_N = mkN "art" "artijiet" feminine ;
lin flow_V = ghadda_GHDJ_2_10679_V ;
lin flower_N = mkN "fjura" "fjuri" ;
lin fly_V = tar_TJR_1_9972_V ;
lin fog_N = mkNColl "ċpar" ;
lin foot_N = possN (mkNDual "sieq" "saqajn" "saqajn" feminine) ;
lin for_Prep = mkPrep "għal" "għall-" "għall-" "għat-" "għall-" "għalija" "għalik" "għalih" "għaliha" "għalina" "għalikom" "għalihom" True ;
lin forest_N = mkN "foresta" "foresti" ;
lin forget_V2 = lilV2 (nesa_NSJ_1_9126_V) ;
lin freeze_V = ffriza_V ;
lin fridge_N = mkN "friġġ" "friġġijiet" ;
lin friend_N = possN (mkN "ħabib" "ħbieb") ; -- genderedN
lin from_Prep = mkPrep "mingħand" ;
lin fruit_N = mkNColl "frotta" "frott" "frottiet" "frottijiet" ;
lin full_A = mkA "mimli" ;
lin fun_AV = sameA "pjaċevoli" ;
lin garden_N = mkN "ġnien" "ġonna" ;
lin girl_N = mkN "tifla" "tfajliet" ;
lin give_V3 = mkV3 ta_GHTJ_1_10767_V lilP ;
lin glove_N = mkN "ingwanta" "ingwanti" ;
lin go_V = mar_MWR_1_8918_V ;
lin gold_N = mkNColl "deheb" "dehbijiet" ;
lin good_A = mkA "tajjeb" "tajba" "tajbin" ;
lin grammar_N = mkN "grammatika" "grammatiki" ;
lin grass_N = mkNColl "ħaxixa" "ħaxix" "ħxejjex" ;
lin green_A = mkA "aħdar" "ħadra" "ħodor" ;
lin guts_N = possN (mkN "musrana" "musraniet" "msaren") ;
lin hair_N = possN (mkNColl "xagħara" "xagħar" "xagħariet" "xgħur") ;
lin hand_N = possN (mkNDual "id" "idejn" "idejn" feminine) ;
lin harbour_N = mkN "port" "portijiet" ;
lin hat_N = mkN "kappell" "kpiepel" ;
lin hate_V2 = lilV2 (baghad_BGHD_1_7402_V) ;
lin have_V2 = dirV2 (kellu_V) ;
lin he_Pron = mkPron "hu" "u" singular P3 masculine ; --- also HUWA
lin head_N = possN (mkN "ras" "rjus" feminine) ;
lin hear_V2 = lilV2 (sema'_SMGH_1_9698_V) ;
lin heart_N = possN (mkN "qalb" "qlub" feminine) ;
lin heavy_A = brokenA "tqil" "tqal" "itqal" ;
lin here7from_Adv = mkAdv ["minn hawn"] ;
lin here7to_Adv = mkAdv ["s'hawn"] ;
lin here_Adv = mkAdv "hawn" ;
lin hill_N = mkN "għolja" "għoljiet" ;
lin hit_V2 = lilV2 (laqat_LQT_1_8772_V) ;
lin hold_V2 = lilV2 (zamm_ZMM_1_10392_V) ;
lin hope_VS = xtaq_XWQ_8_10313_V ;
lin horn_N = mkN "ħorn" "ħornijiet" ;
lin horse_N = mkN "żiemel" "żwiemel" ;
lin hot_A = mkA "jaħraq" "taħraq" "jaħarqu" ;
lin house_N = mkN "dar" "djar" feminine ;
lin how8many_IDet = {s = "kemm" ; n = plural} ;
lin how8much_IAdv = ss "kemm" ;
lin how_IAdv = ss "kif" ;
lin hunt_V2 = prepV2 (kaccac_KCC_2_8571_V) ghalP ;
lin husband_N = mkN "raġel" "rġiel" ;
lin i_Pron = mkPron "jien" "i" singular P1 masculine ; --- also JIENA
lin ice_N = mkN "silġ" "silġiet" ;
lin if_Subj = ss "jekk" ;
lin if_then_Conj = mkConj "jekk" ;
lin important_A = sameA "importanti" ;
lin in8front_Prep = mkPrep "quddiem" ;
lin in_Prep = mkPrep "fi" "f'" "fil-" "fit-" "fl-" ;
lin industry_N = mkN "industrija" "industriji" ;
lin iron_N = mkNColl "ħadida" "ħadid" "ħadidiet" "ħdejjed" ;
lin it_Pron = he_Pron ;
lin john_PN = mkPN "Ġanni" masculine singular ;
lin jump_V = qabez_QBZ_1_9182_V ;
lin kill_V2 = lilV2 (qatel_QTL_1_9312_V) ;
lin king_N = mkN "re" "rejjiet" ;
lin knee_N = possN (mkNDual "rkoppa" "rkopptejn" "rkoppiet") ;
lin know_V2 = lilV2 (af_''F_1_10774_V) ;
lin know_VQ = af_''F_1_10774_V ;
lin know_VS = af_''F_1_10774_V ;
lin lake_N = mkN "għadira" "għadajjar" ;
lin lamp_N = mkN "lampa" "lampi" ;
lin language_N = mkN "lingwa" "lingwi" ;
lin language_title_Utt = ss "Malti" ;
lin laugh_V = dahak_DHK_1_7688_V ;
lin leaf_N = mkNDual "werqa" "werqtejn" "werqiet" ;
lin learn_V2 = dirV2 (tghallem_GHLM_5_10527_V) ;
lin leather_N = mkN "ġilda" "ġildiet" ;
lin leave_V2 = prepV2 (telaq_TLQ_1_9903_V) minnP ;
lin left_Ord = mkOrd "xellug" ;
lin leg_N = (mkNDual "riġel" "riġlejn" "riġlejn") ;
lin less_CAdv = C.mkCAdv "inqas" "minn" ; --- inqas mill-ieħor
lin lie_V = mtedd_MDD_8_8816_V ; -- lie down
lin like_V2 = lilV2 (ghogob_GHGB_1_10485_V) ;
lin listen_V2 = lilV2 (sema'_SMGH_1_9698_V) ;
lin live_V = ghex_GHJX_1_10711_V ;
lin liver_N = mkN "fwied" "ifdwa" ;
lin long_A = brokenA "twil" "twal" "itwal" ;
lin lose_V2 = lilV2 (tilef_TLF_1_9895_V) ;
lin louse_N = mkN "qamla" "qamliet" ;
lin love_N = mkN "mħabba" "mħabbiet" ;
lin love_V2 = lilV2 (habb_HBB_1_8174_V) ;
lin man_N = mkN "raġel" "rġiel" ;
lin many_Det = mkDeterminer plural "ħafna" ;
lin married_A2 = mkA2 (mkA "miżżewweġ" "miżżewġa") lilP ;
lin meat_N = mkNColl "laħma" "laħam" "laħmiet" "laħmijiet" ;
lin milk_N = mkNColl "ħalib" "ħalibijiet" ;
lin moon_N = mkN "qamar" "oqmra" ;
lin more_CAdv = C.mkCAdv "iktar" "minn" ; --- iktar mit-tnejn
lin most_Predet = ss "il-maġġoranza ta'" ; --- tal-, tan-
lin mother_N2 = mkN2 (possN (mkN "omm" "ommijiet" feminine)) ;
lin mountain_N = mkN "muntanja" "muntanji" ;
lin mouth_N = possN (mkN "ħalq" "ħluq") ;
lin much_Det = mkDeterminer singular "ħafna" ;
lin music_N = mkN "mużika" "mużiki" ;
lin must_VV = kellu_V ;
lin name_N = possN (mkN "isem" "ismijiet") ;
lin narrow_A = mkA "dejjaq" "dejqa" "dojoq" "idjaq" ;
lin near_A = mkA "viċin" ;
lin neck_N = possN (mkN "għonq" "għenuq") ;
lin new_A = brokenA "ġdid" "ġodda" ;
lin newspaper_N = mkN "gazzetta" "gazzetti" ;
lin night_N = mkN "lejl" "ljieli" ;
lin no_Quant = let l_ebda = artDef ++ "ebda" in mkQuant l_ebda l_ebda l_ebda False ;
lin no_Utt = ss "le" ;
lin nobody_NP = regNP "ħadd" ;
lin nose_N = possN (mkN "mnieħer" "mniħrijiet") ;
lin not_Predet = ss "mhux" ;
lin nothing_NP = regNP "xejn" ;
lin now_Adv = mkAdv "issa" ;
lin number_N = mkN "numru" "numrui" ;
lin oil_N = mkN "żejt" "żjut" ;
lin old_A = brokenA "qadim" "qodma" "eqdem" ; -- xiħ
lin on_Prep = mkPrep "fuq" ;
lin only_Predet = ss "biss" ;
lin open_V2 = dirV2 (fetah_FTH_1_7932_V) ;
lin or_Conj = mkConj "jew" ;
lin otherwise_PConj = ss "inkella" ;
lin paint_V2A = dirV2 (zeba'_ZBGH_1_10339_V) ; -- dirV2 (pitter_PTR_2_9152_V) ;
lin paper_N = mkN "karta" "karti" ;
lin paris_PN = mkPN "Pariġi" feminine singular ;
lin part_Prep = possess_Prep ;
lin peace_N = mkN "paċi" "paċijiet" feminine ;
lin pen_1_N = mkN "pinna" "pinen" ;
lin pen_2_N = mkN "pinna" "pinen" ;
lin person_N = mkNColl "persuna" "persuni" ;
lin planet_N = mkN "pjaneta" "pjaneti" ;
lin plastic_N = mkNNoPlural "plastik" ;
lin play_V = daqq_DQQ_1_7736_V ;
lin play_V2 = prepV2 (laghab_LGHB_1_8724_V) maP ;
lin please_Voc = ss "jekk jgħoġbok" ; --- JEKK JGĦOĠOBKOM
lin policeman_N = mkNNoPlural "pulizija" ;
lin possess_Prep = prep_ta ; -- mkPrep "ta'" "t'" "tal-" "tat-" "tal-" ;
lin priest_N = mkN "qassis" "qassisin" ;
lin probable_AS = mkAS (sameA "probabbli") ;
lin pull_V2 = lilV2 (gibed_GBD_1_8043_V) ;
lin push_V2 = dirV2 (mbotta_V) ; -- GĦAFAS
lin put_V2 = lilV2 (qieghed_QGHD_3_9212_V) ;
lin queen_N = mkN "reġina" "rġejjen" ;
lin question_N = mkN "mistoqsija" "mistoqsijiet" ;
lin quite_Adv = mkAdv "pjuttost" ;
lin radio_N = mkN "radju" "radjijiet" ;
lin rain_N = mkNNoPlural "xita" ;
lin rain_V0 = xita_XTW_1_10297_V ; -- TAGĦMEL IX-XITA
lin read_V2 = dirV2 (qara_QRJ_1_9350_V) ;
lin ready_A = mkA "lest" ;
lin reason_N = mkN "raġun" "raġunijiet" ;
lin red_A = mkA "aħmar" "ħamra" "ħomor" ;
lin religion_N = mkN "reliġjon" "reliġjonijiet" ;
lin restaurant_N = mkN "restorant" "restoranti" ;
lin right_Ord = mkOrd "lemin" ;
lin river_N = mkN "xmara" "xmajjar" ;
lin road_N = mkN "triq" "triqat" "toroq" feminine ;
lin rock_1_N = mkNColl "blata" "blat" "blatiet" ;
lin rock_2_N = mkNColl "blata" "blat" "blatiet" ;
lin roof_N = mkN "saqaf" "soqfa" ;
lin root_N = mkN "qħerq" "qħeruq" ;
lin rope_N = mkN "ħabel" "ħbula" ;
lin rotten_A = mkA "mħassar" "mħassra" "mħassrin" ;
lin round_A = mkA "tond" ;
lin rub_V2 = dirV2 (ghorok_GHRK_1_10599_V) ;
lin rubber_N = mkN "gomma" "gomom" ;
lin rule_N = mkN "regola" "regoli" ;
lin run_V = gera_GRJ_1_8131_V ;
lin salt_N = mkN "melħ" "melħiet" ;
lin sand_N = mkNColl "ramla" "ramel" "ramliet" ;
lin say_VS = qal_QWL_1_9357_V ;
lin school_1_N = mkN "skola" "skejjel" ;
lin school_2_N = mkN "skola" "skejjel" ;
lin science_N = mkN "xjenza" "xjenzi" ;
lin scratch_V2 = lilV2 (barax_BRX_1_7504_V) ;
lin sea_N = mkNDual "baħar" "baħrejn" "ibħra" ;
lin see_V2 = lilV2 (ra_R'J_1_9513_V) ;
lin seed_N = mkN "żerriegħa" "żerrigħat" ;
lin seek_V2 = lilV2 (fittex_FTX_2_7952_V) ;
lin sell_V3 = mkV3 biegh_BJGH_1_7565_V lilP ;
lin send_V3 = mkV3 baghat_BGHT_1_7412_V lilP ;
lin sew_V = hat_HJT_1_8508_V ;
lin sharp_A = mkA "jaqta'" "taqta'" "jaqtgħu" ;
lin she_Pron = mkPron "hi" "ha" singular P3 feminine ; --- also HIJA
lin sheep_N = mkNColl "nagħġa" "ngħaġ" "nagħġiet" ;
lin ship_N = mkN "vapur" "vapuri" ;
lin shirt_N = mkN "qmis" "qomos" feminine ;
lin shoe_N = mkN "żarbun" "żraben" ;
lin shop_N = mkN "ħanut" "ħwienet" ;
lin short_A = brokenA "qasir" "qosra" "iqsar" ;
lin silver_N = mkN "fidda" "fided" ;
lin sing_V = kanta_KNTJ_1_7016_V ;
lin sister_N = (mkN "oħt" "aħwa" feminine) ;
lin sit_V = pogga_PGJ_2_9157_V ;
lin skin_N = mkN "ġilda" "ġildiet" ;
lin sky_N = mkN "sema" "smewwiet" masculine ;
lin sleep_V = raqad_RQD_1_9469_V ;
lin small_A = brokenA "zgħir" "zgħar" "iżgħar" ;
lin smell_V = xamm_XMM_1_10207_V ;
lin smoke_N = mkN "duħħan" "dħaħen" ;
lin smooth_A = mkA "lixx" ;
lin snake_N = mkN "serp" "sriep" ;
lin snow_N = mkNColl "borra" ;
lin so_AdA = mkAdA "allura" ;
lin sock_N = mkN "kalzetta" "kalzetti" ;
lin somePl_Det = mkDeterminer plural "xi uħud" ;
lin someSg_Det = mkDeterminer singular "xi" ;
lin somebody_NP = regNP "xi ħadd" ;
lin something_NP = regNP "xi ħaġa" ;
lin somewhere_Adv = mkAdv "x'imkien" ;
lin song_N = mkN "kanzunetta" "kanzunetti" ;
lin speak_V2 = prepV2 (kellem_KLM_2_8597_V) maP ;
lin spit_V = bezaq_BZQ_1_7549_V ;
lin split_V2 = lilV2 (qasam_QSM_1_9292_V) ;
lin squeeze_V2 = dirV2 (ghasar_GHSR_1_10625_V) ;
lin stab_V2 = lilV2 (mewwes_MWS_2_8921_V) ;
lin stand_V = qaghad_QGHD_1_9210_V ;
lin star_N = mkN "stilla" "stilel" ;
lin steel_N = mkNNoPlural "azzar" ;
lin stick_N = mkN "lasta" "lasti" ;
lin stone_1_N = mkNColl "ġebla" "ġebel" "ġebliet" "ġbiel" ;
lin stone_2_N = mkNColl "ġebla" "ġebel" "ġebliet" "ġbiel" ;
lin stop_V = waqaf_WQF_1_10067_V ;
lin stove_N = mkN "kuker" "kukers" ;
lin straight_A = mkA "dritt" ;
lin student_N = mkN "student" "studenti" ;
lin stupid_A = mkA "iblah" "belha" "boloh" ;
lin suck_V2 = lilV2 (rada'_RDGH_1_9388_V) ;
lin sun_N = mkN "xemx" "xmux" feminine ;
lin swell_V = ntefah_NFH_8_8970_V ;
lin swim_V = gham_GHWM_1_10750_V ;
lin switch8off_V2 = dirV2 (tefa_TFJ_1_9960_V) ;
lin switch8on_V2 = dirV2 (xeghel_XGHL_1_10155_V) ;
lin table_1_N = mkN "mejda" "mwejjed" ;
lin table_2_N = mkN "mejda" "mwejjed" ;
lin tail_N = (mkN "denb" "dnieb") ;
lin talk_V3 = mkV3 kellem_KLM_2_8597_V maP fuqP ; -- PAĊPAĊ, PARLA
lin teach_V2 = lilV2 (ghallem_GHLM_2_10526_V) ;
lin teacher_N = mkN "għalliem" "għalliema" ; -- genderedN
lin television_N = mkN "televixin" "televixins" ;
lin that_Quant = mkQuant "dak" "dik" "dawk" True ;
lin that_Subj = ss "li" ;
lin there7from_Adv = mkAdv ["minn hemm"] ;
lin there7to_Adv = mkAdv "s'hemm" ;
lin there_Adv = mkAdv "hemm" ;
lin therefore_PConj = ss "allura" ;
lin they_Pron = mkPron "huma" "hom" plural P3 masculine ;
lin thick_A = mkA "oħxon" "ħoxna" "ħoxnin" "eħxen" ;
lin thin_A = brokenA "rqiq" "rqaq" "rqaq" ;
lin think_V = haseb_HSB_1_8387_V ;
lin this_Quant = mkQuant "dan" "din" "dawn" True ;
lin through_Prep = mkPrep "minn ġo" "minn ġo" "minn ġol-" "minn ġot-" "minn ġol-" "minn ġo fija" "minn ġo fik" "minn ġo fih" "minn ġo fiha" "minn ġo fina" "minn ġo fikom" "minn ġo fihom" False ;
lin throw_V2 = dirV2 (waddab_WDB_2_10027_V) ;
lin tie_V2 = dirV2 (qafel_QFL_1_9206_V) ;
lin to_Prep = mkPrep "lil" "lill-" "lit-" ;
lin today_Adv = mkAdv "illum" ;
lin tongue_N = possN (mkN "lsien" "ilsna") ;
lin too_AdA = mkAdA "ukoll" ;
lin tooth_N = possN (mkN "sinna" "sinniet" "snien") ;
lin train_N = mkN "ferrovija" "ferroviji" ;
lin travel_V = vvjagga_V ;
lin tree_N = mkNColl "siġra" "siġar" "siġriet" ;
lin turn_V = dar_DWR_1_7803_V ;
lin ugly_A = mkA "ikrah" "kerha" "koroh" ;
lin uncertain_A = mkA "inċert" ;
lin under_Prep = mkPrep "taħt" ;
lin understand_V2 = lilV2 (fehem_FHM_1_10830_V) ;
lin university_N = mkN "università" "universitàjiet" ;
lin very_AdA = mkAdA "ħafna" ;
lin village_N = mkN "raħal" "rħula" ;
lin vomit_V = qala'_QLGH_1_9223_V ;
lin wait_V2 = lilV2 (stenna_'NJ_10_10781_V) ;
lin walk_V = mexa_MXJ_1_8926_V ;
lin want_VV = ried_V ;
lin war_N = mkN "gwerra" "gwerrer" ;
lin warm_A = brokenA "sħun" "sħan" ;
lin wash_V2 = lilV2 (hasel_HSL_1_8395_V) ;
lin watch_V2 = dirV2 (ra_R'J_1_9513_V) ;
lin water_N = mkN "ilma" "ilmijiet" masculine ;
lin we_Pron = mkPron "aħna" "na" plural P1 masculine ;
lin wet_A = mkA "mxarrab" "mxarrba" "mxarrbin" ;
lin whatPl_IP = mkIP ("x'" ++ BIND) plural ;
lin whatSg_IP = mkIP ("x'" ++ BIND) singular ;
lin when_IAdv = ss "meta" ;
lin when_Subj = ss "meta" ;
lin where_IAdv = ss "fejn" ;
lin which_IQuant = ss "liema" ;
lin white_A = mkA "abjad" "bajda" "bojod" ;
lin whoPl_IP = mkIP "min" plural ;
lin whoSg_IP = mkIP "min" singular ;
lin who_PN = mkPN "ODS" ;
lin why_IAdv = ss "għalfejn" ;
lin wide_A = broad_A ;
lin wife_N = mkN "mara" "nisa" ;
lin win_V2 = dirV2 (rebah_RBH_1_9371_V) ;
lin wind_N = mkN "riħ" "rjieħ" ;
lin window_N = mkN "tieqa" "twieqi" ;
lin wine_N = mkNColl "nbid" "nbejjed" ;
lin wing_N = mkN "ġewnaħ" "ġwienaħ" ;
lin wipe_V2 = dirV2 (mesah_MSH_1_8881_V) ;
lin with_Prep = mkPrep "ma'" "m'" "mal-" "mat-" "mal-" ;
lin without_Prep = mkPrep "mingħajr" ;
lin woman_N = mkN "mara" "nisa" ;
lin wonder_VQ = kkuntempla_V ;
lin wood_N = mkN "injam" "injamiet" ;
lin worm_N = mkNColl "dudu" "dud" "dudiet" ;
lin write_V2 = dirV2 (kiteb_KTB_1_8641_V) ;
lin year_N = mkNDual "sena" "sentejn" "snin" ;
lin yellow_A = mkA "isfar" "safra" "sofor" ;
lin yes_Utt = ss "iva" ;
lin youPl_Pron = mkPron "intom" "kom" plural P2 masculine ;
lin youPol_Pron = youSg_Pron ;
lin youSg_Pron = mkPron "int" "ek" singular P2 masculine ; --- also INTI
lin young_A = small_A ;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,135 +0,0 @@
abstract Extensions =
Cat
** {
---- from ExtraEngAbs
cat
---- hard to merge VPI and VPS
VPI ;
[VPI] {2} ;
VPS ;
[VPS] {2} ;
fun
MkVPI : VP -> VPI ; -- to walk
ConjVPI : Conj -> ListVPI -> VPI ; -- to walk and drink beer
ComplVPIVV : VV -> VPI -> VP ; -- want to walk and drink beer
MkVPS : Temp -> Pol -> VP -> VPS ; -- had walked
ConjVPS : Conj -> ListVPS -> VPS ; -- had walked and drank beer
PredVPS : NP -> VPS -> S ; -- I had walked and drank beer
---- merge VPS and VPI
---- MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
---- VPIForm, VPIInf, VPIPresPart, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
-- generalizing Grammar
PassVPSlash : VPSlash -> VP ; -- be forced to sleep
PassAgentVPSlash : VPSlash -> NP -> VP ; -- be begged by her to go
ComplVV : VV -> Ant -> Pol -> VP -> VP ; -- want not to have slept
PredFrontVS : Temp -> NP -> VS -> S -> S ; -- I am here, she said -- no negation
PredFrontVQ : Temp -> NP -> VQ -> QS -> S ; -- are you here, she asked -- no negation; direct order
---- merge?
SlashV2V : V2V -> Ant -> Pol -> VP -> VPSlash ; -- force (her) not to have slept
SlashVPIV2V : V2V -> Pol -> VPI -> VPSlash ; -- force (her) not to sleep and dream
-- new structures
GenNP : NP -> Quant ; -- this man's
GenIP : IP -> IQuant ; -- whose
GenRP : Num -> CN -> RP ; -- whose car(s)
CompoundN : N -> N -> N ; -- control system / controls system / control-system
CompoundAP : N -> A -> AP ; -- language independent / language-independent
GerundCN : VP -> CN ; -- publishing of the document (can get a determiner)
GerundNP : VP -> NP ; -- publishing the document (by nature definite)
GerundAdv : VP -> Adv ; -- publishing the document (prepositionless adverb)
WithoutVP : VP -> Adv ; -- without publishing the document
ByVP : VP -> Adv ; -- by publishing the document
InOrderToVP : VP -> Adv ; -- (in order) to publish the document
PresPartAP : VP -> AP ; -- sleeping (man), (man) sleeping in the car
PastPartAP : VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
PastPartAgentAP : VPSlash -> NP -> AP ; -- (opportunity) lost by the company
UseQuantPN : Quant -> PN -> NP ; -- this John
---- merge with IdRP?
that_RP : RP ; -- that [relative pronoun]
who_RP : RP ; -- who [relative pronoun]
EmptyRelSlash : ClSlash -> RCl ; -- (the city) he lives in
---- overgenerating?
VPSlashVS : VS -> VP -> VPSlash ; -- to believe (her) to sleep --- she was believed to sleep
PastPartRS : Ant -> Pol -> VPSlash -> RS ; -- (man) not seen by her --- maybe no Anter
PresPartRS : Ant -> Pol -> VP -> RS ; -- (man) not having seen her
ApposNP : NP -> NP -> NP ; -- Mr Hollande, the president of France,
---- move to standard RGL?
AdAdV : AdA -> AdV -> AdV ; -- almost always
UttAdV : AdV -> Utt ; -- always(!)
PositAdVAdj : A -> AdV ; -- (that she) positively (sleeps)
CompS : S -> Comp ; -- (the fact is) that she sleeps
CompQS : QS -> Comp ; -- (the question is) who sleeps
CompVP : Ant -> Pol -> VP -> Comp ; -- (she is) to go
SlashSlashV2V : V2V -> Ant -> Pol -> VPSlash -> VPSlash ; -- induce them to sell (it) -- analogous to Verb.SlashVV
DirectComplVS : Temp -> NP -> VS -> Utt -> S ; -- I am here, she said / she said: I am here -- no negation possible
DirectComplVQ : Temp -> NP -> VQ -> QS -> S ; -- who is there, she asked / she asked: who is there -- no negation possible
FocusObjS : NP -> SSlash -> S ; -- this woman I love -- in declarative S, not in QS
{-
-- for documentation
BaseVPI : VPI -> VPI -> ListVPI ; -- to walk, to run
ConsVPI : VPI -> ListVPI -> ListVPI ; -- to walk, to run, to stop
BaseVPS : VPS -> VPS -> ListVPS ; -- walks, has run
ConsVPS : VPS -> ListVPS -> ListVPS ; -- walks, has run, will stop
-}
}
{-
-- changes from ParseEngAbs
ComplBareVS --> ComplVS -- as variant
SlashBareV2S --> SlashV2S -- as variant
ComplSlashPartLast --> ComplSlash -- as variant
CompoundCN Sg/Pl --> CompoundCN -- as variants
DashCN --> CompoundCN -- as variant
GerundN --> GerundCN -- special case: now CN
--> GerundNP -- an NP version without determiner
--> GerundAdv -- an Adv version without determiner or preposition
GerundAP --> PresPartAP -- special case: now with a VP argument
PastPartAP --> PastPartAP -- now with VPSlash argument
--> PastPartAgentAP -- VPSlash + by NP
OrdCompar --> UseComparA -- the only use in PTB reduces to this standard RGL function
PredVPosv --> PredFrontVS, PredFrontVQ -- restricted to the special case actually occurring in PTB
PredVPovs --> -- inversion treated as variant: I am here, said she
-}

View File

@@ -1,203 +0,0 @@
--# -path=.:../abstract
concrete ExtensionsBul of Extensions =
CatBul ** open ResBul, (E = ExtraBul), Prelude, SyntaxBul in {
flags
coding = utf8 ;
lincat
VPI = E.VPI ;
ListVPI = E.ListVPI ;
VPS = E.VPS ;
ListVPS = E.ListVPS ;
lin
MkVPI = E.MkVPI ;
ConjVPI = E.ConjVPI ;
ComplVPIVV = E.ComplVPIVV ;
MkVPS = E.MkVPS ;
ConjVPS = E.ConjVPS ;
PredVPS = E.PredVPS ;
BaseVPI = E.BaseVPI ;
ConsVPI = E.ConsVPI ;
BaseVPS = E.BaseVPS ;
ConsVPS = E.ConsVPS ;
---- GenNP = E.GenNP ;
---- GenIP = E.GenIP ;
---- GenRP = E.GenRP ;
PassVPSlash = E.PassVPSlash ;
PassAgentVPSlash = E.PassAgentVPSlash ;
EmptyRelSlash = E.EmptyRelSlash ;
lin
CompoundN noun cn = {
s = \\nf => (noun.rel ! nform2aform nf cn.g) ++ (cn.s ! (indefNForm nf)) ;
rel = \\af => (noun.rel ! af) ++ (cn.rel ! af) ; ---- is this correct? AR 29/5/2014
g = cn.g
} ;
CompoundAP n a =
let ap : AForm => Str
= \\aform => n.rel ! (ASg Neut Indef) ++ a.s ! aform
in {s = ap; adv = ap ! (ASg Neut Indef); isPre = True} ;
GerundCN vp = {
s = \\nform => vp.ad.s ++
vp.s ! Imperf ! VNoun nform ++
vp.compl ! {gn=GSg Neut; p=P3} ;
g = ANeut
} ;
GerundNP vp = {
s = \\_ => daComplex Simul Pos vp ! Imperf ! {gn=GSg Neut; p=P1};
a = {gn=GSg Neut; p=P3};
p = Pos
} ;
GerundAdv vp =
{s = vp.ad.s ++
vp.s ! Imperf ! VGerund ++
vp.compl ! {gn=GSg Neut; p=P3}} ;
PresPartAP vp =
let ap : AForm => Str
= \\aform => vp.ad.s ++
vp.s ! Imperf ! VPresPart aform ++
case vp.vtype of {
VMedial c => reflClitics ! c;
_ => []
} ++
vp.compl ! {gn=aform2gennum aform; p=P3} ;
in {s = ap; adv = ap ! (ASg Neut Indef); isPre = True} ;
PastPartAP vp =
let ap : AForm => Str
= \\aform => vp.ad.s ++
vp.s ! Perf ! VPassive aform ++
vp.compl1 ! {gn=aform2gennum aform; p=P3} ++
vp.compl2 ! {gn=aform2gennum aform; p=P3}
in {s = ap; adv = ap ! ASg Neut Indef; isPre = True} ;
PastPartAgentAP vp np =
let ap : AForm => Str
= \\aform => vp.ad.s ++
vp.s ! Perf ! VPassive aform ++
vp.compl1 ! {gn=aform2gennum aform; p=P3} ++
vp.compl2 ! {gn=aform2gennum aform; p=P3} ++
"от" ++ np.s ! RObj Acc
in {s = ap; adv = ap ! ASg Neut Indef; isPre = True} ;
ByVP vp =
{s = vp.ad.s ++
vp.s ! Imperf ! VGerund ++
vp.compl ! {gn=GSg Neut; p=P3}} ;
InOrderToVP vp =
{s = "за" ++ daComplex Simul Pos (vp**{vtype=VMedial Acc}) ! Imperf ! {gn=GSg Neut; p=P3}};
WithoutVP vp =
{s = "без" ++ daComplex Simul Pos (vp**{vtype=VMedial Acc}) ! Imperf ! {gn=GSg Neut; p=P3}};
PositAdVAdj a = {s = a.adv} ;
that_RP = {
s = whichRP
} ;
UseQuantPN q pn = { s = table {
RObj Dat => "на" ++ pn.s;
_ => pn.s
} ;
a = {gn = GSg pn.g; p = P3};
p = q.p
} ;
PastPartRS ant pol vp = {
s = \\agr =>
ant.s ++ pol.s ++
vp.ad.s ++
case pol.p of {Pos => ""; Neg => "не"} ++
case ant.a of {Simul => ""; Anter => auxBe ! VPerfect (aform agr.gn Indef (RObj Acc))} ++
vp.s ! Perf ! VPassive (aform agr.gn Indef (RObj Acc)) ++
case vp.vtype of {
VMedial c => reflClitics ! c;
_ => []
} ++
vp.compl1 ! agr ++ vp.compl2 ! agr ;
} ;
PresPartRS ant pol vp = {
s = \\agr =>
ant.s ++ pol.s ++
vp.ad.s ++
case pol.p of {Pos => ""; Neg => "не"} ++
case ant.a of {Simul => ""; Anter => auxBe ! VPerfect (aform agr.gn Indef (RObj Acc))} ++
vp.s ! Imperf ! VPresPart (aform agr.gn Indef (RObj Acc)) ++
case vp.vtype of {
VMedial c => reflClitics ! c;
_ => []
} ++
vp.compl ! agr ;
} ;
SlashV2V vv ant p vp =
insertSlashObj2 (\\agr => ant.s ++ p.s ++ vv.c3.s ++
daComplex ant.a (orPol p.p vp.p) vp ! Perf ! agr)
Pos
(slashV vv vv.c2) ;
ComplVV vv ant p vp =
insertObj (\\agr => ant.s ++ p.s ++
case vv.typ of {
VVInf => daComplex ant.a p.p vp ! Perf ! agr;
VVGerund => gerund vp ! Imperf ! agr
}) vp.p
(predV vv) ;
CompS s = {s = \\_ => "че" ++ s.s; p = Pos} ;
CompQS qs = {s = \\_ => qs.s ! QIndir; p = Pos} ;
CompVP ant p vp = {s = let p' = case vp.p of {
Neg => Neg;
Pos => p.p
}
in \\agr => ant.s ++ p.s ++
daComplex ant.a p' vp ! Perf ! agr;
p = Pos
} ;
VPSlashVS vs vp =
let vp = insertObj (daComplex Simul Pos vp ! Perf) vp.p (predV vs)
in { s = vp.s;
ad = vp.ad;
compl1 = \\_ => "";
compl2 = vp.compl;
vtype = vp.vtype;
p = vp.p;
c2 = {s=""; c=Acc}
} ;
ApposNP np1 np2 = {
s = \\role => np1.s ! role ++ comma ++ np2.s ! RSubj ;
a = np1.a ;
p = np1.p
} ;
UttAdV adv = adv;
AdAdV = cc2 ;
DirectComplVS t np vs utt =
mkS (lin Adv (optCommaSS utt)) (mkS t positivePol (mkCl np (lin V vs))) ;
DirectComplVQ t np vs q =
mkS (lin Adv (optCommaSS (mkUtt q))) (mkS t positivePol (mkCl np (lin V vs))) ;
FocusObjS np sslash =
mkS (lin Adv (optCommaSS (ss (sslash.c2.s ++ np.s ! RObj sslash.c2.c)))) (lin S {s=sslash.s ! np.a}) ;
}

View File

@@ -1,139 +0,0 @@
concrete ExtensionsCat of Extensions =
CatCat **
open
PhonoCat, MorphoCat, ResCat, CommonRomance, ParadigmsCat, SyntaxCat, Prelude, (G = GrammarCat), (E = ExtraCat) in {
lincat
VPI = E.VPI ;
---- ListVPI = E.ListVPI ;
VPS = E.VPS ;
---- ListVPS = E.ListVPS ;
lin
MkVPI = E.MkVPI ;
---- ConjVPI = E.ConjVPI ;
---- ComplVPIVV = E.ComplVPIVV ;
MkVPS = E.MkVPS ;
---- ConjVPS = E.ConjVPS ;
PredVPS = E.PredVPS ;
---- BaseVPI = E.BaseVPI ;
---- ConsVPI = E.ConsVPI ;
---- BaseVPS = E.BaseVPS ;
---- ConsVPS = E.ConsVPS ;
---- GenIP = E.GenIP ;
---- GenRP = E.GenRP ;
PassVPSlash = E.PassVPSlash ;
PassAgentVPSlash = E.PassAgentVPSlash ;
lin
GenNP np =
let denp = (np.s ! ResCat.genitive).ton in {
s = \\_,_,_,_ => [] ;
sp = \\_,_,_ => denp ;
s2 = denp ;
isNeg = False ;
} ;
EmptyRelSlash slash = mkRCl which_RP (lin ClSlash slash) ;
that_RP = which_RP ;
but_Subj = {s = "però" ; m = Indic} ; ---- strange to have this as Subj
lin
CompoundN noun cn = {
s = \\n => cn.s ! n ++ "de" ++ noun.s ! Sg ;
g = cn.g
} ;
CompoundAP noun adj = {
s = \\af => adj.s ! Posit ! af ++ "de" ++ noun.s ! Sg ;
isPre = False
} ;
{-
GerundN v = {
s = \\n,c => v.s ! VPresPart ;
g = Neutr
} ;
GerundAP v = {
s = \\agr => v.s ! VPresPart ;
isPre = True
} ;
-- }
PastPartAP v = {
s = table {
AF g n => v.s ! VPart g n ;
_ => v.s ! VPart Masc Sg ---- the adverb form
} ;
isPre = True
} ;
--{-
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ;
-}
PositAdVAdj a = {s = a.s ! Posit ! AA} ;
{-
UseQuantPN q pn = {s = \\c => q.s ! False ! Sg ++ pn.s ! npcase2case c ; a = agrgP3 Sg pn.g} ;
SlashV2V v ant p vp = insertObjc (\\a => v.c3 ++ ant.s ++ p.s ++
infVP v.typ vp ant.a p.p a)
(predVc v) ;
SlashVPIV2V v p vpi = insertObjc (\\a => p.s ++
v.c3 ++
vpi.s ! VVAux ! a)
(predVc v) ;
-}
ComplVV v a p vp =
insertComplement (\\a => prepCase v.c2.c ++ infVP vp a) (predV v) ; ---- a,p
---- TODO: find proper expressions for OSV and OVS in Cat
PredVPosv np vp = mkCl (lin NP np) (lin VP vp) ;
PredVPovs np vp = mkCl (lin NP np) (lin VP vp) ;
CompS s = {s = \\_ => "de" ++ "què" ++ s.s ! Indic ; cop = serCopula} ; ---- de ?
{-
CompQS qs = {s = \\_ => qs.s ! QIndir} ;
CompVP ant p vp = {s = \\a => ant.s ++ p.s ++
infVP VVInf vp ant.a p.p a} ;
VPSlashVS vs vp =
insertObj (\\a => infVP VVInf vp Simul CPos a) (predV vs) **
{c2 = ""; gapInMiddle = False} ;
PastPartRS ant pol vps = {
s = \\agr => vps.ad ++ vps.ptp ++ vps.s2 ! agr ;
c = npNom
} ;
PresPartRS ant pol vp = {
s = \\agr => vp.ad ++ vp.prp ++ vp.s2 ! agr ;
c = npNom
} ;
ApposNP np1 np2 = {
s = \\c => np1.s ! c ++ "," ++ np2.s ! npNom ;
a = np1.a
} ;
AdAdV = cc2 ;
UttAdV adv = adv;
-}
}

View File

@@ -1,140 +0,0 @@
--# -path=.:../abstract
concrete ExtensionsChi of Extensions =
CatChi ** open ResChi, ParadigmsChi, SyntaxChi, (G = GrammarChi), (E = ExtraChi), Prelude in {
lincat
VPI = E.VPI ;
ListVPI = E.ListVPI ;
VPS = E.VPS ;
ListVPS = E.ListVPS ;
lin
MkVPI = E.MkVPI ;
ConjVPI = E.ConjVPI ;
---- ComplVPIVV = E.ComplVPIVV ;
MkVPS = E.MkVPS ;
ConjVPS = E.ConjVPS ;
PredVPS = E.PredVPS ;
BaseVPI = E.BaseVPI ;
ConsVPI = E.ConsVPI ;
BaseVPS = E.BaseVPS ;
ConsVPS = E.ConsVPS ;
GenNP = E.GenNP ;
---- GenIP = E.GenIP ;
GenRP = E.GenRP ;
PassVPSlash = E.PassVPSlash ;
PassAgentVPSlash = E.PassAgentVPSlash ;
---- EmptyRelSlash = E.EmptyRelSlash ;
lin
that_RP = which_RP ;
-- lexical entries
-- another_Quant = mkQuantifier "otro" "otra" "otros" "otras" ;
-- some_Quant = mkQuantifier "algún" "alguna" "algunos" "algunas" ;
-- anySg_Det = mkDeterminer "algún" "alguna" Sg False ; ---- also meaning "whichever" ?
-- each_Det = SyntaxChi.every_Det ;
-- but_Subj = {s = "pero" ; m = Indic} ; ---- strange to have this as Subj
CompoundN noun cn = {s = noun.s ++ cn.s ; c = cn.c} ; ----
CompoundAP noun adj = complexAP (noun.s ++ possessive_s ++ adj.s) ; ----
GerundN v = {
s = v.s ;
c = ge_s ---- ge
} ;
GerundNP vp = {
s = infVP vp ; ---- ?
} ;
GerundAdv vp = {
s = infVP vp ++ "地" ; ---- ?
advType = ATManner ;
} ;
PastPartAP v = {
s = v.verb.s ++ de_s ; ----
monoSyl = False ;
hasAdA = True ; ---
} ;
---- PastPartAP v = v ; ----
{-
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ;
-}
PositAdVAdj a = {s = a.s} ;
UseQuantPN q pn = {s = q.s ++ ge_s ++ pn.s} ; ---- ge
SlashV2V v a p vp =
insertObj (ResChi.mkNP (a.s ++ p.s ++ useVerb vp.verb ! p.p ! APlain ++ vp.compl))
(predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; ---- aspect
{-
SlashVPIV2V v p vpi = insertObjc (\\a => p.s ++
v.c3 ++
vpi.s ! VVAux ! a)
(predVc v) ;
-}
---- TODO: find proper expressions for OSV and OVS in Chi
PredVPosv np vp = G.PredVP np vp ; ---- (lin NP np) (lin VP vp) ; ----
PredVPovs np vp = G.PredVP np vp ; ---- (lin NP np) (lin VP vp) ; ----
CompS s = insertObj s (predV copula []) ; ----
CompQS qs = insertObj (ss (qs.s ! False)) (predV copula []) ; ----
CompVP ant p vp = insertObj (ss (infVP vp)) (predV copula []) ; ----
{-
VPSlashVS vs vp =
insertObj (\\a => infVP VVInf vp Simul CPos a) (predV vs []) **
{c2 = ""; gapInMiddle = False} ;
-}
PastPartRS ant pol vp = { ---- copied from PresPartRS
s = ant.s ++ pol.s ++ vp.prePart ++ useVerb vp.verb ! pol.p ! APlain ++ vp.compl ++ which_RP.s ---- aspect
} ; ---- ??
PresPartRS ant pol vp = { ---- copied from RelVP
s = ant.s ++ pol.s ++ vp.prePart ++ useVerb vp.verb ! pol.p ! APlain ++ vp.compl ++ which_RP.s ---- aspect
} ; ---- ??
PresPartAP vp = { ---- copied from RelVP
s = vp.prePart ++ useVerb vp.verb ! Pos ! APlain ++ vp.compl ; -- ++ which_RP.s ;
monoSyl = False ;
hasAdA = False
} ; ---- ??
ComplVV v a p vp = {
verb = v ;
compl = a.s ++ p.s ++ vp.topic ++ vp.prePart ++ useVerb vp.verb ! p.p ! APlain ++ vp.compl ; ---- aspect
prePart, topic = []
} ;
ApposNP np1 np2 = {
s = np1.s ++ chcomma ++ np2.s
} ;
AdAdV = cc2 ;
UttAdV adv = adv;
}

View File

@@ -1,153 +0,0 @@
--# -path=.:../abstract
concrete ExtensionsDut of Extensions =
CatDut ** open ResDut, ParadigmsDut, SyntaxDut, (E = ExtraDut), ExtendDut, (G = GrammarDut), Prelude in {
flags literal=Symb ; coding = utf8 ;
lincat
VPI = E.VPI ;
ListVPI = E.ListVPI ;
VPS = E.VPS ;
ListVPS = E.ListVPS ;
lin
MkVPI = E.MkVPI ;
---- ConjVPI = E.ConjVPI ;
---- ComplVPIVV = E.ComplVPIVV ;
MkVPS = E.MkVPS ;
---- ConjVPS = E.ConjVPS ;
PredVPS = E.PredVPS ;
---- BaseVPI = E.BaseVPI ;
---- ConsVPI = E.ConsVPI ;
---- BaseVPS = E.BaseVPS ;
---- ConsVPS = E.ConsVPS ;
---- GenNP = E.GenNP ;
---- GenIP = E.GenIP ;
---- GenRP = E.GenRP ;
PassVPSlash = E.PassVPSlash ;
PassAgentVPSlash = E.PassAgentVPSlash ;
---- EmptyRelSlash = E.EmptyRelSlash ;
lin
{-
ComplVV v ant p vp =
let
vpi = infVP v.isAux vp
in
insertExtrapos vpi.p4 (
insertInfExt vpi.p3 (
insertInf vpi.p2 (
insertObj vpi.p1 (
predVGen v.isAux v)))) ;
PastPartRS ant pol sl = { -- guessed by KA, some fields in sl are ignored!!
s = \\gn => let agr = agrgP3 Masc (numGenNum gn)
in sl.s.s ! VPastPart APred ++
(sl.nn ! agr).p1 ++ (sl.nn ! agr).p2 ++ sl.a2;
c = Nom
} ;
PresPartRS ant pol vp = { -- guessed by KA!!
s = \\gn => let agr = agrgP3 Masc (numGenNum gn)
in vp.s.s ! VPresPart APred ++
(vp.nn ! agr).p1 ++ (vp.nn ! agr).p2;
c = Nom
} ;
-}
PredVPosv = G.PredVP;
PredVPovs = G.PredVP;
CompoundN noun cn = {
s = \\nf => glue (noun.s ! NF Sg Nom) (cn.s ! nf) ; ---- TODO: introduce compound form
g = cn.g
} ;
CompoundAP noun adj = {
s = \\agr,af => glue (noun.s ! NF Sg Nom) (adj.s ! Posit ! af) ;
isPre = True
} ;
GerundNP vp = heavyNP { -- infinitive: Bier zu trinken
s = \\c => useInfVP False vp ! agrP3 Sg ;
a = agrP3 Sg
} ;
GerundAdv vp = { -- Bier trinkend
s = vp.n0 ! agrP3 Sg ++ vp.n2 ! agrP3 Sg ++ vp.a2 ++ vp.a1 ! Pos ++ vp.inf.p1 ++ vp.ext ++ vp.s.s ! VGer
} ;
WithoutVP vp = { -- ohne Bier zu trinken
s = "zonder" ++ useInfVP False vp ! agrP3 Sg
} ;
InOrderToVP vp = { -- um Bier zu trinken
s = "om" ++ useInfVP False vp ! agrP3 Sg
} ;
ByVP vp = { ---- durch Bier zu drinken
s = "door" ++ useInfVP False vp ! agrP3 Sg ----
} ;
PastPartAP = ExtendDut.PastPartAP ;
PresPartAP vp = { --# notpresent
s = \\agr,af => let aForm = case vp.isHeavy of { --# notpresent
True => APred ; --# notpresent
False => af } ; --# notpresent
in (infClause [] agr vp aForm).s ! Pres ! Simul ! Pos ! Sub ; --# notpresent
isPre = notB vp.isHeavy ; --# notpresent
} ; --# notpresent
PastPartAgentAP vp np =
let agent = (SyntaxDut.mkAdv (mkPrep "door") (lin NP np)).s ;
ap = ExtendDut.PastPartAP vp ;
in ap ** { s = \\agr,af => ap.s ! agr ! af ++ agent } ;
{-
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ; -- higher
PositAdVAdj a = {s = a.s ! AAdv} ; -- really
UseQuantPN q pn = {s = \\c => q.s ! False ! Sg ++ pn.s ! npcase2case c ; a = agrgP3 Sg pn.g} ; -- this London
SlashV2V v p vp = insertObjc (\\a => p.s ++ case p.p of {CPos => ""; _ => "niet"} ++ -- force not to sleep
v.c3 ++
infVP v.typ vp a)
(predVc v) ;
ComplPredVP np vp = { -- ?
s = \\t,a,b,o =>
let
verb = vp.s ! t ! a ! b ! o ! np.a ;
compl = vp.s2 ! np.a
in
case o of {
ODir => compl ++ "," ++ np.s ! npNom ++ verb.aux ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf ;
OQuest => verb.aux ++ compl ++ "," ++ np.s ! npNom ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf
}
} ;
-}
CompS s = {s = \\_ => "dat" ++ s.s ! Main} ; -- S -> Comp
CompVP ant p vp = {s = useInfVP True vp} ; -- VP -> Comp
lin
that_RP = which_RP ;
UttAdV adv = adv ;
ApposNP np1 np2 = np1 ** {
s = \\c => np1.s ! c ++ SOFT_BIND ++ "," ++ np2.s ! NPNom ;
isPron = False
} ;
AdAdV = cc2 ;
}

Some files were not shown because too many files have changed in this diff Show More