forked from GitHub/gf-rgl
Merge remote-tracking branch 'upstream/master' into por
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
914
doc/absfuns.html
914
doc/absfuns.html
File diff suppressed because it is too large
Load Diff
1
doc/browse/.gitignore
vendored
Normal file
1
doc/browse/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
tags/*.gf-tags
|
||||
2
doc/browse/build-tags.sh
Normal file → Executable file
2
doc/browse/build-tags.sh
Normal file → Executable 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
|
||||
|
||||
92
src/Makefile
92
src/Makefile
@@ -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
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -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 "разпаляне" ;
|
||||
|
||||
@@ -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= ""
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
@@ -15,7 +15,7 @@ concrete GrammarBul of Grammar =
|
||||
TextBul,
|
||||
StructuralBul,
|
||||
IdiomBul,
|
||||
TenseX - [CAdv,IAdv]
|
||||
TenseX - [CAdv,IAdv,AdV,SC]
|
||||
** {
|
||||
flags coding=cp1251 ;
|
||||
|
||||
|
||||
@@ -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}} ;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -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 = <>
|
||||
|
||||
@@ -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 = []} ;
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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 => "ñâîèòå"
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
}
|
||||
@@ -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 ;
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
@@ -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 ++ "了") ;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
@@ -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) ;
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
@@ -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 " नहीं " ;
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
@@ -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 ;
|
||||
-}
|
||||
@@ -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) ;
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
@@ -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" ;
|
||||
|
||||
}
|
||||
@@ -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 ++ "了") ;
|
||||
-}
|
||||
|
||||
}
|
||||
@@ -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 " नहीं " ;
|
||||
|
||||
}
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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} ;
|
||||
}
|
||||
@@ -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} ;
|
||||
|
||||
@@ -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" ;
|
||||
|
||||
@@ -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 ** {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
@@ -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)} ;
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
}
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
@@ -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 ++ "," ;
|
||||
|
||||
@@ -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" ;
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
}
|
||||
|
||||
|
||||
@@ -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") ;
|
||||
|
||||
@@ -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 = <>} ;
|
||||
} ;
|
||||
|
||||
@@ -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
|
||||
-}
|
||||
|
||||
|
||||
@@ -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] ; _ -> []
|
||||
@@ -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 ;
|
||||
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
|
||||
-}
|
||||
@@ -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}) ;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
-}
|
||||
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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
Reference in New Issue
Block a user