Merge remote-tracking branch 'upstream/master'
BIN
doc/rgl-tutorial/Syntax.jpg
Normal file
|
After Width: | Height: | Size: 143 KiB |
BIN
doc/rgl-tutorial/abs-and-cnc.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
doc/rgl-tutorial/abstract.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
doc/rgl-tutorial/align-zero.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
doc/rgl-tutorial/arabnum.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
doc/rgl-tutorial/arav.jpg
Normal file
|
After Width: | Height: | Size: 160 KiB |
BIN
doc/rgl-tutorial/categories.jpg
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
doc/rgl-tutorial/clever-align.jpg
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
doc/rgl-tutorial/dutparse.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
doc/rgl-tutorial/engdut.jpg
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
doc/rgl-tutorial/facemod.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
doc/rgl-tutorial/hindi.jpg
Normal file
|
After Width: | Height: | Size: 178 KiB |
3209
doc/rgl-tutorial/index.t2t
Normal file
BIN
doc/rgl-tutorial/langdep.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
doc/rgl-tutorial/molto_logo.png
Normal file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
doc/rgl-tutorial/parse.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
doc/rgl-tutorial/phrasebook.png
Normal file
|
After Width: | Height: | Size: 254 KiB |
BIN
doc/rgl-tutorial/testdep.jpg
Normal file
|
After Width: | Height: | Size: 77 KiB |
BIN
doc/rgl-tutorial/zero-fridge.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
doc/rgl-tutorial/zero-tree.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
@@ -41,8 +41,8 @@ abstract functions and their Universal Dependency labels
|
|||||||
- [Minibar http://cloud.grammaticalframework.org/minibar/minibar.html]:
|
- [Minibar http://cloud.grammaticalframework.org/minibar/minibar.html]:
|
||||||
find resource grammar expressions by parsing (select Grammar: LibraryBrowser)
|
find resource grammar expressions by parsing (select Grammar: LibraryBrowser)
|
||||||
or test translations between all languages (select Grammar: ResourceDemo)
|
or test translations between all languages (select Grammar: ResourceDemo)
|
||||||
- [Resource Grammar Tutorial http://www.grammaticalframework.org/doc/gf-lrec-2010.pdf]
|
- [Resource Grammar Tutorial http://www.grammaticalframework.org/lib/doc/rgl-tutorial/index.html],
|
||||||
as presented in LREC-2010.
|
as previously presented in LREC-2010.
|
||||||
- Paper "The GF Resource Grammar Library" by A. Ranta
|
- Paper "The GF Resource Grammar Library" by A. Ranta
|
||||||
(//Linguistic Issues in Language Technology//, 2 (2), 2009). An overview of
|
(//Linguistic Issues in Language Technology//, 2 (2), 2009). An overview of
|
||||||
the library with linguistic motivations.
|
the library with linguistic motivations.
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ Ice,Icelandic,icelandic,,,,,,n,,y
|
|||||||
Ina,Interlingua,interlingua,,,y,,n,n,,n
|
Ina,Interlingua,interlingua,,,y,,n,n,,n
|
||||||
Ita,Italian,italian,Romance,,y,,,,y,y
|
Ita,Italian,italian,Romance,,y,,,,y,y
|
||||||
Jpn,Japanese,japanese,,,,,,,,y
|
Jpn,Japanese,japanese,,,,,,,,y
|
||||||
Lat,Latin,latin,,,y,,n,n,,n
|
Lat,Latin,latin,,,,,y,n,n,y
|
||||||
Lav,Latvian,latvian,,,,,,,y,y
|
Lav,Latvian,latvian,,,,,,,y,y
|
||||||
Mlt,Maltese,maltese,,,,,,,,y
|
Mlt,Maltese,maltese,,,,,,,,y
|
||||||
Mon,Mongolian,mongolian,,,,,,n,,y
|
Mon,Mongolian,mongolian,,,,,,n,,y
|
||||||
|
|||||||
|
@@ -117,6 +117,7 @@ abstract Extend = Cat ** {
|
|||||||
|
|
||||||
-- generalisation of existential, with adverb as a parameter
|
-- generalisation of existential, with adverb as a parameter
|
||||||
AdvIsNP : Adv -> NP -> Cl ; -- here is the tree / here are the trees
|
AdvIsNP : Adv -> NP -> Cl ; -- here is the tree / here are the trees
|
||||||
|
AdvIsNPAP : Adv -> NP -> AP -> Cl ; -- here are the instructions documented
|
||||||
|
|
||||||
-- infinitive for purpose AR 21/8/2013
|
-- infinitive for purpose AR 21/8/2013
|
||||||
|
|
||||||
@@ -144,6 +145,16 @@ abstract Extend = Cat ** {
|
|||||||
AdjAsCN : AP -> CN ; -- a green one ; en grön (Swe)
|
AdjAsCN : AP -> CN ; -- a green one ; en grön (Swe)
|
||||||
AdjAsNP : AP -> NP ; -- green (is good)
|
AdjAsNP : AP -> NP ; -- green (is good)
|
||||||
|
|
||||||
|
-- infinitive complement for IAdv
|
||||||
|
|
||||||
|
PredIAdvVP : IAdv -> VP -> QCl ; -- how to walk?
|
||||||
|
|
||||||
|
-- alternative to EmbedQS. For English, EmbedQS happens to work,
|
||||||
|
-- because "what" introduces question and relative. The default linearization
|
||||||
|
-- could be e.g. "the thing we did (was fun)".
|
||||||
|
|
||||||
|
EmbedSSlash : SSlash -> SC ; -- what we did (was fun)
|
||||||
|
|
||||||
-- reflexive noun phrases: a generalization of Verb.ReflVP, which covers just reflexive pronouns
|
-- reflexive noun phrases: a generalization of Verb.ReflVP, which covers just reflexive pronouns
|
||||||
-- This is necessary in languages like Swedish, which have special reflexive possessives.
|
-- This is necessary in languages like Swedish, which have special reflexive possessives.
|
||||||
-- However, it is also needed in application grammars that want to treat "brush one's teeth" as a one-place predicate.
|
-- However, it is also needed in application grammars that want to treat "brush one's teeth" as a one-place predicate.
|
||||||
@@ -211,6 +222,8 @@ abstract Extend = Cat ** {
|
|||||||
|
|
||||||
UseComp_estar : Comp -> VP ; -- (Cat, Spa, Por) "está cheio" instead of "é cheio"
|
UseComp_estar : Comp -> VP ; -- (Cat, Spa, Por) "está cheio" instead of "é cheio"
|
||||||
|
|
||||||
|
SubjRelNP : NP -> RS -> NP ; -- Force RS in subjunctive: lo que les *resulte* mejor
|
||||||
|
|
||||||
iFem_Pron : Pron ; -- I (Fem)
|
iFem_Pron : Pron ; -- I (Fem)
|
||||||
youFem_Pron : Pron ; -- you (Fem)
|
youFem_Pron : Pron ; -- you (Fem)
|
||||||
weFem_Pron : Pron ; -- we (Fem)
|
weFem_Pron : Pron ; -- we (Fem)
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
--# -path=.:../latin:../common:../abstract:../prelude
|
--# -path=.:../latin:../common:../abstract:../prelude
|
||||||
|
|
||||||
resource TryLat = SyntaxLat, LexiconLat, ParadigmsLat - [mkAdv,mkAdN,mkOrd] ;
|
resource TryLat = SyntaxLat, LexiconLat, ParadigmsLat - [mkAdv,mkAdN,mkOrd,mkNum] ;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ lincat
|
|||||||
[S] = {s1,s2 : Order => Str} ;
|
[S] = {s1,s2 : Order => Str} ;
|
||||||
[Adv] = {s1,s2 : Str} ;
|
[Adv] = {s1,s2 : Str} ;
|
||||||
[NP] = {s1,s2 : Case => Str ; a : Agr ; empty : Str; isHeavy : Bool} ;
|
[NP] = {s1,s2 : Case => Str ; a : Agr ; empty : Str; isHeavy : Bool} ;
|
||||||
|
[CN] = {s1,s2 : NTable ; g : Gender ; h : Species ; isDual : Bool ; np : Case => Str ; isHeavy : Bool} ;
|
||||||
[AP] = {s1,s2 : Species => Gender => Number => State => Case => Str} ;
|
[AP] = {s1,s2 : Species => Gender => Number => State => Case => Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
@@ -34,8 +35,17 @@ lin
|
|||||||
ConsAP = consrTable5 Species Gender Number State Case comma ;
|
ConsAP = consrTable5 Species Gender Number State Case comma ;
|
||||||
ConjAP = conjunctDistrTable5 Species Gender Number State Case ;
|
ConjAP = conjunctDistrTable5 Species Gender Number State Case ;
|
||||||
|
|
||||||
|
BaseCN cn1 cn2 = leanCN cn1 ** twoTable3 Number State Case (leanCN cn1) (leanCN cn2) ;
|
||||||
|
ConsCN cn cns = leanCN cn ** consrTable3 Number State Case comma (leanCN cn) cns ;
|
||||||
|
ConjCN conj cns = cns ** conjunctDistrTable3 Number State Case conj cns ;
|
||||||
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
leanCN : CN -> CN = \cn -> cn ** {
|
||||||
|
np = \\_ => [] ;
|
||||||
|
s = \\n,s,c => cn2str cn n s c
|
||||||
|
} ;
|
||||||
|
|
||||||
conjAgr : Agr -> Agr -> Agr = \a,b -> {
|
conjAgr : Agr -> Agr -> Agr = \a,b -> {
|
||||||
isPron = False ;
|
isPron = False ;
|
||||||
pgn = let gnA = pgn2gn a.pgn ; gnB = pgn2gn b.pgn in
|
pgn = let gnA = pgn2gn a.pgn ; gnB = pgn2gn b.pgn in
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ concrete ExtendAra of Extend =
|
|||||||
GenNP, ApposNP, ICompAP, DetNPMasc, DetNPFem,
|
GenNP, ApposNP, ICompAP, DetNPMasc, DetNPFem,
|
||||||
EmptyRelSlash, PredAPVP,
|
EmptyRelSlash, PredAPVP,
|
||||||
ComplDirectVS, ComplDirectVQ, -- because of Utt
|
ComplDirectVS, ComplDirectVQ, -- because of Utt
|
||||||
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS
|
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS,
|
||||||
|
EmbedSSlash, AdjAsNP
|
||||||
]
|
]
|
||||||
with (Grammar=GrammarAra)
|
with (Grammar=GrammarAra)
|
||||||
** open
|
** open
|
||||||
@@ -42,10 +43,22 @@ lin
|
|||||||
DetNPMasc det = emptyNP ** {s = det.s ! NoHum ! Masc} ;
|
DetNPMasc det = emptyNP ** {s = det.s ! NoHum ! Masc} ;
|
||||||
DetNPFem det = emptyNP ** {s = det.s ! NoHum ! Fem} ;
|
DetNPFem det = emptyNP ** {s = det.s ! NoHum ! Fem} ;
|
||||||
|
|
||||||
|
-- : AP -> NP
|
||||||
|
AdjAsNP ap =
|
||||||
|
let adjAsN : Noun = {
|
||||||
|
s = ap.s ! NoHum ! Masc ;
|
||||||
|
s2 = emptyNTable ;
|
||||||
|
g = Masc ;
|
||||||
|
h = NoHum ;
|
||||||
|
isDual = False } ;
|
||||||
|
in MassNP (UseN adjAsN) ;
|
||||||
|
|
||||||
-- : ClSlash -> RCl -- he lives in
|
-- : ClSlash -> RCl -- he lives in
|
||||||
EmptyRelSlash = RelSlash (IdRP ** {s = \\_ => []}) ;
|
EmptyRelSlash = RelSlash (IdRP ** {s = \\_ => []}) ;
|
||||||
|
|
||||||
|
-- : SSlash -> SC
|
||||||
|
EmbedSSlash = Grammar.EmbedS ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
VPS = {s : PerGenNum => Str} ; -- finite VP's with tense and polarity
|
VPS = {s : PerGenNum => Str} ; -- finite VP's with tense and polarity
|
||||||
[VPS] = {s1,s2 : PerGenNum => Str} ;
|
[VPS] = {s1,s2 : PerGenNum => Str} ;
|
||||||
|
|||||||
@@ -577,8 +577,9 @@ oper
|
|||||||
predVP : NP -> VP -> Cl = \np,vp -> {
|
predVP : NP -> VP -> Cl = \np,vp -> {
|
||||||
s = \\t,p,o =>
|
s = \\t,p,o =>
|
||||||
let pgn =
|
let pgn =
|
||||||
case <o,np.a.isPron> of {
|
case <o,vp.vtype,np.a.isPron> of {
|
||||||
<Verbal, False> => verbalAgr np.a.pgn;
|
<Verbal, Copula, False> => np.a.pgn;
|
||||||
|
<Verbal, _, False> => verbalAgr np.a.pgn;
|
||||||
_ => np.a.pgn
|
_ => np.a.pgn
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ concrete SentenceAra of Sentence = CatAra ** open
|
|||||||
|
|
||||||
-- SlashVS np vs sslash = TODO
|
-- SlashVS np vs sslash = TODO
|
||||||
|
|
||||||
EmbedS s = {s = "أَنْ" ++ s.s ! Verbal} ;
|
EmbedS s = {s = "مَا" ++ s.s ! Verbal} ;
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
EmbedVP vp = {s = uttVP VPPerf vp ! Masc} ; -- TODO: use VPGer once it's more stable
|
EmbedVP vp = {s = uttVP VPPerf vp ! Masc} ; -- TODO: use VPGer once it's more stable
|
||||||
|
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ oper
|
|||||||
|
|
||||||
haver_V, auxPassive : Verb = verbBeschH (estar_54 "estar") ;
|
haver_V, auxPassive : Verb = verbBeschH (estar_54 "estar") ;
|
||||||
|
|
||||||
essere_V, copula = verbBeschH (ser_52 "ser") ;
|
essere_V, copula = verbBeschH (ser_52 "ser" True) ;
|
||||||
stare_V, estar_V = verbBeschH (estar_54 "estar") ;
|
stare_V, estar_V = verbBeschH (estar_54 "estar") ;
|
||||||
|
|
||||||
verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere ; p = []} ;
|
verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere ; p = []} ;
|
||||||
|
|||||||
@@ -82,6 +82,6 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
ExistsNP np =
|
ExistsNP np =
|
||||||
mkClause [] True False np.a (insertComplement (\\_ => (np.s ! Nom).ton) (predV (mkV (complir_25 "existir")))) ;
|
mkClause [] True False np.a (insertComplement (\\_ => (np.s ! Nom).ton) (predV (mkV (complir_25 "existir" True)))) ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||||
|
|
||||||
concrete LexiconCat of Lexicon = CatCat ** open
|
concrete LexiconCat of Lexicon = CatCat ** open
|
||||||
(M=MorphoCat), ParadigmsCat, BeschCat, (D = DiffCat) in {
|
Prelude, (M=MorphoCat), ParadigmsCat, BeschCat, (D = DiffCat) in {
|
||||||
|
|
||||||
flags
|
flags
|
||||||
coding=utf8 ;
|
coding=utf8 ;
|
||||||
@@ -16,7 +16,7 @@ oper
|
|||||||
lin
|
lin
|
||||||
airplane_N = regMN "avió" ;
|
airplane_N = regMN "avió" ;
|
||||||
|
|
||||||
answer_V2S = mkV2S (verbV (compondre_26 "respondre")) dative ;
|
answer_V2S = mkV2S (verbV (compondre_26 "respondre" True)) dative ;
|
||||||
apartment_N = regMN "pis" ;
|
apartment_N = regMN "pis" ;
|
||||||
apple_N = regFN "poma" ;
|
apple_N = regFN "poma" ;
|
||||||
art_N = regMN "art" ;
|
art_N = regMN "art" ;
|
||||||
@@ -61,7 +61,7 @@ lin
|
|||||||
close_V2 = dirV2 (verbV (trencar_112 "tancar")) ;
|
close_V2 = dirV2 (verbV (trencar_112 "tancar")) ;
|
||||||
coat_N = regMN "abric" ;
|
coat_N = regMN "abric" ;
|
||||||
cold_A = regADeg "fred" ;
|
cold_A = regADeg "fred" ;
|
||||||
come_V = verbV (venir_117 "venir") ;
|
come_V = verbV (venir_117 "venir" True) ;
|
||||||
computer_N = regMN "ordinador" ;
|
computer_N = regMN "ordinador" ;
|
||||||
country_N = mkN "país" "països" masculine ;
|
country_N = mkN "país" "països" masculine ;
|
||||||
cousin_N = regMN "cosí" ;
|
cousin_N = regMN "cosí" ;
|
||||||
@@ -93,7 +93,7 @@ lin
|
|||||||
glove_N = regMN "guant" ;
|
glove_N = regMN "guant" ;
|
||||||
gold_N = regMN "or" ;
|
gold_N = regMN "or" ;
|
||||||
good_A = mkA (prefA "bo" "bon") (mkA "millor") ;
|
good_A = mkA (prefA "bo" "bon") (mkA "millor") ;
|
||||||
go_V = (verbV (anar_4 "anar")) ;
|
go_V = (verbV (anar_4 "anar" 0)) ;
|
||||||
green_A = regADeg "verd" ;
|
green_A = regADeg "verd" ;
|
||||||
harbour_N = regMN "port" ;
|
harbour_N = regMN "port" ;
|
||||||
hate_V2 = dirV2 (verbV (canviar_16 "odiar")) ;
|
hate_V2 = dirV2 (verbV (canviar_16 "odiar")) ;
|
||||||
@@ -159,14 +159,14 @@ lin
|
|||||||
rock_N = regFN "roca" ;
|
rock_N = regFN "roca" ;
|
||||||
roof_N = regFN "teulada" ;
|
roof_N = regFN "teulada" ;
|
||||||
rubber_N = regFN "goma" ;
|
rubber_N = regFN "goma" ;
|
||||||
run_V = verbV (córrer_30 "córrer") ;
|
run_V = verbV (córrer_30 "córrer" True) ;
|
||||||
say_VS = mkVS (verbV (dir_41 "dir")) ;
|
say_VS = mkVS (verbV (dir_41 "dir")) ;
|
||||||
school_N = regFN "escola" ;
|
school_N = regFN "escola" ;
|
||||||
science_N = regFN "ciència" ;
|
science_N = regFN "ciència" ;
|
||||||
sea_N = regMN "mar" ; -- masc & fem
|
sea_N = regMN "mar" ; -- masc & fem
|
||||||
seek_V2 = dirV2 (verbV (trencar_112 "buscar")) ;
|
seek_V2 = dirV2 (verbV (trencar_112 "buscar")) ;
|
||||||
see_V2 = dirV2 (verbV (veure_118 "veure")) ;
|
see_V2 = dirV2 (verbV (veure_118 "veure" 0)) ;
|
||||||
sell_V3 = dirV3 (verbV (vendre_116 "vendre")) dative ;
|
sell_V3 = dirV3 (verbV (vendre_116 "vendre" True)) dative ;
|
||||||
send_V3 = dirV3 (verbV (canviar_16 "enviar")) dative ;
|
send_V3 = dirV3 (verbV (canviar_16 "enviar")) dative ;
|
||||||
sheep_N = regFN "ovella" ; -- xai
|
sheep_N = regFN "ovella" ; -- xai
|
||||||
ship_N = regMN "vaixell" ;
|
ship_N = regMN "vaixell" ;
|
||||||
@@ -218,7 +218,7 @@ lin
|
|||||||
woman_N = regFN "dona" ;
|
woman_N = regFN "dona" ;
|
||||||
wonder_VQ = mkVQ (reflV (mkV "preguntar")) ;
|
wonder_VQ = mkVQ (reflV (mkV "preguntar")) ;
|
||||||
wood_N = regFN "fusta" ;
|
wood_N = regFN "fusta" ;
|
||||||
write_V2 = dirV2 (verbV (escriure_50 "escriure")) ;
|
write_V2 = dirV2 (verbV (escriure_50 "escriure" True)) ;
|
||||||
yellow_A = compADeg (mkA "groc" "groga" "grocs" "grogues" "grogament") ;
|
yellow_A = compADeg (mkA "groc" "groga" "grocs" "grogues" "grogament") ;
|
||||||
young_A = compADeg (mkA "jove" "jove" "joves" "joves" "jovement") ;
|
young_A = compADeg (mkA "jove" "jove" "joves" "joves" "jovement") ;
|
||||||
do_V2 = dirV2 (verbV (fer_56 "fer")) ;
|
do_V2 = dirV2 (verbV (fer_56 "fer")) ;
|
||||||
@@ -319,16 +319,16 @@ lin
|
|||||||
fear_V2 = dirV2 (verbV (témer_107 "témer")) ;
|
fear_V2 = dirV2 (verbV (témer_107 "témer")) ;
|
||||||
fight_V2 = dirV2 (mkV "lluitar") ;
|
fight_V2 = dirV2 (mkV "lluitar") ;
|
||||||
float_V = mkV "surar" ;
|
float_V = mkV "surar" ;
|
||||||
flow_V = verbV (reduir_94 "fluir") ; -- also: mkV "circular"
|
flow_V = verbV (reduir_94 "fluir" True) ; -- also: mkV "circular"
|
||||||
fly_V = mkV "volar" ;
|
fly_V = mkV "volar" ;
|
||||||
freeze_V = mkV "congelar" ;
|
freeze_V = mkV "congelar" ;
|
||||||
give_V3 = dirdirV3 (verbV (donar_43 "donar")) ;
|
give_V3 = dirdirV3 (verbV (donar_43 "donar" True)) ;
|
||||||
hit_V2 = dirV2 (verbV (trencar_112 "picar")) ;
|
hit_V2 = dirV2 (verbV (trencar_112 "picar")) ;
|
||||||
hold_V2 = dirV2 (verbV (obtenir_78 "sostenir")) ;
|
hold_V2 = dirV2 (verbV (obtenir_78 "sostenir" True)) ;
|
||||||
hunt_V2 = dirV2 (verbV (començar_22 "caçar")) ;
|
hunt_V2 = dirV2 (verbV (començar_22 "caçar")) ;
|
||||||
kill_V2 = dirV2 (mkV "matar") ;
|
kill_V2 = dirV2 (mkV "matar") ;
|
||||||
laugh_V = verbV (riure_96 "riure") ;
|
laugh_V = verbV (riure_96 "riure") ;
|
||||||
lie_V = reflV (verbV (jeure_62 "jeure")) ;
|
lie_V = reflV (verbV (jeure_62 "jeure" True)) ;
|
||||||
play_V = verbV (pregar_86 "jugar") ;
|
play_V = verbV (pregar_86 "jugar") ;
|
||||||
pull_V2 = dirV2 (mkV "tibar") ;
|
pull_V2 = dirV2 (mkV "tibar") ;
|
||||||
push_V2 = dirV2 (verbV (atènyer_59 "empènyer")) ;
|
push_V2 = dirV2 (verbV (atènyer_59 "empènyer")) ;
|
||||||
@@ -336,7 +336,7 @@ lin
|
|||||||
scratch_V2 = dirV2 (mkV "gratar") ;
|
scratch_V2 = dirV2 (mkV "gratar") ;
|
||||||
sew_V = verbV (cosir_31 "cosir") ;
|
sew_V = verbV (cosir_31 "cosir") ;
|
||||||
sing_V = mkV "cantar" ;
|
sing_V = mkV "cantar" ;
|
||||||
sit_V = reflV (verbV (seure_102 "seure")) ;
|
sit_V = reflV (verbV (seure_102 "seure" True)) ;
|
||||||
smell_V = mkV "ensumar" ;
|
smell_V = mkV "ensumar" ;
|
||||||
spit_V = verbV (escopir_49 "escopir") ;
|
spit_V = verbV (escopir_49 "escopir") ;
|
||||||
split_V2 = dirV2 (mkV "separar") ; -- dividir,) ;
|
split_V2 = dirV2 (mkV "separar") ; -- dividir,) ;
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ resource ParadigmsCat =
|
|||||||
open
|
open
|
||||||
(Predef=Predef),
|
(Predef=Predef),
|
||||||
Prelude,
|
Prelude,
|
||||||
|
DiffCat,
|
||||||
MorphoCat,
|
MorphoCat,
|
||||||
BeschCat,
|
BeschCat,
|
||||||
CatCat in {
|
CatCat in {
|
||||||
@@ -64,6 +65,9 @@ oper
|
|||||||
|
|
||||||
mkPrep : Str -> Prep ; -- other preposition
|
mkPrep : Str -> Prep ; -- other preposition
|
||||||
|
|
||||||
|
CopulaType : Type ;
|
||||||
|
serCopula : CopulaType ;
|
||||||
|
estarCopula : CopulaType ;
|
||||||
|
|
||||||
--2 Nouns
|
--2 Nouns
|
||||||
|
|
||||||
@@ -295,10 +299,13 @@ oper
|
|||||||
|
|
||||||
Gender = MorphoCat.Gender ;
|
Gender = MorphoCat.Gender ;
|
||||||
Number = MorphoCat.Number ;
|
Number = MorphoCat.Number ;
|
||||||
|
CopulaType = DiffCat.CopulaType ;
|
||||||
masculine = Masc ;
|
masculine = Masc ;
|
||||||
feminine = Fem ;
|
feminine = Fem ;
|
||||||
singular = Sg ;
|
singular = Sg ;
|
||||||
plural = Pl ;
|
plural = Pl ;
|
||||||
|
serCopula = DiffCat.serCopula ;
|
||||||
|
estarCopula = DiffCat.estarCopula ;
|
||||||
|
|
||||||
accusative = complAcc ** {lock_Prep = <>} ;
|
accusative = complAcc ** {lock_Prep = <>} ;
|
||||||
genitive = complGen ** {lock_Prep = <>} ;
|
genitive = complGen ** {lock_Prep = <>} ;
|
||||||
@@ -360,12 +367,12 @@ oper
|
|||||||
"çar" => començar_22 x ;
|
"çar" => començar_22 x ;
|
||||||
"gir" => fugir_58 x ;
|
"gir" => fugir_58 x ;
|
||||||
"ure" => beure_11 x ;
|
"ure" => beure_11 x ;
|
||||||
"xer" => créixer_33 x ; --conèixer,aparèixer with regAltV
|
"xer" => créixer_33 x True ; --conèixer,aparèixer with regAltV
|
||||||
|
|
||||||
_ + "re" => perdre_83 x ;
|
_ + "re" => perdre_83 x ;
|
||||||
_ + "er" => verbEr x ; --handles accents in infinitives and c/ç, g/j
|
_ + "er" => verbEr x ; --handles accents in infinitives and c/ç, g/j
|
||||||
_ + "ir" => dormir_44 x ; --inchoative verbs with regAltV
|
_ + "ir" => dormir_44 x ; --inchoative verbs with regAltV
|
||||||
_ + "ur" => dur_45 x ;
|
_ + "ur" => dur_45 x True ;
|
||||||
_ => cantar_15 x } ;
|
_ => cantar_15 x } ;
|
||||||
|
|
||||||
regAltV x y =
|
regAltV x y =
|
||||||
@@ -377,15 +384,15 @@ oper
|
|||||||
<"ure",_+"c"> => regV x ; --caure,viure etc. with non-smart paradigms
|
<"ure",_+"c"> => regV x ; --caure,viure etc. with non-smart paradigms
|
||||||
|
|
||||||
--small set of irregular verbs that have unique P1 Sg
|
--small set of irregular verbs that have unique P1 Sg
|
||||||
<_+"ir","tinc"> => tenir_108 x ; --tenir, obtenir, ...
|
<_+"ir","tinc"> => tenir_108 x 0 ; --tenir, obtenir, ...
|
||||||
<_+"ir","vinc"> => venir_117 x ; --venir, prevenir, ...
|
<_+"ir","vinc"> => venir_117 x True ; --venir, prevenir, ...
|
||||||
<_+"er",_+"ig"> => fer_56 x ;
|
<_+"er",_+"ig"> => fer_56 x ;
|
||||||
<_+"re",_+"ig"> => veure_118 x ;
|
<_+"re",_+"ig"> => veure_118 x 0 ;
|
||||||
<_+"ar",_+"ig"> => anar_4 x ;
|
<_+"ar",_+"ig"> => anar_4 x 0 ;
|
||||||
|
|
||||||
<"xer" ,_+ "c"> => conèixer_27 x ; --créixer, merèixer with regV
|
<"xer" ,_+ "c"> => conèixer_27 x ; --créixer, merèixer with regV
|
||||||
<_+"er",_+ "c"> => valer_114 x ;
|
<_+"er",_+ "c"> => valer_114 x True ;
|
||||||
<_+"re",_+ "c"> => doldre_42 x ; --participles of type dolgut
|
<_+"re",_+ "c"> => doldre_42 x True ; --participles of type dolgut
|
||||||
--for absolt, pres, ... use mk3V
|
--for absolt, pres, ... use mk3V
|
||||||
<_ ,_> => regV x } ;
|
<_ ,_> => regV x } ;
|
||||||
|
|
||||||
@@ -399,25 +406,25 @@ oper
|
|||||||
--if these are overfitting, just comment out.
|
--if these are overfitting, just comment out.
|
||||||
--still doesn't catch creure, seure; mk4V with creiem as 4th arg?
|
--still doesn't catch creure, seure; mk4V with creiem as 4th arg?
|
||||||
<"ure",_, "uit"> => coure_32 x ; --coure coem cuit
|
<"ure",_, "uit"> => coure_32 x ; --coure coem cuit
|
||||||
<"ure",_,_+"it"> => escriure_50 x ; --escriure escrivim escrit
|
<"ure",_,_+"it"> => escriure_50 x True ; --escriure escrivim escrit
|
||||||
<"ure",_,_+"et"> => treure_113 x ; --treure traiem tret
|
<"ure",_,_+"et"> => treure_113 x True ; --treure traiem tret
|
||||||
<"ure",_,_+"st"> => veure_118 x ; --veure veiem vist
|
<"ure",_,_+"st"> => veure_118 x 0 ; --veure veiem vist
|
||||||
<"ure",_, "cut"> => viure_119 x ; --viure vivim viscut
|
<"ure",_, "cut"> => viure_119 x ; --viure vivim viscut
|
||||||
|
|
||||||
<"dre",_,_+"st"> => compondre_26 x ; --compondre compost
|
<"dre",_,_+"st"> => compondre_26 x True ; --compondre compost
|
||||||
|
|
||||||
<"rir", _+"ixo",_+"rt"> => cobrir_20 x ; --cob|rir cob|ert
|
<"rir", _+"ixo",_+"rt"> => cobrir_20 x True ; --cob|rir cob|ert
|
||||||
<_+"ir",_+"ixo",_+"rt"> => complir_25 x ; --compl|ir compl|ert
|
<_+"ir",_+"ixo",_+"rt"> => complir_25 x True ; --compl|ir compl|ert
|
||||||
|
|
||||||
<_+"ir",_+"ixo",_+"ït"> => lluir_64 x ; --lluir lluïm lluït
|
<_+"ir",_+"ixo",_+"ït"> => lluir_64 x 0 ; --lluir lluïm lluït
|
||||||
|
|
||||||
<"dre",_,"nut"> => vendre_116 x ;
|
<"dre",_,"nut"> => vendre_116 x True ;
|
||||||
|
|
||||||
<_+"re",_+"c",_+"t"> => absoldre_1 x ; --c in sgP1 and subj, not in part
|
<_+"re",_+"c",_+"t"> => absoldre_1 x ; --c in sgP1 and subj, not in part
|
||||||
|
|
||||||
<_+"re",_,_+"es"> => prendre_87 x ;
|
<_+"re",_,_+"es"> => prendre_87 x ;
|
||||||
<_+"re",_,_+"ès"> => atendre_8 x ;
|
<_+"re",_,_+"ès"> => atendre_8 x ;
|
||||||
<_+"re",_,_+"as"> => raure_91 x ;
|
<_+"re",_,_+"as"> => raure_91 x True ;
|
||||||
<_+"re",_,_+"às"> => romandre_97 x ;
|
<_+"re",_,_+"às"> => romandre_97 x ;
|
||||||
<_+"re",_,_+"os"> => cloure_19 x ;
|
<_+"re",_,_+"os"> => cloure_19 x ;
|
||||||
<_+"re",_,_+"ós"> => confondre_28 x ;
|
<_+"re",_,_+"ós"> => confondre_28 x ;
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ lin
|
|||||||
Masc Sg P3 ;
|
Masc Sg P3 ;
|
||||||
not_Predet = {s = \\a,c => prepCase c ++ "no pas" ; c = Nom ;
|
not_Predet = {s = \\a,c => prepCase c ++ "no pas" ; c = Nom ;
|
||||||
a = PNoAg} ;
|
a = PNoAg} ;
|
||||||
have_V2 = dirV2 (verbV (tenir_108 "tenir")) ;
|
have_V2 = dirV2 (verbV (tenir_108 "tenir" 0)) ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
etConj : {s : Str ; n : MorphoCat.Number} = {s = "i" } ** {n = Pl} ;
|
etConj : {s : Str ; n : MorphoCat.Number} = {s = "i" } ** {n = Pl} ;
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ lin
|
|||||||
ExistCN cn = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
ExistCN cn = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||||
ExistMassCN cn = ExistNP (MassNP cn) ;
|
ExistMassCN cn = ExistNP (MassNP cn) ;
|
||||||
ExistPluralCN cn = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
ExistPluralCN cn = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
||||||
AdvIsNP adv np = PredVP np (UseComp (CompAdv adv)) ; -- here is the tree / here are the trees
|
AdvIsNP adv np = PredVP np (UseComp (CompAdv adv)) ; -- here is the tree / here are the trees ; DEFAULT the tree is here
|
||||||
|
AdvIsNPAP adv np ap = PredVP np (AdvVP (UseComp (CompAP ap)) adv) ; -- here are the instructions documented ; DEFAULT the instructions are documented here
|
||||||
PurposeVP = variants {} ; -- VP -> Adv ; -- to become happy
|
PurposeVP = variants {} ; -- VP -> Adv ; -- to become happy
|
||||||
ComplBareVS = ComplVS ; -- VS -> S -> VP ; -- say she runs ; DEFAULT say that she runs
|
ComplBareVS = ComplVS ; -- VS -> S -> VP ; -- say she runs ; DEFAULT say that she runs
|
||||||
SlashBareV2S = SlashV2S ; -- V2S -> S -> VPSlash ; -- answer (to him) it is good ; DEFAULT answer that it is good
|
SlashBareV2S = SlashV2S ; -- V2S -> S -> VPSlash ; -- answer (to him) it is good ; DEFAULT answer that it is good
|
||||||
@@ -63,6 +64,8 @@ lin
|
|||||||
FrontComplDirectVS = variants {} ; -- NP -> VS -> Utt -> Cl ; -- "I am here", she said
|
FrontComplDirectVS = variants {} ; -- NP -> VS -> Utt -> Cl ; -- "I am here", she said
|
||||||
FrontComplDirectVQ = variants {} ; -- NP -> VQ -> Utt -> Cl ; -- "where", she asked
|
FrontComplDirectVQ = variants {} ; -- NP -> VQ -> Utt -> Cl ; -- "where", she asked
|
||||||
PredAPVP ap vp = ImpersCl (UseComp (CompAP (SentAP ap (EmbedVP vp)))) ; -- DEFAULT it is (good to walk)
|
PredAPVP ap vp = ImpersCl (UseComp (CompAP (SentAP ap (EmbedVP vp)))) ; -- DEFAULT it is (good to walk)
|
||||||
|
PredIAdvVP iadv vp = QuestIAdv iadv (GenericCl vp) ; -- DEFAULT how does one walk
|
||||||
|
EmbedSSlash = variants {} ; -- SSlash -> SC ; -- what we did (was fun)
|
||||||
AdjAsCN = variants {} ; -- AP -> CN ; -- a green one ; en grön (Swe)
|
AdjAsCN = variants {} ; -- AP -> CN ; -- a green one ; en grön (Swe)
|
||||||
AdjAsNP = variants {} ; -- AP -> NP ; -- green (is good)
|
AdjAsNP = variants {} ; -- AP -> NP ; -- green (is good)
|
||||||
ReflRNP = variants {} ; -- VPSlash -> RNP -> VP ; -- love my family and myself
|
ReflRNP = variants {} ; -- VPSlash -> RNP -> VP ; -- love my family and myself
|
||||||
@@ -96,7 +99,7 @@ lin
|
|||||||
|
|
||||||
DetNPMasc = DetNP ;
|
DetNPMasc = DetNP ;
|
||||||
DetNPFem = DetNP ;
|
DetNPFem = DetNP ;
|
||||||
|
SubjRelNP = RelNP ;
|
||||||
UseComp_estar = UseComp ; -- DEFAULT UseComp
|
UseComp_estar = UseComp ; -- DEFAULT UseComp
|
||||||
iFem_Pron = i_Pron ; -- DEFAULT I (masc)
|
iFem_Pron = i_Pron ; -- DEFAULT I (masc)
|
||||||
youFem_Pron = youSg_Pron ; -- DEFAULT you (masc)
|
youFem_Pron = youSg_Pron ; -- DEFAULT you (masc)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ concrete ExtendEng of Extend =
|
|||||||
FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP,
|
FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP,
|
||||||
GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP,
|
GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP,
|
||||||
PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN,
|
PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN,
|
||||||
PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash,
|
EmbedSSlash, PredIAdvVP, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash,
|
||||||
UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2
|
UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2
|
||||||
]
|
]
|
||||||
with
|
with
|
||||||
@@ -191,6 +191,9 @@ concrete ExtendEng of Extend =
|
|||||||
|
|
||||||
ByVP vp = {s = "by" ++ (GerundAdv (lin VP vp)).s} ;
|
ByVP vp = {s = "by" ++ (GerundAdv (lin VP vp)).s} ;
|
||||||
|
|
||||||
|
PredIAdvVP iadv vp = {s = \\t,a,p,q => iadv.s ++ infVP VVInf vp False Simul CPos (agrP3 Sg)} ;
|
||||||
|
|
||||||
|
EmbedSSlash s = {s = \\_ => "what" ++ s.s ++ s.c2} ;
|
||||||
|
|
||||||
NominalizeVPSlashNP vpslash np =
|
NominalizeVPSlashNP vpslash np =
|
||||||
let vp : ResEng.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash ;
|
let vp : ResEng.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash ;
|
||||||
|
|||||||
@@ -84,6 +84,9 @@ oper
|
|||||||
|
|
||||||
|
|
||||||
mkAdv : Str -> Adv ;
|
mkAdv : Str -> Adv ;
|
||||||
|
mkAdV : Str -> AdV ;
|
||||||
|
mkAdN : Str -> AdN ;
|
||||||
|
mkAdA : Str -> AdA ;
|
||||||
|
|
||||||
mkConj : overload {
|
mkConj : overload {
|
||||||
mkConj : Str -> Conj ; -- just one word, default number Sg: e.g. "ja"
|
mkConj : Str -> Conj ; -- just one word, default number Sg: e.g. "ja"
|
||||||
@@ -204,6 +207,7 @@ oper
|
|||||||
|
|
||||||
mkV3 : overload {
|
mkV3 : overload {
|
||||||
mkV3 : V -> Prep -> Prep -> V3 ; -- e.g. rääkima, allative, elative
|
mkV3 : V -> Prep -> Prep -> V3 ; -- e.g. rääkima, allative, elative
|
||||||
|
mkV3 : V -> V3 ;
|
||||||
mkV3 : Str -> V3 ; -- string, default cases accusative + allative
|
mkV3 : Str -> V3 ; -- string, default cases accusative + allative
|
||||||
} ;
|
} ;
|
||||||
dirV3 : V -> Case -> V3 ; -- liigutama, (accusative), illative
|
dirV3 : V -> Case -> V3 ; -- liigutama, (accusative), illative
|
||||||
@@ -304,6 +308,9 @@ oper
|
|||||||
|
|
||||||
|
|
||||||
mkAdv : Str -> Adv = \str -> {s = str ; lock_Adv = <>} ;
|
mkAdv : Str -> Adv = \str -> {s = str ; lock_Adv = <>} ;
|
||||||
|
mkAdV : Str -> AdV = \str -> {s = str ; lock_AdV = <>} ;
|
||||||
|
mkAdN : Str -> AdN = \str -> {s = str ; lock_AdN = <>} ;
|
||||||
|
mkAdA : Str -> AdA = \str -> {s = str ; lock_AdA = <>} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -831,6 +838,9 @@ oper
|
|||||||
|
|
||||||
mkV3 = overload {
|
mkV3 = overload {
|
||||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V3 = <>} ;
|
mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V3 = <>} ;
|
||||||
|
mkV2 : V -> V3 = \v -> v ** {c2 = accPrep ;
|
||||||
|
c3 = (casePrep allative) ;
|
||||||
|
lock_V3 = <>} ;
|
||||||
mkV2 : Str -> V3 = \str -> (mkV str) ** {c2 = accPrep ;
|
mkV2 : Str -> V3 = \str -> (mkV str) ** {c2 = accPrep ;
|
||||||
c3 = (casePrep allative) ;
|
c3 = (casePrep allative) ;
|
||||||
lock_V3 = <>} ;
|
lock_V3 = <>} ;
|
||||||
@@ -864,17 +874,22 @@ oper
|
|||||||
-- mkV2S v p = mk2V2 v p ** {lock_V2S = <>} ;
|
-- mkV2S v p = mk2V2 v p ** {lock_V2S = <>} ;
|
||||||
mkV2V = overload {
|
mkV2V = overload {
|
||||||
mkV2V : V -> Prep -> V2V = \v,p -> mkV2Vf v p infMa ;
|
mkV2V : V -> Prep -> V2V = \v,p -> mkV2Vf v p infMa ;
|
||||||
|
mkV2V : V -> V2V = \v -> mkV2Vf v (casePrep genitive) infMa ;
|
||||||
mkV2V : Str -> V2V = \str -> mkV2Vf (mkV str) (casePrep genitive) infMa ;
|
mkV2V : Str -> V2V = \str -> mkV2Vf (mkV str) (casePrep genitive) infMa ;
|
||||||
} ;
|
} ;
|
||||||
mkV2Vf v p f = mk2V2 v p ** {vi = f ; lock_V2V = <>} ;
|
mkV2Vf v p f = mk2V2 v p ** {vi = f ; lock_V2V = <>} ;
|
||||||
|
|
||||||
mkVA = overload {
|
mkVA = overload {
|
||||||
mkVA : V -> Prep -> VA = \v,p -> v ** {c2 = p ; lock_VA = <>} ;
|
mkVA : V -> Prep -> VA = \v,p -> v ** {c2 = p ; lock_VA = <>} ;
|
||||||
|
mkVA : V -> VA = \v -> v ** {c2 = casePrep translative ; lock_VA = <>} ;
|
||||||
mkVA : Str -> VA = \str -> (mkV str) ** {c2 = casePrep translative ; lock_VA = <>} ;
|
mkVA : Str -> VA = \str -> (mkV str) ** {c2 = casePrep translative ; lock_VA = <>} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkV2A = overload {
|
mkV2A = overload {
|
||||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V2A = <>} ;
|
mkV2A : V -> Prep -> Prep -> V2A = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V2A = <>} ;
|
||||||
|
mkV2A : V -> V2A = \v -> v ** {c2 = casePrep genitive ;
|
||||||
|
c3 = casePrep translative ;
|
||||||
|
lock_V2A = <>} ;
|
||||||
mkV2A : Str -> V2A = \str -> (mkV str) ** {c2 = casePrep genitive ;
|
mkV2A : Str -> V2A = \str -> (mkV str) ** {c2 = casePrep genitive ;
|
||||||
c3 = casePrep translative ;
|
c3 = casePrep translative ;
|
||||||
lock_V2A = <>} ;
|
lock_V2A = <>} ;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ concrete ExtendFin of Extend =
|
|||||||
VPI2,VPS2,MkVPS,MkVPS2,ConjVPS2,ComplVPS2, ConsVPS, BaseVPS, ListVPS, VPS, ConjVPS,PredVPS,
|
VPI2,VPS2,MkVPS,MkVPS2,ConjVPS2,ComplVPS2, ConsVPS, BaseVPS, ListVPS, VPS, ConjVPS,PredVPS,
|
||||||
MkVPI2,ConjVPI2,ComplVPI2,ComplVPIVV
|
MkVPI2,ConjVPI2,ComplVPI2,ComplVPIVV
|
||||||
,ExistCN, ExistMassCN, ICompAP, ByVP
|
,ExistCN, ExistMassCN, ICompAP, ByVP
|
||||||
,CompoundN, GenNP, GenIP, AdvIsNP
|
,CompoundN, GenNP, GenIP, AdvIsNP, EmbedSSlash
|
||||||
]
|
]
|
||||||
with
|
with
|
||||||
(Grammar = GrammarFin) **
|
(Grammar = GrammarFin) **
|
||||||
@@ -149,4 +149,15 @@ lin
|
|||||||
ByVP vp = lin Adv {s = S.infVP vp.s.sc Pos (Ag Sg P3) vp Inf3Adess} ; ---- Agr ?
|
ByVP vp = lin Adv {s = S.infVP vp.s.sc Pos (Ag Sg P3) vp Inf3Adess} ; ---- Agr ?
|
||||||
|
|
||||||
AdvIsNP adv np = S.mkClause (\_ -> adv.s) np.a (UseComp (CompNP np)) ;
|
AdvIsNP adv np = S.mkClause (\_ -> adv.s) np.a (UseComp (CompNP np)) ;
|
||||||
|
|
||||||
|
-- : SSlash -> SC
|
||||||
|
EmbedSSlash ss =
|
||||||
|
let it_NP : NP = UsePron it_Pron ;
|
||||||
|
thatWhich : NP = it_NP ** {
|
||||||
|
s = \\nc => it_NP.s ! NPSep ++ case nc of {
|
||||||
|
NPCase c => mikaInt ! Sg ! c ;
|
||||||
|
NPAcc => mikaInt ! Sg ! Gen ;
|
||||||
|
NPSep => mikaInt ! Sg ! Nom }
|
||||||
|
} ;
|
||||||
|
in {s = appCompl True Pos ss.c2 thatWhich ++ ss.s} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,4 +89,7 @@ concrete CatLat of Cat = CommonX-[Adv] ** open ResLat, ParamX, Prelude in {
|
|||||||
linref
|
linref
|
||||||
NP = \np -> np.preap.s ! Ag np.g np.n Nom ++ np.s ! Nom ++ np.postap.s ! Ag np.g np.n Nom ;
|
NP = \np -> np.preap.s ! Ag np.g np.n Nom ++ np.s ! Nom ++ np.postap.s ! Ag np.g np.n Nom ;
|
||||||
VP = \vp -> vp.adv ++ vp.inf ! VInfActPres ++ vp.obj ++ vp.compl ! Ag Masc Sg Nom ;
|
VP = \vp -> vp.adv ++ vp.inf ! VInfActPres ++ vp.obj ++ vp.compl ! Ag Masc Sg Nom ;
|
||||||
|
|
||||||
|
S = \s -> combineSentence s ! SPreO ! PreO ! SOV ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,12 +53,22 @@ concrete ConjunctionLat of Conjunction =
|
|||||||
--
|
--
|
||||||
|
|
||||||
-- BaseS : S -> S -> ListS
|
-- BaseS : S -> S -> ListS
|
||||||
-- TO FIX
|
-- BaseS x y = {
|
||||||
-- BaseS x y = { l = \\c => twoStr (x.s ! PreS) (y.s ! PreS) } ;
|
-- l = \\c => { s1 = x ; s2 = y } ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
-- ConsS : S -> ListS -> ListS
|
-- ConsS : S -> ListS -> ListS
|
||||||
-- TO FIX
|
-- TO FIX
|
||||||
-- ConsS x xs = { l = \\_ => consrSS bindComma (ss (x.s ! PreS)) (xs.l ! Comma) };
|
-- ConsS x xs = { l = \\_ => consrSS bindComma (ss (x.s ! PreS)) (xs.l ! Comma) };
|
||||||
|
-- ConsS s ss = {
|
||||||
|
-- l = \\c =>
|
||||||
|
-- { s1 = ss.s1 ++
|
||||||
|
-- table {
|
||||||
|
-- And => and_Conj
|
||||||
|
-- } ! c
|
||||||
|
-- ++ ss.s2 ;
|
||||||
|
-- s2 = s }
|
||||||
|
-- } ;
|
||||||
|
|
||||||
-- BaseAdv : Adv -> Adv -> ListAdv
|
-- BaseAdv : Adv -> Adv -> ListAdv
|
||||||
BaseAdv x y = { l = \\c => twoSS (ss (x.s ! Posit)) (ss (y.s ! Posit)) } ;
|
BaseAdv x y = { l = \\c => twoSS (ss (x.s ! Posit)) (ss (y.s ! Posit)) } ;
|
||||||
@@ -101,7 +111,7 @@ concrete ConjunctionLat of Conjunction =
|
|||||||
{ l = \\_ => consrTable Agr and_Conj.s2 x (xs.l ! Comma ) } ;
|
{ l = \\_ => consrTable Agr and_Conj.s2 x (xs.l ! Comma ) } ;
|
||||||
--
|
--
|
||||||
lincat
|
lincat
|
||||||
-- [S] = { l : Coordinator => {s1,s2 : Str} } ; -- TO FIX
|
-- [S] = { l : Coordinator => {s1,s2 : S} } ; -- TO FIX
|
||||||
[Adv] = { l: Coordinator => {s1,s2 : Str}} ;
|
[Adv] = { l: Coordinator => {s1,s2 : Str}} ;
|
||||||
[NP] = {l : Coordinator => {s1,s2 : Case => Str} ; g : Gender ; n : Number ; p : Person ; adv : Str ; preap : AP ; postap : AP ; isBase : Bool } ;
|
[NP] = {l : Coordinator => {s1,s2 : Case => Str} ; g : Gender ; n : Number ; p : Person ; adv : Str ; preap : AP ; postap : AP ; isBase : Bool } ;
|
||||||
[AP] = {l : Coordinator => {s1,s2 : Agr => Str } } ;
|
[AP] = {l : Coordinator => {s1,s2 : Agr => Str } } ;
|
||||||
|
|||||||
5
src/latin/ConstructionLat.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
--# -path=.:api
|
||||||
|
concrete ConstructionLat of Construction = CatLat **
|
||||||
|
open SyntaxLat, SymbolicLat, ParadigmsLat,
|
||||||
|
(L = LexiconLat), (E = ExtraLat), (G = GrammarLat), (I = IrregLat), (R = ResLat), (N = NounLat), Prelude in {
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
dict/DictLat.gf
|
|
||||||
34819
src/latin/DictLat.gf
Normal file
@@ -1 +0,0 @@
|
|||||||
dict/DictLatAbs.gf
|
|
||||||
37214
src/latin/DictLatAbs.gf
Normal file
2
src/latin/DocumentationLat.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete DocumentationLat of Documentation = {
|
||||||
|
}
|
||||||
1
src/latin/ExtendLat.gf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
concrete ExtendLat of Extend = ExtendFunctor with (Grammar=GrammarLat);
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
concrete ExtraLat of ExtraLatAbs =
|
concrete ExtraLat of ExtraLatAbs =
|
||||||
CatLat, ConjunctionLat **
|
CatLat, ExtraLexiconLat, ConjunctionLat **
|
||||||
open ResLat, ParadigmsLat, Coordination, Prelude in {
|
open ResLat, ParadigmsLat, Coordination, Prelude in {
|
||||||
lincat CS = Str ;
|
lincat CS = Str ;
|
||||||
lin
|
lin
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
abstract ExtraLatAbs =
|
abstract ExtraLatAbs =
|
||||||
Extra, Conjunction
|
Extra, ExtraLexiconLatAbs, Conjunction
|
||||||
** {
|
** {
|
||||||
cat CS ;
|
cat CS ;
|
||||||
fun
|
fun
|
||||||
|
|||||||
453
src/latin/ExtraLexCaesar.gf
Normal file
@@ -0,0 +1,453 @@
|
|||||||
|
concrete ExtraLexCaesar of ExtraLexCaesarAbs = CatLat ** open Prelude,ParadigmsLat,ResLat, IrregLat, LexiconLat,StructuralLat in {
|
||||||
|
lin
|
||||||
|
a_Prep = mkPrep "a" Abl ;
|
||||||
|
ab_Prep = mkPrep "ab" Abl ;
|
||||||
|
abdere_V = mkV "abdere" "abdo" "abdidi" "abditum";
|
||||||
|
abducere_V = mkV "abducere" "abduco" "abduxi" "abductum" ; -- prefixVerb "ab" ducere_V; -- ab + ducere, missing abduci (inf VInfPassPres : abduceri)
|
||||||
|
abesse_V = prefixVerb "ab" be_V; -- ab + esse, missing absente?
|
||||||
|
abicere_V = mkV "abicere" "abicio" "abieci" "abiectum"; -- prefixVerb "ab" iacere_V; -- ab + iacere
|
||||||
|
abscisus_A = mkA "abscisus";
|
||||||
|
absens_A = mkA "absens" "absentis"; -- missing absente
|
||||||
|
absimilis_A = mkA "absimilis" "absimile"; -- missing absimili (s Posit (Ag Masc Sg Dat) : absimii)
|
||||||
|
abstinere_V2 = mkV2 (mkV "abstinere"); -- prefixVerb2 "ab" tenere_V2 ; -- -- ab + tenere
|
||||||
|
abstrahere_V2 = mkV2 (mkV "abstrahere" "abstraho" "abstraxi" "abstractum");-- prefixVerb2 "ab" trahere_V2 ; -- ab + trahere
|
||||||
|
-- ac_Conj = mkConj "" "ac" Sg ;
|
||||||
|
accedere_V = mkV "adcedere" "adcedo" "adcessi" "adcessum"; -- prefixVerb "ad" cedere_V ; -- ad + cedere
|
||||||
|
accendere_V = mkV "accendere" "accendo" "accendi" "accensum";
|
||||||
|
accidere_V = mkV "accidere" "accido" "accidi" "accisum"; -- ad + caedere?
|
||||||
|
accipere_V = mkV "accipere" "accipio" "accepi" "acceptum"; -- prefixVerb "ad" capere_V; -- ad + capere
|
||||||
|
acclivis_A = mkA "acclivis" "acclive" ;
|
||||||
|
acclivitas_N = mkN "acclivitas" "acclivitatis" feminine;
|
||||||
|
accommodare_V = mkV "accommodare" ;
|
||||||
|
accommodatus_A = mkA "accommodatus" ;
|
||||||
|
accurrere_V = mkV "accurrere" "accurro" "accucurri" "accursum"; -- prefixVerb "ad" currere_V; -- ad + currere
|
||||||
|
accusare_V = mkV "accusare";
|
||||||
|
acervus_N = mkN "acervus" ;
|
||||||
|
acies_N = mkN "acies" ;
|
||||||
|
acriter_Adv = ss "acriter"; -- comparison???
|
||||||
|
ad_Prep = mkPrep "ad" Acc;
|
||||||
|
adaequare_V = mkV "adaequare"; -- ad + aequare?
|
||||||
|
adamare_V2 = mkV2 (mkV "adamare"); -- prefixVerb2 "ad" love_V2; -- ad + amare, missing adamassent (act (VAct VAnt (VImpf VConj) Pl P3) : adamavissent)?
|
||||||
|
adducere_V = mkV "adducere" "adduco" "adduxi" "adductum"; -- prefixVerb "ad" ducere_V; -- ad + ducere, missing adduci
|
||||||
|
adequitare_V = mkV "adequitare"; -- prefixVerb "ad" equitare_V; -- ad + equitare
|
||||||
|
adesse_V = prefixVerb "ad" be_V; -- ad + esse
|
||||||
|
adferre_V = prefixVerb "ad" ferre_V;-- ad + ferre
|
||||||
|
adfectus_A = mkA "adfectus";
|
||||||
|
adfectus_N = mkN "adfectus" "adfectus" masculine;
|
||||||
|
adficere_V = mkV " adficere" "adfico" "adfeci" "adfectum"; -- ad + facere?, missing adficiebantur
|
||||||
|
adfigere_V = mkV " adfigere" "adfixi" "adfixum"; -- ad + figere?, missing adfixae
|
||||||
|
adfinitas_N = mkN "adfinitas" "adfinitatis" feminine;
|
||||||
|
adflictare_V = mkV "adflictare";
|
||||||
|
adflictus_A = mkA "adflictus";
|
||||||
|
adgredi_V = mkV "adgredi" "adgredior" "adgressus"; -- ad + gradior?, missing adgressi, adgressus
|
||||||
|
adgregare_V = mkV "adgregare"; -- ad + gregare?
|
||||||
|
adhibere_V = mkV "adhibere"; -- ad + habere?
|
||||||
|
adhuc_Adv = ss "adhuc";
|
||||||
|
Adiatunnus_PN = mkPN (lin N (singularN (mkN "Adiatunnus")));
|
||||||
|
adicere_V = mkV "adicere" "adieci" "adiectum"; -- ad + iacere?, missing adiecta
|
||||||
|
adigere_V = mkV "adigere" "adigo" "adegi" "adactum"; -- ad + agere?, missing adigi
|
||||||
|
adire_V = mkV "adire" "adeo" "" ""; -- prefixVerb "ad" ire_V; -- ad + ire, missing adiisset, aditus?
|
||||||
|
aditus_N = mkN "aditus" "aditus" masculine;
|
||||||
|
adiungere_V = mkV "adiungere" "adiungo" "adiunxi" "adiunctum"; -- ad + iungere?
|
||||||
|
adiuvare_V = mkV "adiuvare"; -- ad + iuvare?
|
||||||
|
administrare_V = mkV "administrare"; -- ad + ministrare
|
||||||
|
admirari_V = mkV "admirari" "admiror" "admiratus"; -- ad + mirari?
|
||||||
|
admittere_V = mkV "admittere" "admitto" "admisi" "admissum"; -- ad + mittere?
|
||||||
|
admodum_Adv = ss "admodum";
|
||||||
|
adoriri_V = mkV "adoriri" "adorior" "adortus"; -- ad + oriri?, missing adorti, adortum, adortus
|
||||||
|
adpellere_V = mkV "adpellere" "adpello" "adpuli" "adpulsum"; -- ad + pelere?
|
||||||
|
adpetere_V = mkV "adpetere" "adpeto" "adpetivi" "adpetitum"; -- ad + petere?, missing adpetierit, adpetisse, adpetissent
|
||||||
|
adpropinquare_V = mkV " adpropinquare"; -- ad + propinquare?
|
||||||
|
-- adpulsare_V = mkV "adpulsare";
|
||||||
|
adsciscere_V = mkV "adsciscere" "adscisco" "adscivi" "ascitum"; -- ad + sciscere?
|
||||||
|
adsuere_V = mkV "adsuere" "adsuo" "adsui" "adsutum"; -- ad + suere?, missing adsue
|
||||||
|
adsuefacere_V = mkV "adsuefacere" "adsuefacio" "adsuefeci" "adsuefactum"; -- possibly problematic
|
||||||
|
-- adtectus ???
|
||||||
|
adulescentia_N = mkN "adulescentia";
|
||||||
|
adulescentulus_N = mkN "adulescentulus";
|
||||||
|
advenire_V = mkV "advenire" "advenio" "adveni" "adventum"; -- prefixVerb "ad" venire_V; -- ad + venire
|
||||||
|
advertere_V = mkV "advertere" "adverto" "adverti" "adversum"; -- ad + vertere?
|
||||||
|
adventus_N = mkN "adventus" "adventus" masculine;
|
||||||
|
aedificare_V = mkV "aedificare";
|
||||||
|
aedificium_N = mkN "aedificium";
|
||||||
|
aeger_A = mkA "aeger";
|
||||||
|
aegre_Adv = ss "aegre"; -- comparison?
|
||||||
|
Aemilius_PN = mkPN (lin N (singularN (mkN "Aemilius")));
|
||||||
|
aequaliter_Adv = ss "aequaliter";
|
||||||
|
aequare_V = mkV " aequare";
|
||||||
|
aequinoctium_N = mkN "aequinoctium";
|
||||||
|
aequitas_N = mkN "aequitas" "aequitatis" feminine;
|
||||||
|
aequum_N = mkN "aequum";
|
||||||
|
aequus_A = mkA "aequus";
|
||||||
|
aerarius_A = mkA "aerarius";
|
||||||
|
aerarius_N = mkN "aerarius";
|
||||||
|
aer_f_N = mkN "aer" "aeris" feminine;
|
||||||
|
aer_m_N = mkN "aer" "aeris" masculine;
|
||||||
|
aes_N = mkN "aer" "aeris" neuter;
|
||||||
|
aestas_N = mkN "aestas" "aestatis" feminine;
|
||||||
|
aestimare_V = mkV "aestimare";
|
||||||
|
aestuarium_N = mkN "aestuarium";
|
||||||
|
aestus_N = mkN "aestus" "aestus" masculine;
|
||||||
|
aetas_N = mkN "aetas" "aetatis" feminine;
|
||||||
|
ager_N = mkN "ager";
|
||||||
|
agere_V = mkV "agere" "ago" "egi" "actum";
|
||||||
|
agger_N = mkN "agger" "aggeris" masculine;
|
||||||
|
agmen_N = mkN "agmen" "agminis" neuter;
|
||||||
|
alacer_A = mkA "alacer" "alacris";
|
||||||
|
alacritas_N = mkN "alacritas" "alacritatis" feminine;
|
||||||
|
alarius_A = mkA "alarius";
|
||||||
|
-- alduas_??? = ???;
|
||||||
|
alere_1_V = mkV "alere" "alo" "alui" "altum";
|
||||||
|
alere_2_V = mkV "alere" "alo" "alui" "alitum";
|
||||||
|
alienus_A = mkA "alienus";
|
||||||
|
-- alii_Conj = mkConj "alii" "alii" Sg ;
|
||||||
|
aliquam_Adv = ss "aliquam";
|
||||||
|
aliquanto_Adv = ss "aliquanto";
|
||||||
|
--aliqui_Pron = mkPron ???;
|
||||||
|
-- aliquis_Pron = aliquis;
|
||||||
|
aliter_Adv = ss "aliter";
|
||||||
|
alium_N = mkN "alium";
|
||||||
|
alius_A = mkA (mkN "alius") (mkN "alia") (mkN "aliud" "alius" neuter);
|
||||||
|
Allobroges_PN = mkPN (lin N (pluralN (mkNoun "" "" "" "" "" "" "Allobroges" "Allobroges" "Allobrogum" "Allobrogibus" masculine))); -- missing Allobrogas
|
||||||
|
Alpes_PN = mkPN (lin N (pluralN (mkNoun "" "" "" "" "" "" "Alpes" "Alpes" "Alpium" "Alpibus" feminine)));
|
||||||
|
alter_A = mkA (mkN "alter") (mkN "altera") (mkN "alterum"); -- missing alterius
|
||||||
|
alterare_V = mkV "alterare";
|
||||||
|
altitudo_N = mkN "altitudo" "altitudinis" feminine;
|
||||||
|
altus_A = mkA "altus";
|
||||||
|
aluta_N = mkN "aluta";
|
||||||
|
Ambarri_PN = mkPN (lin N (pluralN (mkN "Ambarrus")));
|
||||||
|
Ambiani_PN = mkPN (lin N (pluralN (mkN "Ambianus")));
|
||||||
|
Ambiliati_PN = mkPN (lin N (pluralN (mkN "Ambiliatus")));
|
||||||
|
Ambivariti_PN = mkPN (lin N (pluralN (mkN "Ambivaritus")));
|
||||||
|
amentia_N = mkN "amentia";
|
||||||
|
amicitia_N = mkN "amicitia";
|
||||||
|
amicus_A = mkA "amicus";
|
||||||
|
amittere_V = mkV "amittere" "amitto" "amisi" "amissum";
|
||||||
|
amplificare_V = mkV "amplificare";
|
||||||
|
amplitudo_N = mkN "amplitudo" "amplitudinis" feminine;
|
||||||
|
amplus_A = mkA "amplus";
|
||||||
|
anceps_A = mkA "anceps" "ancipitis";
|
||||||
|
ancora_N = mkN "ancora";
|
||||||
|
Andebrogius_PN = mkPN (lin N (singularN (mkN "Andebrogius")));
|
||||||
|
--Andes_PN = ???
|
||||||
|
angustia_N = mkN "angustia";
|
||||||
|
angustiare_V = mkV "angustiare";
|
||||||
|
-- an_Conj = mkConj "" "an" Sg;
|
||||||
|
-- an_an_Conj = mkConj "an" "an" Sg;
|
||||||
|
animadvertere_V = mkV "animadvertere" "animadverto" "animadverti" "animadversum";
|
||||||
|
animus_N = mkN "animus";
|
||||||
|
annuus_A = mkA "annuus";
|
||||||
|
ante_Adv = ss "ante";
|
||||||
|
ante_Prep = mkPrep "ante" Acc;
|
||||||
|
antea_Adv = ss "antea";
|
||||||
|
antecedere_V = mkV "antecedere" "antecedo" "antecessi" "antecessum"; -- ante + cedere?
|
||||||
|
antemna_N = mkN "antemna";
|
||||||
|
anteponere_V = mkV "anteponere" "antepono" "anteposui" "antepositum"; -- prefixVerb2 "ante" put_V2; -- ante + ponere
|
||||||
|
antiquitus_Adv = ss "antiquitus";
|
||||||
|
antiquus_A = mkA "antiquus"; -- missing antiquissimum
|
||||||
|
aperire_V = mkV "aperire" "aperio" "aperui" "apertum"; -- missing aperta, apertis, apertissimis, apertissimo, aperto, apertum, apertus
|
||||||
|
apertare_V = mkV "apertare";
|
||||||
|
Aprilis_PN = mkPN (lin N (singularN (mkN "Aprilis" "Aprilis" masculine))); -- missing Apr, April
|
||||||
|
appellare_V = mkV "appellare";
|
||||||
|
aptus_A = mkA "aptus";
|
||||||
|
apud_Prep = mkPrep "apud" Acc;
|
||||||
|
aquatio_N = mkN "aquatio" "aquationis" feminine;
|
||||||
|
aquila_N = mkN "aquila";
|
||||||
|
Aquileia_PN = mkPN (lin N (singularN (mkN "Aquileia")));
|
||||||
|
Aquitania_PN = mkPN (lin N (singularN (mkN "Aquitania")));
|
||||||
|
Aquitanus_N = mkN "Aquitanus";
|
||||||
|
Arar_PN = mkPN (lin N (singularN (mkN "Arar" "Araris" masculine))); -- missing Ararim
|
||||||
|
arbitrari_V = mkV "arbitrari";
|
||||||
|
arbitrium_N = mkN "arbitrium";
|
||||||
|
arcessere_V = mkV "arcessere" "arcesso" "arcessivi" "arcessitum";
|
||||||
|
arduus_A = mkA "arduus";
|
||||||
|
aries_N = mkN "aries" "arietis" masculine;
|
||||||
|
Ariovistus_PN = mkPN (lin N (singularN (mkN "Ariovistus")));
|
||||||
|
armatus_A = mkA "armatus";
|
||||||
|
arma_N = lin N (pluralN (mkNoun "" "" "" "" "" "" "arma" "arma" "armorum" "armis" neuter));
|
||||||
|
armamentum_N = mkN "armamentum";
|
||||||
|
armare_V = mkV "armare";
|
||||||
|
armatura_N = mkN "armatura";
|
||||||
|
armus_N = mkN "armus";
|
||||||
|
arroganter_Adv = ss "arroganter"; -- comparison?
|
||||||
|
arrogantia_N = mkN "arrogantia";
|
||||||
|
artus_A = mkA "artus";
|
||||||
|
Arverni_PN = mkPN (lin N (pluralN (mkN "Arvernus")));
|
||||||
|
arx_N = mkN "arx" "arcis" feminine;
|
||||||
|
ascendere_V = mkV "ascendere" "ascendo" "ascendi" "ascensum";
|
||||||
|
-- at_Conj = mkConj "at" "" Sg ;
|
||||||
|
-- atque_Conj = mkConj "atque" "" Sg ;
|
||||||
|
Atrebates_PN = mkPN (mkN "Atrebas" "Atrebatis" masculine);
|
||||||
|
attingere_V = mkV "attingere" "attingo" "attigi" "attactum"; -- ad + tangere?
|
||||||
|
attribuere_V = mkV "attribuere" "attribuo" "attribui" "attributum"; -- ad + tribuere?, missing attribuant
|
||||||
|
-- auctibus ???
|
||||||
|
auctor_N = mkN "auctor" "auctoris" masculine;
|
||||||
|
auctorare_V = mkV "auctorare";
|
||||||
|
auctoritas_N = mkN "auctoritas" "auctoritatis" feminine;
|
||||||
|
auctus_A = mkA "auctus";
|
||||||
|
audacter_Adv = ss "audacter"; -- comparison?
|
||||||
|
audax_A = mkA "audax" "audacis";
|
||||||
|
audere_V = mkV "audere"; -- semi-deponent?, missing ausos
|
||||||
|
audire_V = mkV "audire" ; -- missing audierant, audierit
|
||||||
|
auditio_N = mkN "auditio" "auditionis" feminine;
|
||||||
|
augere_V = mkV "augere"; -- missing auxisse
|
||||||
|
Atuatuci_PN = mkPN (lin N (pluralN (mkN "Atuatucus")));
|
||||||
|
Aulerci_PN = mkPN (lin N (pluralN (mkN "Aulercus")));
|
||||||
|
Auriga_PN = mkPN (mkN "Auriga");
|
||||||
|
Aurunculeius_PN = mkPN (lin N (singularN (mkN "Aurunculeius")));
|
||||||
|
Ausci_PN = mkPN (lin N (pluralN (mkN "Auscus")));
|
||||||
|
-- aut_Conj = mkConj "aut" "" Sg ;
|
||||||
|
-- autem_Conj = mkConj "autem" "" Sg ;
|
||||||
|
auxiliare_V = mkV "auxiliare";
|
||||||
|
auxilium_N = mkN "auxilium";
|
||||||
|
avaritia_N = mkN "avaritia";
|
||||||
|
avertere_V = mkV "avertere" "averto" "averti" "aversum"; -- ab + vertere?, missing aventu (noun sg supine neut dat)
|
||||||
|
avus_N = mkN "avus";
|
||||||
|
Axona_PN = mkPN (lin N (singularN (mkN "Axona")));
|
||||||
|
baculus_N = mkN "baculus";
|
||||||
|
Baleares_PN = mkPN (lin N (pluralN (mkN "Balear" "Balearis" masculine)));
|
||||||
|
barbarus_A = mkA "barbarus";
|
||||||
|
barbarus_N = mkN "barbarus";
|
||||||
|
batavus_A = mkA "batavus";
|
||||||
|
Belgae_PN = mkPN (lin N (pluralN (mkN "Belga"))); -- missing Belgos
|
||||||
|
bellare_V = mkV "bellare";
|
||||||
|
bellicosus_A = mkA "bellicosus";
|
||||||
|
Bellovaci_PN = mkPN (lin N (pluralN (mkN "Bellovacus")));
|
||||||
|
bellum_N = mkN "bellum";
|
||||||
|
bellus_A = mkA "bellus";
|
||||||
|
bene_Adv = ss "bene"; -- comparison?
|
||||||
|
beneficium_N = mkN "beneficium";
|
||||||
|
Bibrax_PN = mkPN (lin N (singularN (mkN "Bibrax" "Bibractis" masculine)));
|
||||||
|
biduum_N = mkN "biduum";
|
||||||
|
biduus_A = mkA "biduus";
|
||||||
|
biennis_A = mkA "biennis" "bienne"; -- missing biennium
|
||||||
|
biennium_N = mkN "biennium";
|
||||||
|
binus_A = mkA "binus";
|
||||||
|
bipedalis_A = mkA "bipedalis" "bipedale"; -- missing bipedalibus
|
||||||
|
bipertitus_A = mkA "bipertitus";
|
||||||
|
bis_Adv = ss "bis";
|
||||||
|
Biturix_PN = mkPN (lin N (pluralN (mkN "Biturix" "Biturigis" masculine)));
|
||||||
|
-- boc ???
|
||||||
|
Boduognatus_PN = mkPN (lin N (singularN (mkN "Boduognatus")));
|
||||||
|
Boi_PN = mkPN (lin N (pluralN (mkN "Boius"))); -- missing Boi
|
||||||
|
bonitas_N = mkN "bonitas" "bonitatis" feminine;
|
||||||
|
bracchium_N = mkN "bracchium";
|
||||||
|
Bratuspantium_PN = mkPN (lin N (singularN (mkN "Bratuspantium")));
|
||||||
|
brevi_Adv = ss "brevi";
|
||||||
|
breviare_V = mkV "breviare";
|
||||||
|
brevis_A = mkA "brevis" "breve"; -- missing brevi
|
||||||
|
brevitas_N = mkN "brevitas" "brevitatis" feminine;
|
||||||
|
Britannia_PN = mkPN (mkN "Britannia");
|
||||||
|
britannus_A = mkA "britannus";
|
||||||
|
Brutus_PN = mkPN (lin N (singularN (mkN "Brutus")));
|
||||||
|
cadaver_N = mkN "cadaver" "cadaveris" neuter;
|
||||||
|
cadere_V = mkV "cadere" "cado" "cecidi" "casum";
|
||||||
|
Caesar_PN = mkPN (lin N (singularN (mkN "Caesar" "Caesaris" masculine))); -- missing Caesare
|
||||||
|
caespes_N = mkN "caespes" "caespitis" masculine;
|
||||||
|
calamitas_N = mkN "calamitas" "calamitatis" feminine;
|
||||||
|
calare_V = mkV "calare";
|
||||||
|
calo_N = mkN "calo" "calonis" masculine;
|
||||||
|
campus_N = mkN "campus";
|
||||||
|
capere_V = mkV "capere" "capio" "cepi" "captum"; -- missing capi
|
||||||
|
captivus_A = mkA "captivus";
|
||||||
|
captivus_N = mkN "captivus";
|
||||||
|
captus_N = mkN "captus" "captus" masculine;
|
||||||
|
carina_N = mkN "carina";
|
||||||
|
carpere_V = mkV "carpere" "carpio" "carpsi" "carptum";
|
||||||
|
carrus_N = mkN "carrus";
|
||||||
|
castellum_N = mkN "castellum";
|
||||||
|
castra_N = lin N (pluralN (mkNoun "" "" "" "" "" "" "castra" "castra" "castrorum" "castris" neuter));
|
||||||
|
casus_N = mkN "casus" "casus" masculine;
|
||||||
|
catena_N = mkN "catena";
|
||||||
|
causa_N = mkN "causa";
|
||||||
|
causa_Prep = mkPostp "causa" Gen;
|
||||||
|
cavare_V = mkV "cavare";
|
||||||
|
cavere_V = mkV "cavere";
|
||||||
|
cedere_V = mkV "cedere" "cedo" "cessi" "cessum";
|
||||||
|
celare_V = mkV "celare";
|
||||||
|
celer_A = mkA "celer" "celeris"; -- strange?
|
||||||
|
celeritas_N = mkN "celeritas" "celeritatis" feminine;
|
||||||
|
celeriter_Adv = ss "celeriter"; -- comparison? missing celerius, celerrime
|
||||||
|
census_N = mkN "census" "census" masculine;
|
||||||
|
censere_V = mkV "censere";
|
||||||
|
centuriare_V = mkV "centuriare";
|
||||||
|
centurio_N = mkN "centurio" "centurionis" masculine;
|
||||||
|
cernere_V = mkV "cernere" "cerno" "crevi" "cretum";
|
||||||
|
certare_V = mkV "certare";
|
||||||
|
certamen_N = mkN "certamen" "certaminis" neuter;
|
||||||
|
certus_A = mkA "certus";
|
||||||
|
ceterus_A = mkA "ceterus";
|
||||||
|
cibarius_A = mkA "cibarius";
|
||||||
|
cibus_N = mkN "cibus";
|
||||||
|
ciere_V = mkV "ciere" "cio" "civi" "citum";
|
||||||
|
cingere_V = mkV "cingere" "cingo" "cingi" "cinctum";
|
||||||
|
circinare_V = mkV "circinare";
|
||||||
|
circinus_N = mkN "circinus";
|
||||||
|
circiter_Adv = ss "circiter";
|
||||||
|
circiter_Prep = mkPrep "circiter" Acc;
|
||||||
|
circuitus_N = mkN "circuitus" "circuitus" masculine;
|
||||||
|
circum_Adv = ss "circum";
|
||||||
|
circum_Prep = mkPrep "circum" Acc;
|
||||||
|
circumdare_V = mkV "circumdare" "circumdo" "circumdedi" "circumdatum"; -- prefixVerb "circum" dare_V; -- circum + dare, missing circumdederant, circumdederunt
|
||||||
|
circumducere_V = mkV "circumducere" "circumduco" "circumduxi" "circumductum"; -- prefixVerb "circum" ducere_V; circum + ducere
|
||||||
|
circumiectus_A = mkA "circumiectus";
|
||||||
|
circumire_V = prefixVerb "circum" ire_V;
|
||||||
|
circummunire_V = mkV "circummunire";
|
||||||
|
circumsistere_1_V = mkV "circumsistere" "circumsisto" "circumstiti" "circumstatum" ; -- prefixVerb "circum" sistere_1_V; -- circum + sistere
|
||||||
|
-- circumsistere_2_V = prefixVerb "circum" sistere_2_V; -- circum + sistere
|
||||||
|
circumvenire_V = mkV "circumvenire" ; -- prefixVerb "circum" venire_V; -- circum + venire
|
||||||
|
cis_Prep = mkPrep "cis" Acc;
|
||||||
|
citare_V = mkV "citare";
|
||||||
|
citer_A = mkA "citer"; -- missing citeriore, citeriorem, citerioris
|
||||||
|
citra_Adv = ss "citra";
|
||||||
|
citus_A = mkA "citus";
|
||||||
|
civitas_N = mkN "civitas" "civitatis" feminine;
|
||||||
|
colere_V = mkV "colere" "colo" "colui" "cultum";
|
||||||
|
cooriri_V = mkV "cooriri" "coorior" "coortus"; -- prefixVerb "con" oriri_V; -- con + oriri, missing coorta
|
||||||
|
conferre_V = prefixVerb "con" ferre_V; -- con + ferre
|
||||||
|
---
|
||||||
|
conspicere_V = mkV "conspicere" "conspicio" "conspexi" "conspectum"; -- prefixVerb "con" specere_V; -- con + specere
|
||||||
|
conspirare_V = mkV "conspirare"; -- con + spirare?
|
||||||
|
constanter_Adv = ss "constanter"; -- comparison
|
||||||
|
constantia_N = mkN "constantia";
|
||||||
|
constare_V = mkV "constare"; -- prefixVerb "con" stare_V; -- con + stare, missing constiterant, constiterat, constiterunt, constitissent, constitisset, constitit
|
||||||
|
-- consternare_V = mkV "consternare"; -- con + sternere ?
|
||||||
|
consternere_V = mkV "consternere" "consterno" "constravi" "constratum"; -- con + sternere?
|
||||||
|
constituere_V = mkV "constituere" "constituo" "constitui" "constitutum"; -- prefixVerb "con" statuere_V; -- con + statuere
|
||||||
|
constitutum_N = mkN "constitutum";
|
||||||
|
consuere_V = mkV "consuere" "consuo" "consui" "consustum";
|
||||||
|
consuescere_V = mkV "consuescere" "consuesco" "consuevi" "consuetum"; -- con + suescere?, missing consuesse, consuessent?
|
||||||
|
consuetudo_N = mkN "consuetudo" "consuetudinis" feminine;
|
||||||
|
consul_N = mkN "consul" "consulis" masculine;
|
||||||
|
consulatus_N = mkN "consulatus" "consulatus" masculine;
|
||||||
|
consulere_V = mkV "consulere" "consulo" "consului" "consultum";
|
||||||
|
consultare_V = mkV "consultare";
|
||||||
|
consultum_N = mkN "consultum";
|
||||||
|
contemptio_N = mkN "contemptio" "contemptionis" feminine;
|
||||||
|
contemptus_A = mkA "contemptus";
|
||||||
|
contemptus_N = mkN "contemptus" "contemptus" masculine;
|
||||||
|
contentio_N = mkN "contentio" "contentionis" feminine;
|
||||||
|
contendere_V = mkV "contendere" "contendo" "contendi" "contentum";
|
||||||
|
contexere_V = mkV "contexere" "contexo" "contexui" "contextum"; -- prefixVerb "con" texere_V; -- con + texere
|
||||||
|
continens_N = mkN "continens" "continentis" feminine;
|
||||||
|
continenter_Adv = ss "continenter";
|
||||||
|
continere_V2 = mkV2 (mkV "continere"); -- prefixVerb2 "con" tenere_V2; con + tenere
|
||||||
|
contingere_V = mkV "contingere" "contingo" "contigi" "contectum"; -- con + tangere?
|
||||||
|
continuatio_N = mkN "continuatio" "continuationis" feminine;
|
||||||
|
continuus_A = mkA "continuus";
|
||||||
|
contra_Adv = ss "contra";
|
||||||
|
-- contrahere_V2 = -- prefixVerb2 "con" trahere_V2; -- con + trahere
|
||||||
|
contrarius_A = mkA "contrarius";
|
||||||
|
contumelia_N = mkN "contumelia";
|
||||||
|
convallis_N = mkN "convallis" "convallis" feminine;
|
||||||
|
convenire_V = prefixVerb "con" venire_V; -- missing convenerant, convenerat, convenerunt, convenisse, convenissent, convenisset, conventu, conventus
|
||||||
|
conversare_V = mkV "conversare";
|
||||||
|
convertere_V = prefixVerb "con" vertere_V; -- con + vertere
|
||||||
|
convincere_V = prefixVerb "con" vincere_V; -- con + vincere
|
||||||
|
convocare_V = prefixVerb "con" vocare_V; -- con + vocare
|
||||||
|
copia_N = mkN "copia";
|
||||||
|
copiosus_A = mkA "copiosus";
|
||||||
|
copula_N = mkN "copula";
|
||||||
|
cora_N = mkN "cora";
|
||||||
|
corona_N = mkN "corona";
|
||||||
|
corpus_N = mkN "corpus" "corporis" neuter;
|
||||||
|
cos_N = mkN "cos" "cotis" feminine;
|
||||||
|
cotidianus_A = mkA "cotidianus";
|
||||||
|
cotidie_Adv = ss "cotidie";
|
||||||
|
Cotta_PN = mkPN (lin N (singularN (mkN "Cotta")));
|
||||||
|
crassitudo_N = mkN "crassitudo" "crassitudinis" feminine;
|
||||||
|
Crassus_PN = mkPN (lin N (singularN (mkN "Crassus")));
|
||||||
|
cratis_N = mkN "cratis" "cratis" feminine;
|
||||||
|
creare_V = mkV "creare";
|
||||||
|
creber_A = mkA "creber";
|
||||||
|
credere_V = mkV "credere" "credo" "credidi" "creditum";
|
||||||
|
cremare_V = mkV "cremare";
|
||||||
|
crescere_V = mkV "crescere" "cresco" "crevi" "cretum";
|
||||||
|
Creta_N = mkN "Creta";
|
||||||
|
cruciare_V = mkV "cruciare";
|
||||||
|
cruciatus_N = mkN "cruciatus" "cruciatus" masculine;
|
||||||
|
crudelitas_N = mkN "crudelitas" "crudelitatis" feminine;
|
||||||
|
crudeliter_Adv = ss "crudeliter"; -- comparison?
|
||||||
|
culmen_N = mkN "culmen" "culminis" neuter;
|
||||||
|
culpa_N = mkN "culpa";
|
||||||
|
cultura_N = mkN "cultura";
|
||||||
|
cultus_N = mkN "cultus" "cultus" masculine;
|
||||||
|
cum_Prep = mkPrep "cum" Abl;
|
||||||
|
cunctari_V = mkV "cunctari";
|
||||||
|
cunctatio_N = mkN "cunctatio" "cunctationis" feminine;
|
||||||
|
cunctus_A = mkA "cunctus";
|
||||||
|
cuniculus_N = mkN "cuniculus";
|
||||||
|
cupere_V = mkV "cupere" "cupio" "cupivi" "cupitum";
|
||||||
|
cupiditas_N = mkN "cupiditas" "cupiditatis" feminine;
|
||||||
|
cupidus_A = mkA "cupidus";
|
||||||
|
cur_Adv = ss "cur";
|
||||||
|
cura_N = mkN "cura";
|
||||||
|
curare_V = mkV "curare"; -- missing curasset
|
||||||
|
currere_V = mkV "currere" "curro" "cucurri" "cursum";
|
||||||
|
currus_N = mkN "currus" "currus" masculine;
|
||||||
|
custodia_N = mkN "custodia";
|
||||||
|
damnare_V = mkV "damnare";
|
||||||
|
damnatus_A = mkA "damnatus";
|
||||||
|
dare_V = mkV "dare" "do" "dedi" "datum";
|
||||||
|
datum_N = mkN "datum";
|
||||||
|
de_Prep = mkPrep "de" Abl;
|
||||||
|
debere_VV = StructuralLat.must_VV;
|
||||||
|
ducere_V = mkV "ducere" "duco" "duxi" "ductum" ;
|
||||||
|
equitare_V = mkV "equitare";
|
||||||
|
ferre_V = fixFerre (mkVerb "ferre" "fer" "fer" "fera" "fereba" "ferre" "fere" "fer" "tul" "tul" "tuleri" "tulera" "tulisse" "tuleri" "lat");
|
||||||
|
iacere_V = mkV "iacere" "iacio" "ieci" "iactum";
|
||||||
|
ire_V = LexiconLat.go_V;
|
||||||
|
-- ne_an_Conj = mkConj (BIND ++ "ne") "an" Sg;
|
||||||
|
-- nonne_an_Conj = mkConj "nonne" "an" Sg;
|
||||||
|
-- num_an_Conj = mkConj "num" "an" Sg;
|
||||||
|
oriri_V = mkV "oriri" "orior" nonExist "ortus";
|
||||||
|
qui_IP = StructuralLat.whatSg_IP;
|
||||||
|
sistere_1_V = mkV "sistere" "sisto" "stiti" "statum";
|
||||||
|
sistere_2_V = mkV "sistere" "sisto" "steti" "statum";
|
||||||
|
specere_V = mkV "specere" "speco" "spexi" "spectum";
|
||||||
|
stare_V = LexiconLat.stand_V;
|
||||||
|
statuere_V = mkV "statuere" "statuo" "statui" "statutum";
|
||||||
|
tenere_V2 = LexiconLat.hold_V2;
|
||||||
|
texere_V = mkV "texere" "texo" "texui" "textum";
|
||||||
|
trahere_V2 = LexiconLat.pull_V2;
|
||||||
|
-- utrum_an_Conj = mkConj "utrum" "an" Sg;
|
||||||
|
venire_V = LexiconLat.come_V;
|
||||||
|
vertere_V = mkV "vertere" "verto" "verti" "versum";
|
||||||
|
vincere_V = mkV "vincere" "vinco" "vici" "victum";
|
||||||
|
vocare_V = mkV "vocare";
|
||||||
|
oper
|
||||||
|
fixFerre : Verb -> Verb =
|
||||||
|
\ferre ->
|
||||||
|
{
|
||||||
|
act = table
|
||||||
|
{
|
||||||
|
(VAct VSim (VPres VInd) Sg P2) => "fers";
|
||||||
|
(VAct VSim (VPres VInd) Sg P3) => "fert";
|
||||||
|
(VAct VSim (VPres VInd) Pl P1) => "ferimus";
|
||||||
|
(VAct VSim (VPres VInd) Pl P2) => "fertis";
|
||||||
|
rest => ferre.act ! rest
|
||||||
|
};
|
||||||
|
ger = ferre.ger;
|
||||||
|
geriv = ferre.geriv;
|
||||||
|
imp = table
|
||||||
|
{
|
||||||
|
(VImp1 Sg) => "fer";
|
||||||
|
(VImp1 Pl) => "ferte";
|
||||||
|
(VImp2 Sg P2) => "ferto";
|
||||||
|
(VImp2 Sg P3) => "ferto";
|
||||||
|
(VImp2 Pl P2) => "fertote";
|
||||||
|
rest => ferre.imp ! rest
|
||||||
|
};
|
||||||
|
inf = ferre.inf;
|
||||||
|
part = ferre.part;
|
||||||
|
pass = table
|
||||||
|
{
|
||||||
|
VPass (VPres VInd) Sg P2 => "ferris";
|
||||||
|
VPass (VPres VInd) Sg P3 => "fertur";
|
||||||
|
rest => ferre.pass ! rest
|
||||||
|
};
|
||||||
|
sup = ferre.sup;
|
||||||
|
|
||||||
|
|
||||||
|
} ;
|
||||||
|
}
|
||||||
417
src/latin/ExtraLexCaesarAbs.gf
Normal file
@@ -0,0 +1,417 @@
|
|||||||
|
abstract ExtraLexCaesarAbs = Cat ** {
|
||||||
|
fun
|
||||||
|
a_Prep : Prep;
|
||||||
|
ab_Prep : Prep;
|
||||||
|
abdere_V : V;
|
||||||
|
abducere_V : V;
|
||||||
|
abesse_V : V;
|
||||||
|
abicere_V : V;
|
||||||
|
abscisus_A : A;
|
||||||
|
absens_A : A;
|
||||||
|
absimilis_A : A;
|
||||||
|
abstinere_V2 : V2;
|
||||||
|
abstrahere_V2 : V2;
|
||||||
|
ac_Conj : Conj ;
|
||||||
|
accedere_V : V;
|
||||||
|
accendere_V : V;
|
||||||
|
accidere_V : V;
|
||||||
|
accipere_V : V;
|
||||||
|
acclivis_A : A;
|
||||||
|
acclivitas_N : N;
|
||||||
|
accommodare_V : V;
|
||||||
|
accommodatus_A : A;
|
||||||
|
accurrere_V : V;
|
||||||
|
accusare_V : V;
|
||||||
|
acervus_N : N;
|
||||||
|
acies_N : N;
|
||||||
|
acriter_Adv : Adv;
|
||||||
|
ad_Prep : Prep;
|
||||||
|
adaequare_V : V;
|
||||||
|
adamare_V2 : V2;
|
||||||
|
adducere_V : V;
|
||||||
|
adequitare_V : V;
|
||||||
|
adesse_V : V;
|
||||||
|
adferre_V : V;
|
||||||
|
adfectus_A : A;
|
||||||
|
adfectus_N : N;
|
||||||
|
adficere_V : V;
|
||||||
|
adfigere_V : V;
|
||||||
|
adfinitas_N : N;
|
||||||
|
adflictare_V : V;
|
||||||
|
adflictus_A : A;
|
||||||
|
adgredi_V : V;
|
||||||
|
adgregare_V : V;
|
||||||
|
adhibere_V : V;
|
||||||
|
adhuc_Adv : Adv;
|
||||||
|
Adiatunnus_PN : PN;
|
||||||
|
adicere_V : V;
|
||||||
|
adigere_V : V;
|
||||||
|
adire_V : V;
|
||||||
|
aditus_N : N;
|
||||||
|
adiungere_V : V;
|
||||||
|
adiuvare_V : V;
|
||||||
|
administrare_V : V;
|
||||||
|
admirari_V : V;
|
||||||
|
admittere_V : V;
|
||||||
|
admodum_Adv : Adv;
|
||||||
|
adoriri_V : V;
|
||||||
|
adpellere_V : V;
|
||||||
|
adpetere_V : V;
|
||||||
|
adpropinquare_V : V;
|
||||||
|
adpulsare_V : V;
|
||||||
|
adsciscere_V : V;
|
||||||
|
adsuere_V : V;
|
||||||
|
adsuefacere_V : V;
|
||||||
|
adulescentia_N : N;
|
||||||
|
adulescentulus_N : N;
|
||||||
|
advenire_V : V;
|
||||||
|
adventus_N : N;
|
||||||
|
advertere_V : V;
|
||||||
|
aedificare_V : V;
|
||||||
|
aedificium_N : N;
|
||||||
|
aeger_A : A;
|
||||||
|
aegre_Adv : Adv;
|
||||||
|
Aemilius_PN : PN;
|
||||||
|
aequaliter_Adv : Adv;
|
||||||
|
aequare_V : V;
|
||||||
|
aequinoctium_N : N;
|
||||||
|
aequitas_N : N;
|
||||||
|
aequum_N : N;
|
||||||
|
aequus_A : A;
|
||||||
|
aerarius_A : A;
|
||||||
|
aerarius_N : N;
|
||||||
|
aer_f_N : N;
|
||||||
|
aer_m_N : N;
|
||||||
|
aes_N : N;
|
||||||
|
aestas_N : N;
|
||||||
|
aestimare_V : V;
|
||||||
|
aestuarium_N : N;
|
||||||
|
aestus_N : N;
|
||||||
|
aetas_N : N;
|
||||||
|
-- afferre_V : V;
|
||||||
|
ager_N : N;
|
||||||
|
agere_V : V;
|
||||||
|
agger_N : N;
|
||||||
|
agmen_N : N;
|
||||||
|
alacer_A : A;
|
||||||
|
alacritas_N : N;
|
||||||
|
alarius_A : A;
|
||||||
|
-- alduas_??? : ???;
|
||||||
|
alere_1_V : V;
|
||||||
|
alere_2_V : V;
|
||||||
|
alienus_A : A;
|
||||||
|
alii_Conj : Conj;
|
||||||
|
aliquam_Adv : Adv;
|
||||||
|
aliquanto_Adv : Adv;
|
||||||
|
-- aliqui_Pron : Pron;
|
||||||
|
aliquis_Pron : Pron;
|
||||||
|
aliter_Adv : Adv;
|
||||||
|
alium_N : N;
|
||||||
|
alius_A : A;
|
||||||
|
Allobroges_PN : PN;
|
||||||
|
Alpes_PN : PN;
|
||||||
|
alter_A : A;
|
||||||
|
alterare_V : V;
|
||||||
|
altitudo_N : N;
|
||||||
|
altus_A : A;
|
||||||
|
aluta_N : N;
|
||||||
|
Ambarri_PN : PN;
|
||||||
|
Ambiani_PN : PN;
|
||||||
|
Ambiliati_PN : PN;
|
||||||
|
Ambivariti_PN : PN;
|
||||||
|
amentia_N : N;
|
||||||
|
amicitia_N : N;
|
||||||
|
amicus_A : A;
|
||||||
|
amittere_V : V;
|
||||||
|
amplificare_V : V;
|
||||||
|
amplitudo_N : N;
|
||||||
|
amplus_A : A;
|
||||||
|
an_Conj : Conj;
|
||||||
|
an_an_Conj : Conj;
|
||||||
|
anceps_A : A;
|
||||||
|
ancora_N : N;
|
||||||
|
Andebrogius_PN : PN;
|
||||||
|
Andes_PN : PN;
|
||||||
|
angustiare_V : V;
|
||||||
|
angustia_N : N;
|
||||||
|
animadvertere_V : V;
|
||||||
|
animus_N : N;
|
||||||
|
annuus_A : A;
|
||||||
|
ante_Adv : Adv;
|
||||||
|
ante_Prep : Prep;
|
||||||
|
antea_Adv : Adv;
|
||||||
|
antecedere_V : V;
|
||||||
|
antemna_N : N;
|
||||||
|
anteponere_V : V;
|
||||||
|
antiquitus_Adv : Adv;
|
||||||
|
antiquus_A : A;
|
||||||
|
aperire_V : V;
|
||||||
|
apertare_V : V;
|
||||||
|
appellare_V : V;
|
||||||
|
Aprilis_PN : PN;
|
||||||
|
aptus_A : A;
|
||||||
|
apud_Prep : Prep;
|
||||||
|
aquatio_N : N;
|
||||||
|
aquila_N : N;
|
||||||
|
Aquileia_PN : PN;
|
||||||
|
Aquitanus_N : N;
|
||||||
|
Aquitania_PN : PN;
|
||||||
|
Arar_PN : PN;
|
||||||
|
arbitrari_V : V;
|
||||||
|
arbitrium_N : N;
|
||||||
|
arcessere_V : V;
|
||||||
|
arduus_A : A;
|
||||||
|
aries_N : N;
|
||||||
|
Ariovistus_PN : PN;
|
||||||
|
armatus_A : A;
|
||||||
|
arma_N : N;
|
||||||
|
armamentum_N : N;
|
||||||
|
armare_V : V;
|
||||||
|
armatura_N : N;
|
||||||
|
armus_N : N;
|
||||||
|
arroganter_Adv : Adv;
|
||||||
|
arrogantia_N : N;
|
||||||
|
artus_A : A;
|
||||||
|
Arverni_PN : PN;
|
||||||
|
arx_N : N;
|
||||||
|
ascendere_V : V;
|
||||||
|
at_Conj : Conj;
|
||||||
|
atque_Conj : Conj ;
|
||||||
|
Atrebates_PN : PN;
|
||||||
|
attingere_V : V;
|
||||||
|
attribuere_V : V;
|
||||||
|
Atuatuci_PN : PN;
|
||||||
|
auctor_N : N;
|
||||||
|
auctorare_V : V;
|
||||||
|
auctoritas_N : N;
|
||||||
|
auctus_A : A;
|
||||||
|
audacter_Adv : Adv;
|
||||||
|
audax_A : A;
|
||||||
|
audere_V : V;
|
||||||
|
audire_V : V;
|
||||||
|
auditio_N : N;
|
||||||
|
augere_V : V;
|
||||||
|
Aulerci_PN : PN;
|
||||||
|
Auriga_PN : PN;
|
||||||
|
Aurunculeius_PN : PN;
|
||||||
|
Ausci_PN : PN;
|
||||||
|
aut_Conj : Conj;
|
||||||
|
autem_Conj : Conj;
|
||||||
|
auxiliare_V : V;
|
||||||
|
auxilium_N : N;
|
||||||
|
avaritia_N : N;
|
||||||
|
avertere_V : V;
|
||||||
|
avus_N : N;
|
||||||
|
Axona_PN : PN;
|
||||||
|
baculus_N : N;
|
||||||
|
Baleares_PN : PN;
|
||||||
|
barbarus_A : A;
|
||||||
|
barbarus_N : N;
|
||||||
|
batavus_A : A;
|
||||||
|
Belgae_PN : PN;
|
||||||
|
bellare_V : V;
|
||||||
|
bellicosus_A : A;
|
||||||
|
Bellovaci_PN : PN;
|
||||||
|
bellum_N : N;
|
||||||
|
bellus_A : A;
|
||||||
|
bene_Adv : Adv;
|
||||||
|
beneficium_N : N;
|
||||||
|
Bibrax_PN : PN;
|
||||||
|
biduum_N : N;
|
||||||
|
biduus_A : A;
|
||||||
|
biennis_A : A;
|
||||||
|
biennium_N : N;
|
||||||
|
binus_A : A;
|
||||||
|
bipedalis_A : A;
|
||||||
|
bipertitus_A :A;
|
||||||
|
bis_Adv : Adv;
|
||||||
|
Biturix_PN : PN;
|
||||||
|
-- boc ???
|
||||||
|
Boduognatus_PN : PN;
|
||||||
|
Boi_PN : PN;
|
||||||
|
bonitas_N : N;
|
||||||
|
bracchium_N : N;
|
||||||
|
Bratuspantium_PN : PN;
|
||||||
|
brevi_Adv : Adv;
|
||||||
|
breviare_V : V;
|
||||||
|
brevis_A : A;
|
||||||
|
brevitas_N : N;
|
||||||
|
Britannia_PN : PN;
|
||||||
|
britannus_A : A;
|
||||||
|
Brutus_PN : PN;
|
||||||
|
cadaver_N : N;
|
||||||
|
cadere_V : V;
|
||||||
|
Caesar_PN : PN;
|
||||||
|
caespes_N : N;
|
||||||
|
calamitas_N : N;
|
||||||
|
calare_V : V;
|
||||||
|
calo_N : N;
|
||||||
|
campus_N : N;
|
||||||
|
capere_V : V;
|
||||||
|
captivus_A : A;
|
||||||
|
captivus_N : N;
|
||||||
|
captus_N : N;
|
||||||
|
carina_N : N;
|
||||||
|
carpere_V : V;
|
||||||
|
carrus_N : N;
|
||||||
|
castellum_N : N;
|
||||||
|
castra_N : N;
|
||||||
|
casus_N : N;
|
||||||
|
catena_N : N;
|
||||||
|
causa_N : N;
|
||||||
|
causa_Prep : Prep; -- Postposition
|
||||||
|
cavare_V : V;
|
||||||
|
cavere_V : V;
|
||||||
|
cedere_V : V;
|
||||||
|
celare_V : V;
|
||||||
|
celer_A : A;
|
||||||
|
celeritas_N : N;
|
||||||
|
celeriter_Adv : Adv;
|
||||||
|
censere_V : V;
|
||||||
|
census_N : N;
|
||||||
|
centuriare_V : V;
|
||||||
|
centurio_N : N;
|
||||||
|
cernere_V : V;
|
||||||
|
certare_V : V;
|
||||||
|
certamen_N : N;
|
||||||
|
certus_A : A;
|
||||||
|
ceterus_A : A;
|
||||||
|
cibarius_A : A;
|
||||||
|
cibus_N : N;
|
||||||
|
ciere_V : V;
|
||||||
|
cingere_V : V;
|
||||||
|
circinare_V : V;
|
||||||
|
circinus_N : N;
|
||||||
|
circiter_Adv : Adv;
|
||||||
|
circiter_Prep : Prep;
|
||||||
|
circuitus_N : N;
|
||||||
|
circum_Adv : Adv;
|
||||||
|
circum_Prep : Prep;
|
||||||
|
circumdare_V : V;
|
||||||
|
circumducere_V : V;
|
||||||
|
circumiectus_A : A;
|
||||||
|
circumire_V : V;
|
||||||
|
circummunire_V : V;
|
||||||
|
circumsistere_1_V : V;
|
||||||
|
-- circumsistere_2_V : V;
|
||||||
|
circumvenire_V : V;
|
||||||
|
cis_Prep : Prep;
|
||||||
|
citare_V : V;
|
||||||
|
citer_A : A;
|
||||||
|
citra_Adv : Adv;
|
||||||
|
citus_A : A;
|
||||||
|
civitas_N : N;
|
||||||
|
colere_V : V;
|
||||||
|
conferre_V : V;
|
||||||
|
---
|
||||||
|
conspicere_V : V;
|
||||||
|
conspirare_V : V;
|
||||||
|
constanter_Adv : Adv;
|
||||||
|
constantia_N : N;
|
||||||
|
constare_V : V;
|
||||||
|
-- consternare_V : V;
|
||||||
|
consternere_V : V;
|
||||||
|
constituere_V : V;
|
||||||
|
constitutum_N : N;
|
||||||
|
consuere_V : V;
|
||||||
|
consuescere_V : V;
|
||||||
|
consuetudo_N : N;
|
||||||
|
consul_N : N;
|
||||||
|
consulatus_N : N;
|
||||||
|
consulere_V : V;
|
||||||
|
consultare_V : V;
|
||||||
|
consultum_N : N;
|
||||||
|
contemptio_N : N;
|
||||||
|
contemptus_A : A;
|
||||||
|
contemptus_N : N;
|
||||||
|
contendere_V : V;
|
||||||
|
contentio_N : N;
|
||||||
|
contexere_V : V;
|
||||||
|
continens_N : N;
|
||||||
|
continenter_Adv : Adv;
|
||||||
|
continere_V2 : V2;
|
||||||
|
contingere_V : V;
|
||||||
|
continuatio_N : N;
|
||||||
|
continuus_A : A;
|
||||||
|
contra_Adv : Adv;
|
||||||
|
contrahere_V2 : V2;
|
||||||
|
contrarius_A : A;
|
||||||
|
contumelia_N : N;
|
||||||
|
convallis_N : N;
|
||||||
|
convenire_V : V;
|
||||||
|
conversare_V : V;
|
||||||
|
convertere_V : V;
|
||||||
|
convincere_V : V;
|
||||||
|
convocare_V : V;
|
||||||
|
cooriri_V : V;
|
||||||
|
copia_N : N;
|
||||||
|
copiosus_A : A;
|
||||||
|
copula_N : N;
|
||||||
|
cora_N : N;
|
||||||
|
corona_N : N;
|
||||||
|
corpus_N : N;
|
||||||
|
cos_N : N;
|
||||||
|
cotidianus_A : A;
|
||||||
|
cotidie_Adv : Adv;
|
||||||
|
Cotta_PN : PN;
|
||||||
|
crassitudo_N : N;
|
||||||
|
Crassus_PN : PN;
|
||||||
|
cratis_N : N;
|
||||||
|
creare_V : V;
|
||||||
|
creber_A : A;
|
||||||
|
credere_V : V;
|
||||||
|
cremare_V : V;
|
||||||
|
crescere_V : V;
|
||||||
|
Creta_N : N;
|
||||||
|
cruciare_V : V;
|
||||||
|
cruciatus_N : N;
|
||||||
|
crudelitas_N : N;
|
||||||
|
crudeliter_Adv : Adv;
|
||||||
|
culmen_N : N;
|
||||||
|
culpa_N : N;
|
||||||
|
cultura_N : N;
|
||||||
|
cultus_N : N;
|
||||||
|
cum_Prep : Prep;
|
||||||
|
cunctari_V : V;
|
||||||
|
cunctatio_N : N;
|
||||||
|
cunctus_A : A;
|
||||||
|
cuniculus_N : N;
|
||||||
|
cupere_V : V;
|
||||||
|
cupiditas_N : N;
|
||||||
|
cupidus_A : A;
|
||||||
|
cur_Adv : Adv;
|
||||||
|
cura_N : N;
|
||||||
|
curare_V : V;
|
||||||
|
currere_V : V;
|
||||||
|
currus_N : N;
|
||||||
|
custodia_N : N;
|
||||||
|
damnare_V : V;
|
||||||
|
damnatus_A : A;
|
||||||
|
dare_V : V;
|
||||||
|
datum_N : N;
|
||||||
|
de_Prep : Prep;
|
||||||
|
debere_VV : VV;
|
||||||
|
ducere_V : V;
|
||||||
|
equitare_V : V;
|
||||||
|
ferre_V : V;
|
||||||
|
iacere_V : V;
|
||||||
|
ire_V : V;
|
||||||
|
ne_an_Conj : Conj;
|
||||||
|
nonne_an_Conj : Conj;
|
||||||
|
num_an_Conj : Conj;
|
||||||
|
oriri_V : V;
|
||||||
|
qui_IP : IP;
|
||||||
|
sistere_1_V : V;
|
||||||
|
sistere_2_V : V;
|
||||||
|
specere_V : V;
|
||||||
|
stare_V : V;
|
||||||
|
statuere_V : V;
|
||||||
|
tenere_V2 : V2;
|
||||||
|
texere_V : V;
|
||||||
|
trahere_V2 : V2;
|
||||||
|
utrum_an_Conj : Conj;
|
||||||
|
venire_V : V;
|
||||||
|
vertere_V : V;
|
||||||
|
vincere_V : V;
|
||||||
|
vocare_V : V;
|
||||||
|
}
|
||||||
28
src/latin/ExtraLexiconLat.gf
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
concrete ExtraLexiconLat of ExtraLexiconLatAbs = CatLat ** open ParadigmsLat in {
|
||||||
|
lin
|
||||||
|
friend_Fem_N = mkN "amica" ; -- -i/-ae m./f. (Langenscheidts)
|
||||||
|
baby_Fem_N = mkN "infans" "infantis" feminine ; -- Ranta; -antis m./f. (Langenscheidts)
|
||||||
|
blue_Var_A = mkA "caeruleus" ; -- 3 (Langenscheidts)
|
||||||
|
boss_Fem_N = mkN "dux" "ducis" feminine ; -- ducis m./f. (Langenscheidts)
|
||||||
|
bread_Neutr_N = mkN "pane" "panis" neuter ; -- -is m./n. (Langenscheidts)
|
||||||
|
cat_Var_N = mkN "felis" "felis" feminine ; -- -is f. (Langenscheidts)
|
||||||
|
cousin_Fem_N = mkN "consobrina" ; -- -i/-ae m./f. (Langenscheidts)
|
||||||
|
cow_Fem_N = mkN "bos" "bovis" feminine ; -- bovis (gen. pl. boum, dat./abl. pl. bobus/bubus) m./f. (Langenscheidts)
|
||||||
|
dog_Fem_N = mkN "canis" "canis" feminine ; -- -is m./f. (Langenscheidts)
|
||||||
|
enemy_Fem_N = mkN "hostis" "hostis" feminine ; -- -is m./f. (Langenscheidts)
|
||||||
|
policeman_Fem_N = mkN "custos" "custodis" feminine ; -- -odis m./f. (Langenscheidts)
|
||||||
|
priest_Fem_N = mkN "sacerdos" "sacerdotis" feminine ; -- -dotis m./f. (Langenscheidts)
|
||||||
|
snake_Fem_N = mkN "serpens" "serpentis" feminine ; -- -entis m./f. (Langenscheidts)
|
||||||
|
student_Fem_N = mkN "discipula" ; -- -i/-ae m./f. (Langenscheidts)
|
||||||
|
switch8on_Var_V2 = mkV2 (mkV "exstinguere" ) ; -- -ingo, -inxi, -inctum 3 (Langenscheidts)
|
||||||
|
bark_Fem_N = mkN "cortex" "corticis" feminine ; -- -icis m./(f.) (Langenscheidts)
|
||||||
|
blood_Var_N = mkN "sangis" "sanginis" masculine ; -- -inis m. (Langenscheidts)
|
||||||
|
day_Fem_N = mkN "dies" "diei" feminine ; -- -ei m./f. (Langenscheidts)
|
||||||
|
horn_Var_N = mkN "cornu" "cornus" neuter ; -- -us n. (Langenscheidts)
|
||||||
|
liver_Var_N = mkN "iocur" "iocineris" neuter ; -- iecoris/iocineris n. (Langenscheidts)
|
||||||
|
louse_Fem_N = mkN "pedis" "pedis" feminine ; -- -is m./f. (Langenscheidts)
|
||||||
|
nose_Neutr_N = mkN "nasum" ; -- -i m./n. (Langenscheidts)
|
||||||
|
rope_Fem_N = mkN "funis" "funis" feminine ; -- -is m.(/f.) (Langenscheidts)
|
||||||
|
salt_Neutr_N = mkN "sal" "salis" neuter ; -- salis m./n. (Langenscheidts)
|
||||||
|
stick_Neutr_N = mkN "baculum" ; -- -i n./m.
|
||||||
|
};
|
||||||
29
src/latin/ExtraLexiconLatAbs.gf
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
abstract ExtraLexiconLatAbs = Cat, Lexicon, ExtraLexCaesarAbs ** {
|
||||||
|
fun
|
||||||
|
-- Ambigous entries from main lexicon
|
||||||
|
friend_Fem_N : N ;
|
||||||
|
baby_Fem_N : N ;
|
||||||
|
blue_Var_A : A ;
|
||||||
|
boss_Fem_N : N ;
|
||||||
|
bread_Neutr_N : N ;
|
||||||
|
cat_Var_N : N ;
|
||||||
|
cousin_Fem_N : N ;
|
||||||
|
cow_Fem_N : N ;
|
||||||
|
dog_Fem_N : N ;
|
||||||
|
enemy_Fem_N : N ;
|
||||||
|
policeman_Fem_N : N ;
|
||||||
|
priest_Fem_N : N ;
|
||||||
|
snake_Fem_N : N ;
|
||||||
|
student_Fem_N : N ;
|
||||||
|
switch8on_Var_V2 : V2 ;
|
||||||
|
bark_Fem_N : N ;
|
||||||
|
blood_Var_N : N ;
|
||||||
|
day_Fem_N : N ;
|
||||||
|
horn_Var_N : N ;
|
||||||
|
liver_Var_N : N ;
|
||||||
|
louse_Fem_N : N ;
|
||||||
|
nose_Neutr_N : N ;
|
||||||
|
rope_Fem_N : N ;
|
||||||
|
salt_Neutr_N : N ;
|
||||||
|
stick_Neutr_N : N ;
|
||||||
|
};
|
||||||
@@ -1 +1,155 @@
|
|||||||
-- temporary definitions to enable the compilation of RGL API
|
-- temporary definitions to enable the compilation of RGL API
|
||||||
|
oper AdNum : AdN -> Card -> Card = notYet "AdNum" ;
|
||||||
|
oper AdvCN : CN -> Adv -> CN = notYet "AdvCN" ;
|
||||||
|
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
||||||
|
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
||||||
|
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
||||||
|
oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ;
|
||||||
|
oper BaseS : S -> S -> ListS = notYet "BaseS" ;
|
||||||
|
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
|
||||||
|
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
|
||||||
|
oper CompIP : IP -> IComp = notYet "CompIP" ;
|
||||||
|
oper ComplN2 : N2 -> NP -> CN = notYet "ComplN2" ;
|
||||||
|
oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
|
||||||
|
oper ConjRS : Conj -> ListRS -> RS = notYet "ConjRS" ;
|
||||||
|
oper ConjS : Conj -> ListS -> S = notYet "ConjS" ;
|
||||||
|
oper ConsRS : RS -> ListRS -> ListRS = notYet "ConsRS" ;
|
||||||
|
oper ConsS : S -> ListS -> ListS = notYet "ConsS" ;
|
||||||
|
oper DetQuantOrd : Quant -> Num -> Ord -> Det = notYet "DetQuantOrd" ;
|
||||||
|
oper EmbedQS : QS -> SC = notYet "EmbedQS" ;
|
||||||
|
oper EmbedS : S -> SC = notYet "EmbedS" ;
|
||||||
|
oper EmbedVP : VP -> SC = notYet "EmbedVP" ;
|
||||||
|
oper ExistIP : IP -> QCl = notYet "ExistIP" ;
|
||||||
|
oper ExistNP : NP -> Cl = notYet "ExistNP" ;
|
||||||
|
oper FunRP : Prep -> NP -> RP -> RP = notYet "FunRP" ;
|
||||||
|
oper GenericCl : VP -> Cl = notYet "GenericCl" ;
|
||||||
|
oper IdetCN : IDet -> CN -> IP = notYet "IdetCN" ;
|
||||||
|
oper IdetIP : IDet -> IP = notYet "IdetIP" ;
|
||||||
|
oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
|
||||||
|
oper IdRP : RP = notYet "IdRP" ;
|
||||||
|
oper ImpersCl : VP -> Cl = notYet "ImpersCl" ;
|
||||||
|
oper ImpPl1 : VP -> Utt = notYet "ImpPl1" ;
|
||||||
|
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
|
||||||
|
oper NumDigits : Digits -> Card = notYet "NumDigits" ;
|
||||||
|
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
|
||||||
|
oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
|
||||||
|
oper PossPron : Pron -> Quant = notYet "PossPron" ;
|
||||||
|
oper pot1 : Digit -> Sub100 = notYet "pot1" ;
|
||||||
|
oper pot110 : Sub100 = notYet "pot110" ;
|
||||||
|
oper pot111 : Sub100 = notYet "pot111" ;
|
||||||
|
oper pot1plus : Digit -> Sub10 -> Sub100 = notYet "pot1plus" ;
|
||||||
|
oper pot1to19 : Digit -> Sub100 = notYet "pot1to19" ;
|
||||||
|
oper pot2 : Sub10 -> Sub1000 = notYet "pot2" ;
|
||||||
|
oper pot2plus : Sub10 -> Sub100 -> Sub1000 = notYet "pot2plus" ;
|
||||||
|
oper pot3 : Sub1000 -> Sub1000000 = notYet "pot3" ;
|
||||||
|
oper pot3plus : Sub1000 -> Sub1000 -> Sub1000000 = notYet "pot3plus" ;
|
||||||
|
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
|
||||||
|
oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
|
||||||
|
oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
|
||||||
|
oper ProgrVP : VP -> VP = notYet "ProgrVP" ;
|
||||||
|
oper QuestCl : Cl -> QCl = notYet "QuestCl" ;
|
||||||
|
oper QuestIAdv : IAdv -> Cl -> QCl = notYet "QuestIAdv" ;
|
||||||
|
oper QuestIComp : IComp -> NP -> QCl = notYet "QuestIComp" ;
|
||||||
|
oper QuestSlash : IP -> ClSlash -> QCl = notYet "QuestSlash" ;
|
||||||
|
oper QuestVP : IP -> VP -> QCl = notYet "QuestVP" ;
|
||||||
|
oper ReflVP : VPSlash -> VP = notYet "ReflVP" ;
|
||||||
|
oper RelCl : Cl -> RCl = notYet "RelCl" ;
|
||||||
|
oper RelCN : CN -> RS -> CN = notYet "RelCN" ;
|
||||||
|
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
|
||||||
|
oper RelVP : RP -> VP -> RCl = notYet "RelVP" ;
|
||||||
|
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
|
||||||
|
oper SlashV2S : V2S -> S -> VPSlash = notYet "SlashV2S" ;
|
||||||
|
oper SlashV2V : V2V -> VP -> VPSlash = notYet "SlashV2V" ;
|
||||||
|
oper SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash = notYet "SlashV2VNP" ;
|
||||||
|
oper SlashVS : NP -> VS -> SSlash -> ClSlash = notYet "SlashVS" ;
|
||||||
|
oper SlashVV : VV -> VPSlash -> VPSlash = notYet "SlashVV" ;
|
||||||
|
oper Use2N3 : N3 -> N2 = notYet "Use2N3" ;
|
||||||
|
oper UseQCl : Temp -> Pol -> QCl -> QS = notYet "UseQCl" ;
|
||||||
|
oper UseRCl : Temp -> Pol -> RCl -> RS = notYet "UseRCl" ;
|
||||||
|
oper UseSlash : Temp -> Pol -> ClSlash -> SSlash = notYet "UseSlash" ;
|
||||||
|
oper AddAdvQVP : QVP -> IAdv -> QVP = notYet "AddAdvQVP" ;
|
||||||
|
oper AdjDAP : DAP -> AP -> DAP = notYet "AdjDAP" ;
|
||||||
|
oper AdNum : AdN -> Card -> Card = notYet "AdNum" ;
|
||||||
|
oper AdvCN : CN -> Adv -> CN = notYet "AdvCN" ;
|
||||||
|
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
||||||
|
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
||||||
|
oper AdvQVP : VP -> IAdv -> QVP = notYet "AdvQVP" ;
|
||||||
|
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
||||||
|
oper BaseAdV : AdV -> AdV -> ListAdV = notYet "BaseAdV" ;
|
||||||
|
oper BaseCN : CN -> CN -> ListCN = notYet "BaseCN" ;
|
||||||
|
oper BaseDAP : DAP -> DAP -> ListDAP = notYet "BaseDAP" ;
|
||||||
|
oper BaseIAdv : IAdv -> IAdv -> ListIAdv = notYet "BaseIAdv" ;
|
||||||
|
oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ;
|
||||||
|
oper BaseS : S -> S -> ListS = notYet "BaseS" ;
|
||||||
|
oper CompIP : IP -> IComp = notYet "CompIP" ;
|
||||||
|
oper ComplN2 : N2 -> NP -> CN = notYet "ComplN2" ;
|
||||||
|
oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
|
||||||
|
oper ComplSlashIP : VPSlash -> IP -> QVP = notYet "ComplSlashIP" ;
|
||||||
|
oper ConjAdV : Conj -> ListAdV -> AdV = notYet "ConjAdV" ;
|
||||||
|
oper ConjCN : Conj -> ListCN -> CN = notYet "ConjCN" ;
|
||||||
|
oper ConjDet : Conj -> ListDAP -> Det = notYet "ConjDet" ;
|
||||||
|
oper ConjIAdv : Conj -> ListIAdv -> IAdv = notYet "ConjIAdv" ;
|
||||||
|
oper ConjRS : Conj -> ListRS -> RS = notYet "ConjRS" ;
|
||||||
|
oper ConjS : Conj -> ListS -> S = notYet "ConjS" ;
|
||||||
|
oper ConsAdV : AdV -> ListAdV -> ListAdV = notYet "ConsAdV" ;
|
||||||
|
oper ConsCN : CN -> ListCN -> ListCN = notYet "ConsCN" ;
|
||||||
|
oper ConsDAP : DAP -> ListDAP -> ListDAP = notYet "ConsDAP" ;
|
||||||
|
oper ConsIAdv : IAdv -> ListIAdv -> ListIAdv = notYet "ConsIAdv" ;
|
||||||
|
oper ConsRS : RS -> ListRS -> ListRS = notYet "ConsRS" ;
|
||||||
|
oper ConsS : S -> ListS -> ListS = notYet "ConsS" ;
|
||||||
|
oper CountNP : Det -> NP -> NP = notYet "CountNP" ;
|
||||||
|
oper DetDAP : Det -> DAP = notYet "DetDAP" ;
|
||||||
|
oper DetQuantOrd : Quant -> Num -> Ord -> Det = notYet "DetQuantOrd" ;
|
||||||
|
oper EmbedQS : QS -> SC = notYet "EmbedQS" ;
|
||||||
|
oper EmbedS : S -> SC = notYet "EmbedS" ;
|
||||||
|
oper EmbedVP : VP -> SC = notYet "EmbedVP" ;
|
||||||
|
oper ExtAdvS : Adv -> S -> S = notYet "ExtAdvS" ;
|
||||||
|
oper ExtAdvVP : VP -> Adv -> VP = notYet "ExtAdvVP" ;
|
||||||
|
oper IdetCN : IDet -> CN -> IP = notYet "IdetCN" ;
|
||||||
|
oper IdetIP : IDet -> IP = notYet "IdetIP" ;
|
||||||
|
oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
|
||||||
|
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
|
||||||
|
oper NumDigits : Digits -> Card = notYet "NumDigits" ;
|
||||||
|
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
|
||||||
|
oper OrdNumeralSuperl : Numeral -> A -> Ord = notYet "OrdNumeralSuperl" ;
|
||||||
|
oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
|
||||||
|
oper PartNP : CN -> NP -> CN = notYet "PartNP" ;
|
||||||
|
oper PossNP : CN -> NP -> CN = notYet "PossNP" ;
|
||||||
|
oper PossPron : Pron -> Quant = notYet "PossPron" ;
|
||||||
|
oper pot1 : Digit -> Sub100 = notYet "pot1" ;
|
||||||
|
oper pot110 : Sub100 = notYet "pot110" ;
|
||||||
|
oper pot111 : Sub100 = notYet "pot111" ;
|
||||||
|
oper pot1plus : Digit -> Sub10 -> Sub100 = notYet "pot1plus" ;
|
||||||
|
oper pot1to19 : Digit -> Sub100 = notYet "pot1to19" ;
|
||||||
|
oper pot2 : Sub10 -> Sub1000 = notYet "pot2" ;
|
||||||
|
oper pot2plus : Sub10 -> Sub100 -> Sub1000 = notYet "pot2plus" ;
|
||||||
|
oper pot3 : Sub1000 -> Sub1000000 = notYet "pot3" ;
|
||||||
|
oper pot3plus : Sub1000 -> Sub1000 -> Sub1000000 = notYet "pot3plus" ;
|
||||||
|
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
|
||||||
|
oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
|
||||||
|
oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
|
||||||
|
oper QuestCl : Cl -> QCl = notYet "QuestCl" ;
|
||||||
|
oper QuestIAdv : IAdv -> Cl -> QCl = notYet "QuestIAdv" ;
|
||||||
|
oper QuestIComp : IComp -> NP -> QCl = notYet "QuestIComp" ;
|
||||||
|
oper QuestQVP : IP -> QVP -> QCl = notYet "QuestQVP" ;
|
||||||
|
oper QuestSlash : IP -> ClSlash -> QCl = notYet "QuestSlash" ;
|
||||||
|
oper QuestVP : IP -> VP -> QCl = notYet "QuestVP" ;
|
||||||
|
oper ReflVP : VPSlash -> VP = notYet "ReflVP" ;
|
||||||
|
oper RelCN : CN -> RS -> CN = notYet "RelCN" ;
|
||||||
|
oper RelS : S -> RS -> S = notYet "RelS" ;
|
||||||
|
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
|
||||||
|
oper SlashV2S : V2S -> S -> VPSlash = notYet "SlashV2S" ;
|
||||||
|
oper SlashV2V : V2V -> VP -> VPSlash = notYet "SlashV2V" ;
|
||||||
|
oper SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash = notYet "SlashV2VNP" ;
|
||||||
|
oper SlashVS : NP -> VS -> SSlash -> ClSlash = notYet "SlashVS" ;
|
||||||
|
oper SlashVV : VV -> VPSlash -> VPSlash = notYet "SlashVV" ;
|
||||||
|
oper SSubjS : S -> Subj -> S -> S = notYet "SSubjS" ;
|
||||||
|
oper Use2N3 : N3 -> N2 = notYet "Use2N3" ;
|
||||||
|
oper Use3N3 : N3 -> N2 = notYet "Use3N3" ;
|
||||||
|
oper UseQCl : Temp -> Pol -> QCl -> QS = notYet "UseQCl" ;
|
||||||
|
oper UseRCl : Temp -> Pol -> RCl -> RS = notYet "UseRCl" ;
|
||||||
|
oper UseSlash : Temp -> Pol -> ClSlash -> SSlash = notYet "UseSlash" ;
|
||||||
|
oper VPSlashPrep : VP -> Prep -> VPSlash = notYet "VPSlashPrep" ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
5
src/latin/MissingTranslateLat.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
resource MissingTranslateLat = open GrammarLat, Prelude in {
|
||||||
|
|
||||||
|
-- temporary definitions to enable the compilation of RGL Translate
|
||||||
|
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ lin
|
|||||||
-- a = agrgP3 Sg cn.g
|
-- a = agrgP3 Sg cn.g
|
||||||
-- } ;
|
-- } ;
|
||||||
--
|
--
|
||||||
|
|
||||||
SymbS sy = { s = \\_ => sy.s ; neg = \\_ => "" ; o = \\_ => "" ; p = PPos ; sadv = ss "" ; t = TPres ; v = \\_ => "" } ;
|
SymbS sy = { s = \\_ => sy.s ; neg = \\_ => "" ; o = \\_ => "" ; p = PPos ; sadv = ss "" ; t = TPres ; v = \\_ => "" } ;
|
||||||
--
|
--
|
||||||
-- SymbNum sy = {s = sy.s ; n = Pl ; hasCard = True} ;
|
-- SymbNum sy = {s = sy.s ; n = Pl ; hasCard = True} ;
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
Aarne Ranta 2017-01-19
|
|
||||||
|
|
||||||
A script for building a Latin dictionary from William Whitaker's Words
|
|
||||||
|
|
||||||
Source: http://archives.nd.edu/whitaker/dictpage.zip
|
|
||||||
|
|
||||||
See also: https://en.wikipedia.org/wiki/William_Whitaker's_Words
|
|
||||||
|
|
||||||
License: BSD for the script. Unknown for the source, therefore not redistributed here.
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
|
|
||||||
runghc MkLatin.hs
|
|
||||||
|
|
||||||
Output:
|
|
||||||
|
|
||||||
DictLatAbs.gf
|
|
||||||
DictLat.gf
|
|
||||||
|
|
||||||
Uses Herbert Lange's RGL implementation of Latin (darcs version of 2017-01-19 with ParadigmsLat.mkAdv added by AR)
|
|
||||||
|
|
||||||
Coverage of first version: 90%; 3938 missing out of 39227 entries. Marked with leading "--"
|
|
||||||
Reasons for uncovered entries
|
|
||||||
- uncommon category (e.g. structural words)
|
|
||||||
- missing case in ParadigmsLat.gf, e.g. deponent verbs
|
|
||||||
|
|
||||||
Matching for adjectives (A) uncertain, because we only use ParadigmsLat.gf.mkA : Str -> A
|
|
||||||
|
|
||||||
Verb subcat information is uncertain, too. It is based on the src's TRANS and INTRANS flags.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
concrete DictLav of DictLavAbs = CatLav ** open ResLav, ParadigmsLav in {
|
concrete DictLav of DictLavAbs = CatLav ** open ResLav, ParadigmsLav in {
|
||||||
|
|
||||||
flags coding = utf8 ;
|
flags
|
||||||
|
optimize=values ;
|
||||||
|
coding = utf8 ;
|
||||||
|
|
||||||
lin 'abarkasis_N' = mkN "abarkasis" masculine D2 ;
|
lin 'abarkasis_N' = mkN "abarkasis" masculine D2 ;
|
||||||
lin 'abate_N' = mkN "abate" feminine D5 ;
|
lin 'abate_N' = mkN "abate" feminine D5 ;
|
||||||
@@ -3030,7 +3032,6 @@ lin 'apsekojums_N' = mkN "apsekojums" masculine D1 ;
|
|||||||
lin 'apsekot_V' = mkV "apsekot" second_conjugation ;
|
lin 'apsekot_V' = mkV "apsekot" second_conjugation ;
|
||||||
lin 'apsērsnot_V' = mkV "apsērsnot" second_conjugation ;
|
lin 'apsērsnot_V' = mkV "apsērsnot" second_conjugation ;
|
||||||
lin 'apsērst_V' = mkV "apsērs" "apsērš" "apsērs" ;
|
lin 'apsērst_V' = mkV "apsērs" "apsērš" "apsērs" ;
|
||||||
lin 'apsēst_V' = mkV "apsēst" ;
|
|
||||||
lin 'apsēstība_N' = mkN "apsēstība" feminine D4 ;
|
lin 'apsēstība_N' = mkN "apsēstība" feminine D4 ;
|
||||||
lin 'apsēsties_V' = mkV "apsēs" "apsēž,apsēst" "apsēd" ;
|
lin 'apsēsties_V' = mkV "apsēs" "apsēž,apsēst" "apsēd" ;
|
||||||
lin 'apsēt_V' = mkV "apsē" "apsēj" "apsēj" ;
|
lin 'apsēt_V' = mkV "apsē" "apsēj" "apsēj" ;
|
||||||
@@ -39719,7 +39720,6 @@ lin 'piesārņojums_N' = mkN "piesārņojums" masculine D1 ;
|
|||||||
lin 'piesārņot_V' = mkV "piesārņot" second_conjugation ;
|
lin 'piesārņot_V' = mkV "piesārņot" second_conjugation ;
|
||||||
lin 'piesārņotība_N' = mkN "piesārņotība" feminine D4 ;
|
lin 'piesārņotība_N' = mkN "piesārņotība" feminine D4 ;
|
||||||
lin 'piesārņoties_V' = mkV "piesārņoties" second_conjugation ;
|
lin 'piesārņoties_V' = mkV "piesārņoties" second_conjugation ;
|
||||||
lin 'piesārst_V' = mkV "piesārst" ;
|
|
||||||
lin 'piesārtums_N' = mkN "piesārtums" masculine D1 ;
|
lin 'piesārtums_N' = mkN "piesārtums" masculine D1 ;
|
||||||
lin 'piesātinājums_N' = mkN "piesātinājums" masculine D1 ;
|
lin 'piesātinājums_N' = mkN "piesātinājums" masculine D1 ;
|
||||||
lin 'piesātināt_V' = mkV "piesātināt" third_conjugation ;
|
lin 'piesātināt_V' = mkV "piesātināt" third_conjugation ;
|
||||||
|
|||||||
@@ -3030,7 +3030,6 @@ fun 'apsekojums_N' : N ;
|
|||||||
fun 'apsekot_V' : V ;
|
fun 'apsekot_V' : V ;
|
||||||
fun 'apsērsnot_V' : V ;
|
fun 'apsērsnot_V' : V ;
|
||||||
fun 'apsērst_V' : V ;
|
fun 'apsērst_V' : V ;
|
||||||
fun 'apsēst_V' : V ;
|
|
||||||
fun 'apsēstība_N' : N ;
|
fun 'apsēstība_N' : N ;
|
||||||
fun 'apsēsties_V' : V ;
|
fun 'apsēsties_V' : V ;
|
||||||
fun 'apsēt_V' : V ;
|
fun 'apsēt_V' : V ;
|
||||||
@@ -39719,7 +39718,6 @@ fun 'piesārņojums_N' : N ;
|
|||||||
fun 'piesārņot_V' : V ;
|
fun 'piesārņot_V' : V ;
|
||||||
fun 'piesārņotība_N' : N ;
|
fun 'piesārņotība_N' : N ;
|
||||||
fun 'piesārņoties_V' : V ;
|
fun 'piesārņoties_V' : V ;
|
||||||
fun 'piesārst_V' : V ;
|
|
||||||
fun 'piesārtums_N' : N ;
|
fun 'piesārtums_N' : N ;
|
||||||
fun 'piesātinājums_N' : N ;
|
fun 'piesātinājums_N' : N ;
|
||||||
fun 'piesātināt_V' : V ;
|
fun 'piesātināt_V' : V ;
|
||||||
|
|||||||
@@ -3,23 +3,23 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in {
|
|||||||
flags coding = utf8;
|
flags coding = utf8;
|
||||||
lin
|
lin
|
||||||
|
|
||||||
PositA a = a ;
|
PositA a = a ** {s = a.s ! Positive} ;
|
||||||
UseComparA a = a ;
|
UseComparA a = a ** {s = a.s ! Comparative} ;
|
||||||
|
|
||||||
ComparA a np = a ** {
|
ComparA a np = a ** {
|
||||||
s = \\m => a.s ! m ++ "تر" ++ "از" ++ np2str np ;
|
s = \\m => a.s ! Comparative ! m ++ "تر" ++ "از" ++ np2str np ;
|
||||||
adv = a.adv ++ "تر" ++ "از" ++ np2str np ;
|
adv = a.adv ++ "تر" ++ "از" ++ np2str np ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
---- $SuperlA$ belongs to determiner syntax in $Noun$.
|
---- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||||
|
|
||||||
ComplA2 a np = a ** {
|
ComplA2 a np = a ** {
|
||||||
s = \\m => np2str np ++ a.c2 ++ a.s ! m ;
|
s = \\m => a.c2 ++ np2str np ++ a.s ! Positive ! m ;
|
||||||
adv = np2str np ++ a.c2 ++ a.adv
|
adv = np2str np ++ a.c2 ++ a.adv
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ReflA2 a = a ** {
|
ReflA2 a = a ** {
|
||||||
s = \\m => a.s ! m ++ reflPron ! defaultAgr ! Bare ; ---- need to be fixed
|
s = \\m => a.s ! Positive ! m ++ reflPron ! defaultAgr ! Bare ; ---- s needs to be an inflection table from Agr to string, to choose the right reflexive pronoun
|
||||||
adv = a.adv ++ reflPron ! defaultAgr ! Bare
|
adv = a.adv ++ reflPron ! defaultAgr ! Bare
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in {
|
|||||||
adv = ada.s ++ ap.adv ;
|
adv = ada.s ++ ap.adv ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseA2 a = a ;
|
UseA2 = PositA ;
|
||||||
|
|
||||||
CAdvAP cadv ap np = ap ** {
|
CAdvAP cadv ap np = ap ** {
|
||||||
s = \\m => cadv.s ++ np2str np ++ ap.s ! m ;
|
s = \\m => cadv.s ++ np2str np ++ ap.s ! m ;
|
||||||
@@ -43,7 +43,8 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in {
|
|||||||
AdjOrd ord = {
|
AdjOrd ord = {
|
||||||
s = \\_ => ord.s ;
|
s = \\_ => ord.s ;
|
||||||
adv = ord.s ;
|
adv = ord.s ;
|
||||||
isPre = ord.isPre
|
isPre = ord.isPre ;
|
||||||
|
afterPrefix = False ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdvAP ap adv = ap ** {
|
AdvAP ap adv = ap ** {
|
||||||
|
|||||||
@@ -11,12 +11,17 @@ concrete AdverbPes of Adverb = CatPes ** open ResPes, Prelude in {
|
|||||||
s = a.adv ++ cadv.p ++ cadv.s ++ s.s ! Indic;
|
s = a.adv ++ cadv.p ++ cadv.s ++ s.s ! Indic;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PrepNP prep np = {s = prep.s ++ np.s ! Bare } ;
|
PrepNP prep np = {s = appComp prep np.s} ;
|
||||||
|
|
||||||
AdAdv ada adv = { s = ada.s ++ adv.s} ;
|
AdAdv ada adv = { s = ada.s ++ adv.s} ;
|
||||||
|
|
||||||
-- SubjS = cc2 ;
|
-- SubjS = cc2 ;
|
||||||
SubjS sub snt = {s = sub.s ++ "که" ++ snt.s ! sub.compl} ;
|
SubjS sub snt = {
|
||||||
|
s = case sub.relpron of {
|
||||||
|
Ke => sub.s ++ conjThat ++ snt.s ! sub.compl ;
|
||||||
|
Ance => "آنچه" ++ snt.s ! sub.compl }
|
||||||
|
} ;
|
||||||
|
|
||||||
AdnCAdv cadv = {s = cadv.s ++ "از"} ;
|
AdnCAdv cadv = {s = cadv.s ++ "از"} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ concrete CatPes of Cat = CommonX ** open ResPes, Prelude in {
|
|||||||
vp : ResPes.TAnt => Polarity => Order => Str ;
|
vp : ResPes.TAnt => Polarity => Order => Str ;
|
||||||
c2 : ResPes.Compl
|
c2 : ResPes.Compl
|
||||||
} ;
|
} ;
|
||||||
Imp = {s : Polarity => ImpForm => Str} ;
|
Imp = {s : Polarity => Number => Str} ;
|
||||||
|
|
||||||
---- Question
|
---- Question
|
||||||
QCl = {s : ResPes.TAnt => Polarity => Str} ;
|
QCl = {s : ResPes.TAnt => Polarity => Str} ;
|
||||||
@@ -46,7 +46,7 @@ concrete CatPes of Cat = CommonX ** open ResPes, Prelude in {
|
|||||||
|
|
||||||
---- Adjective
|
---- Adjective
|
||||||
|
|
||||||
AP = ResPes.Adjective ;
|
AP = ResPes.AP ;
|
||||||
|
|
||||||
---- Noun
|
---- Noun
|
||||||
|
|
||||||
@@ -71,12 +71,18 @@ concrete CatPes of Cat = CommonX ** open ResPes, Prelude in {
|
|||||||
Conj = {s1,s2 : Str ; n : Number} ;
|
Conj = {s1,s2 : Str ; n : Number} ;
|
||||||
-----b Conj = {s : Str ; n : Number} ;
|
-----b Conj = {s : Str ; n : Number} ;
|
||||||
-----b DConj = {s1,s2 : Str ; n : Number} ;
|
-----b DConj = {s1,s2 : Str ; n : Number} ;
|
||||||
Subj = {s : Str ; compl : VVForm} ; -- subjunctive or indicative
|
Subj = {
|
||||||
|
s : Str ;
|
||||||
|
compl : VVForm ; -- subjunctive or indicative
|
||||||
|
relpron : RelPron -- choose between که and آنچه
|
||||||
|
} ;
|
||||||
|
VS = ResPes.Verb ** {compl : VVForm} ; -- subjunctive or indicative
|
||||||
|
V2S = ResPes.Verb ** {c2 : Compl ; compl : VVForm} ;
|
||||||
Prep = Compl ;
|
Prep = Compl ;
|
||||||
---- Open lexical classes, e.g. Lexicon
|
---- Open lexical classes, e.g. Lexicon
|
||||||
V, VS, VQ = ResPes.Verb ;
|
V, VQ = ResPes.Verb ;
|
||||||
|
|
||||||
V2, VA, V2A, V2Q, V2S = ResPes.Verb ** {c2 : Compl} ;
|
V2, VA, V2A, V2Q = ResPes.Verb ** {c2 : Compl} ;
|
||||||
V3 = ResPes.Verb ** {c2, c3 : Compl} ;
|
V3 = ResPes.Verb ** {c2, c3 : Compl} ;
|
||||||
VV = ResPes.VV ;
|
VV = ResPes.VV ;
|
||||||
V2V = ResPes.VV ** {c2 : Compl} ;
|
V2V = ResPes.VV ** {c2 : Compl} ;
|
||||||
@@ -85,8 +91,8 @@ concrete CatPes of Cat = CommonX ** open ResPes, Prelude in {
|
|||||||
|
|
||||||
N = ResPes.Noun ;
|
N = ResPes.Noun ;
|
||||||
|
|
||||||
N2 = ResPes.Noun ** {c2 : Str ; compl : Str}; -- when N3 is made to N2, need to retain compl
|
N2 = ResPes.Noun ** {c2 : Compl ; compl : Str}; -- when N3 is made to N2, need to retain compl
|
||||||
N3 = ResPes.Noun ** {c2 : Str ; c3 : Str} ;
|
N3 = ResPes.Noun ** {c2 : Compl ; c3 : Compl} ;
|
||||||
PN = {s : Str ; animacy : Animacy} ;
|
PN = {s : Str ; animacy : Animacy} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,11 +35,25 @@ concrete ConjunctionPes of Conjunction =
|
|||||||
BaseAP x y = y ** twoTable Mod x y ;
|
BaseAP x y = y ** twoTable Mod x y ;
|
||||||
ConsAP xs x = xs ** consrTable Mod comma xs x ; -- Table3 Number Gender Case comma xs x ;-- ** {isPre = andB xs.isPre x.isPre} ;
|
ConsAP xs x = xs ** consrTable Mod comma xs x ; -- Table3 Number Gender Case comma xs x ;-- ** {isPre = andB xs.isPre x.isPre} ;
|
||||||
|
|
||||||
|
BaseCN cn1 cn2 = leanCN cn1 ** twoTable2 Number Mod (leanCN cn1) (leanCN cn2) ;
|
||||||
|
ConsCN cn cns = leanCN cn ** consrTable2 Number Mod comma (leanCN cn) cns ;
|
||||||
|
ConjCN conj cns = cns ** conjunctDistrTable2 Number Mod conj cns ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
[S] = {s1,s2 : VVForm => Str} ;
|
[S] = {s1,s2 : VVForm => Str} ;
|
||||||
[Adv] = {s1,s2 : Str} ;
|
[Adv] = {s1,s2 : Str} ;
|
||||||
[NP] = {s1,s2 : Mod => Str} ** BaseNP ;
|
[NP] = {s1,s2 : Mod => Str} ** BaseNP ;
|
||||||
[AP] = {s1,s2 : Mod => Str ; adv : Str ; isPre : Bool} ;
|
[CN] = {s1,s2 : Number => Mod => Str ;
|
||||||
|
animacy : Animacy ;
|
||||||
|
isCmpd : CmpdStatus;
|
||||||
|
hasAdj : Bool ;
|
||||||
|
compl : Number => Str} ;
|
||||||
|
[AP] = {s1,s2 : Mod => Str ; adv : Str ; isPre,afterPrefix : Bool} ;
|
||||||
[RS] = {s1,s2 : Agr => Str ; rp : RelPron => Str} ;
|
[RS] = {s1,s2 : Agr => Str ; rp : RelPron => Str} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
leanCN : CN -> CN = \cn -> cn ** {
|
||||||
|
compl = \\n => [] ;
|
||||||
|
s = \\n,m => cn.s ! n ! m ++ cn.compl ! n ;
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
concrete ExtendPes of Extend =
|
concrete ExtendPes of Extend =
|
||||||
CatPes ** ExtendFunctor - [
|
CatPes ** ExtendFunctor - [
|
||||||
GenNP, ApposNP, ICompAP, AdvIsNP
|
GenNP, ApposNP, ICompAP, AdvIsNP, InOrderToVP, ByVP, AdjAsNP, ComplBareVS
|
||||||
,GerundNP,GerundCN,GerundAdv,EmbedPresPart
|
,GerundNP,GerundCN,GerundAdv,EmbedPresPart,EmbedSSlash
|
||||||
]
|
]
|
||||||
with (Grammar=GrammarPes)
|
with (Grammar=GrammarPes)
|
||||||
** open Prelude, ResPes in {
|
** open Prelude, ResPes in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
-- NP -> Quant ; -- this man's
|
-- NP -> Quant ; -- this man's
|
||||||
GenNP np = np ** {
|
GenNP np = makeQuant [] [] Ezafe False ** np ** {
|
||||||
mod = Ezafe ; -- the possessed will get Ezafe
|
mod = Ezafe ; -- the possessed will get Ezafe
|
||||||
s = \\num,cmpd => np2str np -- possesser is unmarked; https://sites.la.utexas.edu/persian_online_resources/language-specific-grammar/ezfe/
|
s = \\num,cmpd => np2str np -- possesser is unmarked; https://sites.la.utexas.edu/persian_online_resources/language-specific-grammar/ezfe/
|
||||||
} ;
|
} ;
|
||||||
@@ -20,19 +20,41 @@ lin
|
|||||||
s = \\m => np1.s ! m ++ np2.s ! m
|
s = \\m => np1.s ! m ++ np2.s ! m
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- : AP -> NP
|
||||||
|
AdjAsNP ap = emptyNP ** ap ;
|
||||||
|
|
||||||
|
-- : VS -> S -> VP
|
||||||
|
ComplBareVS vs s = embComp (s.s ! vs.compl) (predV vs) ;
|
||||||
|
|
||||||
ICompAP ap = {s = "چقدر" ++ ap.s ! Bare} ;
|
ICompAP ap = {s = "چقدر" ++ ap.s ! Bare} ;
|
||||||
-- : VP -> CN ; -- publishing of the document (can get a determiner)
|
-- : VP -> CN ; -- publishing of the document (can get a determiner)
|
||||||
GerundCN vp = useN (indeclN (showVPH Inf defaultAgr vp)) ;
|
GerundCN vp = useN (indeclN (infVP vp)) ;
|
||||||
|
|
||||||
-- : VP -> NP ; -- publishing the document (by nature definite)
|
-- : VP -> NP ; -- publishing the document (by nature definite)
|
||||||
GerundNP vp = indeclNP (showVPH Inf defaultAgr vp) ;
|
GerundNP vp = indeclNP (infVP vp) ;
|
||||||
|
|
||||||
-- : VP -> Adv ; -- publishing the document (prepositionless adverb)
|
-- : VP -> Adv ; -- publishing the document (prepositionless adverb)
|
||||||
GerundAdv vp = lin Adv {s = showVPH Inf defaultAgr vp} ;
|
GerundAdv vp = lin Adv {s = infVP vp} ;
|
||||||
|
|
||||||
-- : VP -> SC ;
|
-- : VP -> SC ;
|
||||||
EmbedPresPart vp = lin SC {s = showVPH Inf defaultAgr vp} ;
|
EmbedPresPart vp = lin SC {s = infVP vp} ;
|
||||||
|
|
||||||
|
-- : SSlash -> SC
|
||||||
|
-- Not optimal: complement with آن should go after subject, but SSlash is already fixed.
|
||||||
|
-- You can get the more idiomatic word order by using other RGL functions, so it's
|
||||||
|
-- less critical to tweak this function and SSlash (pretty marginal category). /IL
|
||||||
|
EmbedSSlash ss = {s = "آنچه" ++ appComp ss.c2 (\\_ => "آن") ++ ss.s ! Indic} ;
|
||||||
|
|
||||||
-- : Adv -> NP -> Cl -- here is the car / here are the cars
|
-- : Adv -> NP -> Cl -- here is the car / here are the cars
|
||||||
AdvIsNP adv np = mkClause (indeclNP adv.s ** {a = np.a}) (UseComp (CompNP np)) ;
|
AdvIsNP adv np = mkClause (indeclNP adv.s ** {a = np.a}) (UseComp (CompNP np)) ;
|
||||||
|
|
||||||
|
-- : VP -> Adv ; -- by publishing the document
|
||||||
|
ByVP vp = lin Adv {s = with_Prep.s ++ showVPH' VO False VVPres Inf defaultAgr vp } ;
|
||||||
|
|
||||||
|
-- : VP -> Adv ; -- (in order) to publish the document
|
||||||
|
InOrderToVP vp = lin Adv {s = for_Prep.s
|
||||||
|
++ case vp.lightverb of {
|
||||||
|
Kardan => showVPH PerfStem defaultAgr <vp ** {s = \\vf => []} : VP> ; -- only show prefix
|
||||||
|
_ => showVPH PerfStem defaultAgr vp}
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
concrete IdiomPes of Idiom = CatPes ** open Prelude,ParadigmsPes,ResPes in {
|
concrete IdiomPes of Idiom = CatPes ** open Prelude,ParadigmsPes,ResPes,(N=NounPes) in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
flags coding = utf8;
|
flags coding = utf8;
|
||||||
@@ -17,20 +17,14 @@ lin
|
|||||||
|
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
mkSClause [] (agrP3 (fromAgr np.a).n)
|
mkSClause [] (agrP3 (fromAgr np.a).n)
|
||||||
(insertComp (\\_ => np2str np) (predV existVerb)) ;
|
(complSlash (predVc existVerb) np) ;
|
||||||
|
|
||||||
ExistNPAdv np adv =
|
|
||||||
mkSClause [] (agrP3 (fromAgr np.a).n)
|
|
||||||
(insertComp (\\_ => np2str np ++ adv.s)
|
|
||||||
(predV existVerb)
|
|
||||||
) ;
|
|
||||||
|
|
||||||
|
ExistNPAdv np adv = ExistNP (N.AdvNP np adv) ;
|
||||||
|
|
||||||
ExistIP ip =
|
ExistIP ip =
|
||||||
let cl = mkSClause ip.s (agrP3 ip.n) (predV beVerb);
|
let cl = mkSClause ip.s (agrP3 ip.n) (predV beVerb);
|
||||||
in {s = \\t,p => cl.s ! t ! p ! ODir};
|
in {s = \\t,p => cl.s ! t ! p ! ODir};
|
||||||
|
|
||||||
|
|
||||||
ProgrVP vp = predProg vp ;
|
ProgrVP vp = predProg vp ;
|
||||||
|
|
||||||
ImpPl1 vp = let a = agrP1 Pl in
|
ImpPl1 vp = let a = agrP1 Pl in
|
||||||
@@ -39,6 +33,6 @@ lin
|
|||||||
{s = "بگذارید" ++ np2str np ++ showVPH (VSubj Pos np.a) np.a vp};
|
{s = "بگذارید" ++ np2str np ++ showVPH (VSubj Pos np.a) np.a vp};
|
||||||
|
|
||||||
oper
|
oper
|
||||||
existVerb = mkV "وجود" haveVerb ;
|
existVerb : V2 = mkV2 (mkV "وجود" haveVerb) noPrep ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ concrete LexiconPes of Lexicon = CatPes **
|
|||||||
lin
|
lin
|
||||||
|
|
||||||
airplane_N = mkN01 "هواپیما" inanimate ;
|
airplane_N = mkN01 "هواپیما" inanimate ;
|
||||||
answer_V2S = mkV2 (compoundV "جواب" giveVerb) "به" False;
|
answer_V2S = mkV2S (mkV2 (compoundV "جواب" giveVerb) "به" False) ;
|
||||||
apartment_N = mkN01 "آپارتمان" inanimate;
|
apartment_N = mkN01 "آپارتمان" inanimate;
|
||||||
apple_N = mkN01 "سیب" inanimate;
|
apple_N = mkN01 "سیب" inanimate;
|
||||||
art_N = mkN01 "هنر" inanimate;
|
art_N = mkN01 "هنر" inanimate;
|
||||||
@@ -65,7 +65,7 @@ concrete LexiconPes of Lexicon = CatPes **
|
|||||||
cow_N = mkN01 "گاو" animate;
|
cow_N = mkN01 "گاو" animate;
|
||||||
die_V = mkV "مردن" "میر" ;
|
die_V = mkV "مردن" "میر" ;
|
||||||
dirty_A = mkA "کثیف" ;
|
dirty_A = mkA "کثیف" ;
|
||||||
distance_N3 = (mkN "فاصله" "فواصل" inanimate ) ** {c2="از" ; c3 = "تا"};
|
distance_N3 = mkN3 (mkN "فاصله" "فواصل" inanimate ) "از" "تا" ;
|
||||||
doctor_N = mkN01 "دکتر" animate; -- has variant "پزشک", but only a doctor in medicine
|
doctor_N = mkN01 "دکتر" animate; -- has variant "پزشک", but only a doctor in medicine
|
||||||
dog_N = mkN01 "سگ" animate;
|
dog_N = mkN01 "سگ" animate;
|
||||||
door_N = mkN01 "در" inanimate;
|
door_N = mkN01 "در" inanimate;
|
||||||
@@ -76,7 +76,7 @@ concrete LexiconPes of Lexicon = CatPes **
|
|||||||
enemy_N = mkN02 "دشمن" animate;
|
enemy_N = mkN02 "دشمن" animate;
|
||||||
factory_N = mkN01 "کارخانه" inanimate;
|
factory_N = mkN01 "کارخانه" inanimate;
|
||||||
father_N2 = mkN2 (mkN02 "پدر" animate) [];
|
father_N2 = mkN2 (mkN02 "پدر" animate) [];
|
||||||
fear_VS = mkV_1 "ترسیدن";
|
fear_VS = mkVS (mkV_1 "ترسیدن") ;
|
||||||
find_V2 = mkV2 (compoundV "پیدا" doVerb) "را";
|
find_V2 = mkV2 (compoundV "پیدا" doVerb) "را";
|
||||||
fish_N = mkN01 "ماهی" animate;
|
fish_N = mkN01 "ماهی" animate;
|
||||||
floor_N = mkN01 "زمین" inanimate; -- Note: floor in persian can have 3 different translations
|
floor_N = mkN01 "زمین" inanimate; -- Note: floor in persian can have 3 different translations
|
||||||
@@ -89,7 +89,7 @@ concrete LexiconPes of Lexicon = CatPes **
|
|||||||
girl_N = mkN02 "دختر" animate;
|
girl_N = mkN02 "دختر" animate;
|
||||||
glove_N = mkN01 "دستکش" inanimate;
|
glove_N = mkN01 "دستکش" inanimate;
|
||||||
gold_N = mkN01 "طلا" inanimate;
|
gold_N = mkN01 "طلا" inanimate;
|
||||||
good_A = mkA "خوب" ;
|
good_A = mkA "خوب" "بهتر" "خوب" ;
|
||||||
go_V = mkV "رفتن" "رو";
|
go_V = mkV "رفتن" "رو";
|
||||||
green_A = mkA "سبز" ;
|
green_A = mkA "سبز" ;
|
||||||
harbour_N = mkN "بندر" "بنادر" inanimate;
|
harbour_N = mkN "بندر" "بنادر" inanimate;
|
||||||
@@ -97,7 +97,7 @@ concrete LexiconPes of Lexicon = CatPes **
|
|||||||
hat_N = mkN01 "کلاه" inanimate;
|
hat_N = mkN01 "کلاه" inanimate;
|
||||||
hear_V2 = mkV2 (mkV "شنیدن" "شنو") "را" ;
|
hear_V2 = mkV2 (mkV "شنیدن" "شنو") "را" ;
|
||||||
hill_N = mkN01 "تپه" inanimate;
|
hill_N = mkN01 "تپه" inanimate;
|
||||||
hope_VS = compoundV "امیدوار" beVerb;
|
hope_VS = mkVS (compoundV "امیدوار" beVerb) ;
|
||||||
horse_N = mkN01 "اسب" animate;
|
horse_N = mkN01 "اسب" animate;
|
||||||
hot_A = mkA "داغ" ["داغ داغ"] ;
|
hot_A = mkA "داغ" ["داغ داغ"] ;
|
||||||
house_N = mkN01 "خانه" inanimate;
|
house_N = mkN01 "خانه" inanimate;
|
||||||
@@ -106,7 +106,7 @@ concrete LexiconPes of Lexicon = CatPes **
|
|||||||
iron_N = mkN01 "آهن" inanimate;
|
iron_N = mkN01 "آهن" inanimate;
|
||||||
king_N = mkN "پادشاه" "پادشاهان" animate;
|
king_N = mkN "پادشاه" "پادشاهان" animate;
|
||||||
know_V2 = mkV2 (mkV "شناختن" "شناس") "را";
|
know_V2 = mkV2 (mkV "شناختن" "شناس") "را";
|
||||||
know_VS = (mkV_1 "دانستن") ; -- danestan -> dan ; needs explicit mkV_1
|
know_VS = mkVS (mkV_1 "دانستن") ; -- danestan -> dan ; needs explicit mkV_1
|
||||||
know_VQ = (mkV_1 "دانستن") ;
|
know_VQ = (mkV_1 "دانستن") ;
|
||||||
lake_N = mkN01 "دریاچه" inanimate;
|
lake_N = mkN01 "دریاچه" inanimate;
|
||||||
lamp_N = mkN01 "چراغ" inanimate; -- also "لامپ", but they have different usage
|
lamp_N = mkN01 "چراغ" inanimate; -- also "لامپ", but they have different usage
|
||||||
@@ -157,7 +157,7 @@ concrete LexiconPes of Lexicon = CatPes **
|
|||||||
roof_N = mkN01 "بام" inanimate; -- has variant "سقف"
|
roof_N = mkN01 "بام" inanimate; -- has variant "سقف"
|
||||||
rubber_N = mkN01 "پاککن" inanimate; -- also "لاستیک"
|
rubber_N = mkN01 "پاککن" inanimate; -- also "لاستیک"
|
||||||
run_V = mkV_1 "دویدن" ;
|
run_V = mkV_1 "دویدن" ;
|
||||||
say_VS = mkV "گفتن" "گوی" ;
|
say_VS = mkVS (mkV "گفتن" "گوی") ;
|
||||||
school_N = mkN "مدرسه" "مدارس" inanimate;
|
school_N = mkN "مدرسه" "مدارس" inanimate;
|
||||||
science_N = mkN "علم" "علوم" inanimate; -- also "دانش"
|
science_N = mkN "علم" "علوم" inanimate; -- also "دانش"
|
||||||
sea_N = mkN01 "دریا" inanimate;
|
sea_N = mkN01 "دریا" inanimate;
|
||||||
@@ -215,7 +215,7 @@ concrete LexiconPes of Lexicon = CatPes **
|
|||||||
woman_N = mkN02 "زن" animate;
|
woman_N = mkN02 "زن" animate;
|
||||||
wonder_VQ = compoundV "متعجب" beVerb ;
|
wonder_VQ = compoundV "متعجب" beVerb ;
|
||||||
wood_N = mkN01 "چوب" inanimate;
|
wood_N = mkN01 "چوب" inanimate;
|
||||||
write_V2 = mkV2 (mkV "نوشتن" "نویس") "را" ;
|
write_V2 = mkV2 (mkV "نوشتن" "نویس") ; -- would need ra with a definite object, but better rule of thumb to go without ra /NM
|
||||||
yellow_A = mkA "زرد" ;
|
yellow_A = mkA "زرد" ;
|
||||||
young_A = mkA "جوان""جوانانه" ;
|
young_A = mkA "جوان""جوانانه" ;
|
||||||
do_V2 = mkV2 (compoundV "انجام" giveVerb) "را";
|
do_V2 = mkV2 (compoundV "انجام" giveVerb) "را";
|
||||||
@@ -369,7 +369,6 @@ concrete LexiconPes of Lexicon = CatPes **
|
|||||||
uncertain_A = mkA "نامعلوم" ["با تردید"];
|
uncertain_A = mkA "نامعلوم" ["با تردید"];
|
||||||
|
|
||||||
oper
|
oper
|
||||||
doVerb = mkV "کردن" "کن" ;
|
|
||||||
takeVerb = mkV "گرفتن" "گیر" ;
|
takeVerb = mkV "گرفتن" "گیر" ;
|
||||||
hitVerb = mkV "زدن" "زن" ;
|
hitVerb = mkV "زدن" "زن" ;
|
||||||
giveVerb = mkV "دادن" "ده" ;
|
giveVerb = mkV "دادن" "ده" ;
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ oper
|
|||||||
-- fatha : Str = "َ" ;
|
-- fatha : Str = "َ" ;
|
||||||
kasre,fatha : Str = [] ;
|
kasre,fatha : Str = [] ;
|
||||||
|
|
||||||
|
-- for appComp
|
||||||
|
-- runtimeKasre : Str -> Str = \s -> glue s kasre ;
|
||||||
|
runtimeKasre : Str -> Str = \s -> s ;
|
||||||
|
|
||||||
|
|
||||||
---- Nouns
|
---- Nouns
|
||||||
param
|
param
|
||||||
@@ -32,6 +36,7 @@ param
|
|||||||
Mod = Bare | Ezafe | Clitic | Poss ;
|
Mod = Bare | Ezafe | Clitic | Poss ;
|
||||||
Agr = Ag Number Person ;
|
Agr = Ag Number Person ;
|
||||||
CmpdStatus = IsCmpd | NotCmpd ;
|
CmpdStatus = IsCmpd | NotCmpd ;
|
||||||
|
Degr = Positive | Comparative ;
|
||||||
|
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
-- Agreement transformations
|
-- Agreement transformations
|
||||||
@@ -97,6 +102,16 @@ oper
|
|||||||
Clitic => mkEnclic str ;
|
Clitic => mkEnclic str ;
|
||||||
Poss => mkPossStem str } ;
|
Poss => mkPossStem str } ;
|
||||||
|
|
||||||
|
-- Can happen that a complement (of N2, or e.g. PossNP) wants one form
|
||||||
|
-- and determiner wants another form. Heuristic: whichever wants Bare loses.
|
||||||
|
-- Will have to see if this works 100%, the grammar books I've seen
|
||||||
|
-- aren't very clear about this, just basing on some data. /IL
|
||||||
|
replaceBare : Mod -> (Mod=>Str) -> (Mod=>Str) = \m,tbl ->
|
||||||
|
table {
|
||||||
|
Bare => tbl ! m ;
|
||||||
|
mod => tbl ! mod
|
||||||
|
} ;
|
||||||
|
|
||||||
Noun = {
|
Noun = {
|
||||||
s : Number => Mod => Str ;
|
s : Number => Mod => Str ;
|
||||||
animacy : Animacy ;
|
animacy : Animacy ;
|
||||||
@@ -119,7 +134,10 @@ oper
|
|||||||
--Determiners
|
--Determiners
|
||||||
--------------------
|
--------------------
|
||||||
BaseQuant : Type = {
|
BaseQuant : Type = {
|
||||||
mod : Mod } ;
|
mod : Mod ;
|
||||||
|
isNeg : Bool ;
|
||||||
|
isDef : Bool
|
||||||
|
} ;
|
||||||
|
|
||||||
Determiner : Type = BaseQuant ** {
|
Determiner : Type = BaseQuant ** {
|
||||||
s : Str ;
|
s : Str ;
|
||||||
@@ -131,34 +149,48 @@ oper
|
|||||||
Quant : Type = BaseQuant ** {
|
Quant : Type = BaseQuant ** {
|
||||||
s : Number => CmpdStatus => Str} ;
|
s : Number => CmpdStatus => Str} ;
|
||||||
|
|
||||||
makeDet : Str -> Number -> Bool -> Determiner = \str,n,b -> {
|
makeDet : Str -> Number -> (isNum, isNeg : Bool) -> Determiner = \str,n,isNum,isNeg -> {
|
||||||
s,sp = str;
|
s,sp = str;
|
||||||
isNum = b;
|
isNum = isNum ;
|
||||||
|
isNeg = isNeg ;
|
||||||
|
isDef = True ;
|
||||||
mod = Bare ;
|
mod = Bare ;
|
||||||
n = n
|
n = n
|
||||||
};
|
};
|
||||||
|
|
||||||
makeQuant : Str -> Str -> Quant = \sg,pl -> {
|
makeQuant : Str -> Str -> Mod -> (isNeg : Bool) -> Quant = \sg,pl,mod,isNeg -> {
|
||||||
s = table {Sg => \\_ => sg ; Pl => \\_ => pl} ;
|
s = table {Sg => \\_ => sg ; Pl => \\_ => pl} ;
|
||||||
mod = Bare ;
|
mod = mod ;
|
||||||
|
isNeg = isNeg ;
|
||||||
|
isDef = True
|
||||||
};
|
};
|
||||||
---------------------------
|
---------------------------
|
||||||
-- Adjectives
|
-- Adjectives
|
||||||
--------------------------
|
--------------------------
|
||||||
Adjective : Type = {
|
BaseAdjective : Type = {
|
||||||
s : Mod => Str ;
|
|
||||||
adv : Str ;
|
adv : Str ;
|
||||||
isPre : Bool
|
isPre : Bool ; -- as attributive
|
||||||
|
afterPrefix : Bool ; -- as predicative, does it go between the prefix and the light verb
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
Adjective : Type = BaseAdjective ** {
|
||||||
|
s : Degr => Mod => Str } ;
|
||||||
|
|
||||||
|
AP : Type = BaseAdjective ** {
|
||||||
|
s : Mod => Str } ;
|
||||||
|
|
||||||
|
mkAdj = overload {
|
||||||
mkAdj : Str -> Str -> Adjective = \adj,adv -> {
|
mkAdj : Str -> Str -> Adjective = \adj,adv -> {
|
||||||
s = table { Bare => adj;
|
s = table { Positive => modTable adj ;
|
||||||
Ezafe => mkEzafe adj ;
|
Comparative => modTable (adj + "تر") -- Regular comparative.
|
||||||
Clitic => mkEnclic adj ;
|
} ;
|
||||||
Poss => mkPossStem adj
|
adv = adv ; isPre = False ; afterPrefix = True } ;
|
||||||
|
mkAdj : Str -> Str -> Str -> Adjective = \pos,cmp,adv -> {
|
||||||
|
s = table { Positive => modTable pos ;
|
||||||
|
Comparative => modTable cmp -- Irregular comparative, e.g. xub-behtar
|
||||||
|
} ;
|
||||||
|
adv = adv ; isPre = False ; afterPrefix = True }
|
||||||
} ;
|
} ;
|
||||||
adv = adv ; isPre = False
|
|
||||||
};
|
|
||||||
|
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
-- Verbs
|
-- Verbs
|
||||||
@@ -177,12 +209,35 @@ param
|
|||||||
| VImp Polarity Number -- bekon,bekonid/nakon,nakonid
|
| VImp Polarity Number -- bekon,bekonid/nakon,nakonid
|
||||||
;
|
;
|
||||||
|
|
||||||
|
-- Affects clitic placement and passive
|
||||||
|
LightVerb = NotLight | Light -- ateš zadan -> ateš zade šodan
|
||||||
|
| Kardan ; -- gom kardan -> gom ∅ šodan
|
||||||
oper
|
oper
|
||||||
impRoot : Str -> Str = \root -> case root of {
|
impRoot : Str -> Str = \root -> case root of {
|
||||||
st + "ی" => st ;
|
st + "ی" => st ;
|
||||||
_ => root
|
_ => root
|
||||||
};
|
};
|
||||||
|
|
||||||
|
modifyFiniteForms : (Str -> Str) -> Verb -> Verb = \f,v -> v ** {s =
|
||||||
|
table {
|
||||||
|
vf@(VAor _ _
|
||||||
|
| VPerf _ _
|
||||||
|
| VPast _ _
|
||||||
|
| VSubj _ _
|
||||||
|
| VImp _ _)
|
||||||
|
=> f (v.s ! vf) ;
|
||||||
|
vf => v.s ! vf }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
addClitic : LightVerb -> Str -> Verb -> Verb = \light,cl,v -> v ** {s =
|
||||||
|
let f : Str -> Str = case light of {
|
||||||
|
NotLight => \s -> glue s cl ;
|
||||||
|
_ => \s -> BIND ++ cl ++ s } -- hack: put clitic before the verb, so it attaches to the prefix
|
||||||
|
in table {
|
||||||
|
Inf => glue (v.s ! Inf) cl ;
|
||||||
|
vf => (modifyFiniteForms f v).s ! vf }
|
||||||
|
} ;
|
||||||
|
|
||||||
mkVerb : (inf,pres : Str) -> Verb = \kardan,kon -> {
|
mkVerb : (inf,pres : Str) -> Verb = \kardan,kon -> {
|
||||||
s = table {
|
s = table {
|
||||||
Inf => kardan ;
|
Inf => kardan ;
|
||||||
@@ -198,10 +253,11 @@ oper
|
|||||||
VSubj Pos agr => addBh (imperfectSuffixD agr kon) ;
|
VSubj Pos agr => addBh (imperfectSuffixD agr kon) ;
|
||||||
VSubj Neg agr => addN (imperfectSuffixD agr kon) ;
|
VSubj Neg agr => addN (imperfectSuffixD agr kon) ;
|
||||||
VImp Pos Sg => addBh imp ;
|
VImp Pos Sg => addBh imp ;
|
||||||
VImp Pos Pl => addBh imp + "ید" ;
|
VImp Pos Pl => addBh kon + "ید" ;
|
||||||
VImp Neg Sg => addN imp ;
|
VImp Neg Sg => addN imp ;
|
||||||
VImp Neg Pl => addN imp + "ید" } ;
|
VImp Neg Pl => addN kon + "ید" } ;
|
||||||
prefix = [] -- For compound verbs
|
prefix = [] ;-- For compound verbs
|
||||||
|
lightverb = NotLight ;
|
||||||
} where {
|
} where {
|
||||||
kard = tk 1 kardan ;
|
kard = tk 1 kardan ;
|
||||||
kardeh = kard + "ه" ;
|
kardeh = kard + "ه" ;
|
||||||
@@ -225,7 +281,7 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
--
|
--
|
||||||
oper
|
oper
|
||||||
Verb = {s : VerbForm => Str ; prefix : Str} ;
|
Verb = {s : VerbForm => Str ; prefix : Str ; lightverb : LightVerb} ;
|
||||||
|
|
||||||
-- Verbs that end in یدن, ادن or ودن
|
-- Verbs that end in یدن, ادن or ودن
|
||||||
-- Also some verbs that don't: دانستن with stem دان
|
-- Also some verbs that don't: دانستن with stem دان
|
||||||
@@ -310,6 +366,8 @@ oper
|
|||||||
|
|
||||||
haveVerb : Verb = haveRegV ** {s = table {
|
haveVerb : Verb = haveRegV ** {s = table {
|
||||||
ImpPrefix _ => [] ;
|
ImpPrefix _ => [] ;
|
||||||
|
VAor Neg agr => imperfectSuffixD agr (addN "دار") ;
|
||||||
|
VSubj pol agr => haveRegV.s ! VPerf pol agr ;
|
||||||
vf => haveRegV.s ! vf }
|
vf => haveRegV.s ! vf }
|
||||||
} where { haveRegV = mkVerb "داشتن" "دار" } ;
|
} where { haveRegV = mkVerb "داشتن" "دار" } ;
|
||||||
|
|
||||||
@@ -326,4 +384,16 @@ oper
|
|||||||
vf => beRegV.s ! vf }
|
vf => beRegV.s ! vf }
|
||||||
} where { beRegV = mkVerb "بودن" "باش" } ;
|
} where { beRegV = mkVerb "بودن" "باش" } ;
|
||||||
|
|
||||||
|
doVerb : Verb = doRegV ** {s = table {
|
||||||
|
VSubj pol agr => addN pol (imperfectSuffixD agr "کن") ;
|
||||||
|
VImp Pos Sg => "کن" ;
|
||||||
|
VImp Pos Pl => "کنید" ;
|
||||||
|
VImp Neg Sg => "نکن" ;
|
||||||
|
VImp Neg Pl => "نکنید" ;
|
||||||
|
vf => doRegV.s ! vf } ;
|
||||||
|
lightverb = Kardan
|
||||||
|
} where { doRegV = mkVerb "کردن" "کن" } ;
|
||||||
|
|
||||||
|
becomeVerb : Verb = mkVerb "شدن" "شو" ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,12 +16,21 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
|||||||
IsCmpd => det.sp } ; -- full form
|
IsCmpd => det.sp } ; -- full form
|
||||||
in case mod of {
|
in case mod of {
|
||||||
Bare => detStr ++ cn.s ! num ! m ++ cn.compl ! det.n ; -- det doesn't require a special form, keep the Mod=>Str table
|
Bare => detStr ++ cn.s ! num ! m ++ cn.compl ! det.n ; -- det doesn't require a special form, keep the Mod=>Str table
|
||||||
x => cn.s ! num ! x ++ detStr ++ cn.compl ! det.n } ; -- det requires a special form
|
Clitic => detStr ++ cn.s ! num ! Clitic ++ cn.compl ! det.n ; -- In RGL this is only for no_Quant. If other determiners with different word order take Clitic, will change. /IL
|
||||||
a = agrP3 det.n
|
x => cn.s ! num ! x ++ detStr ++ cn.compl ! det.n } ; -- Ezafe or Poss: comes after noun, Mod table is overwritten to the given form
|
||||||
|
a = agrP3 det.n ;
|
||||||
|
takesYeAsComp = False ; -- TODO: some rule with det.isDef and cn.hasAdj
|
||||||
|
isNeg = det.isNeg ; -- affects polarity in Cl: "*nothing is real" -> "nothing isn't real"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UsePN pn = emptyNP ** pn ** {s = \\_ => pn.s} ;
|
UsePN pn = emptyNP ** pn ** {s = \\_ => pn.s} ;
|
||||||
UsePron p = emptyNP ** p ** {s = \\_ => p.s ; animacy = Animate} ;
|
UsePron p = emptyNP ** p ** {
|
||||||
|
s = \\_ => p.s ;
|
||||||
|
clitic = p.ps ;
|
||||||
|
isClitic = case p.a of {
|
||||||
|
Ag Sg P3 => True ;
|
||||||
|
_ => False } ;
|
||||||
|
animacy = Animate} ;
|
||||||
|
|
||||||
PredetNP pred np = np ** {
|
PredetNP pred np = np ** {
|
||||||
s = \\ez => pred.s ++ np.s ! ez
|
s = \\ez => pred.s ++ np.s ! ez
|
||||||
@@ -41,20 +50,29 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
|||||||
s = \\ez => np.s ! Ezafe ++ adv.s
|
s = \\ez => np.s ! Ezafe ++ adv.s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetQuantOrd quant num ord = {
|
DetQuantOrd quant num ord =
|
||||||
s = quant.s ! num.n ! NotCmpd ++ num.s ++ ord.s ;
|
let cs : CmpdStatus => Str = case <num.isNum,num.n,quant.isDef> of {
|
||||||
sp = quant.s ! num.n ! IsCmpd ++ num.s ++ ord.s ; -- only matters for PossPron
|
<True,Sg,False> => \\_ => num.s ++ ord.s ; -- to prevent "a 1"
|
||||||
|
_ => \\c => quant.s ! num.n ! c ++ num.s ++ ord.s} ;
|
||||||
|
|
||||||
|
in quant ** {
|
||||||
|
s = cs ! NotCmpd ;
|
||||||
|
sp = cs ! IsCmpd ; -- only matters for PossPron
|
||||||
isNum = orB num.isNum ord.isNum ;
|
isNum = orB num.isNum ord.isNum ;
|
||||||
mod = quant.mod ;
|
mod = quant.mod ;
|
||||||
n = num.n
|
n = case quant.isNeg of {True => Sg ; _ => num.n} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetQuant quant num = {
|
DetQuant quant num =
|
||||||
s = quant.s ! num.n ! NotCmpd ++ num.s ;
|
let cs : CmpdStatus => Str = case <num.isNum,num.n,quant.isDef> of {
|
||||||
sp = quant.s ! num.n ! IsCmpd ++ num.s ; -- only matters for PossPron
|
<True,Sg,False> => \\_ => num.s ; -- to prevent "a 1"
|
||||||
|
_ => \\c => quant.s ! num.n ! c ++ num.s } ;
|
||||||
|
in quant ** {
|
||||||
|
s = cs ! NotCmpd ;
|
||||||
|
sp = cs ! IsCmpd ; -- only matters for PossPron
|
||||||
isNum = num.isNum;
|
isNum = num.isNum;
|
||||||
mod = quant.mod ;
|
mod = quant.mod ;
|
||||||
n = num.n
|
n = case quant.isNeg of {True => Sg ; _ => num.n} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetNP det = emptyNP ** {
|
DetNP det = emptyNP ** {
|
||||||
@@ -62,10 +80,11 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
|||||||
a = agrP3 det.n ;
|
a = agrP3 det.n ;
|
||||||
hasAdj = False ;
|
hasAdj = False ;
|
||||||
animacy = Inanimate ;
|
animacy = Inanimate ;
|
||||||
|
--TODO: isClitic, clitic
|
||||||
relpron = Ance -- TODO check if this works for all Dets
|
relpron = Ance -- TODO check if this works for all Dets
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PossPron p = {
|
PossPron p = DefArt ** {
|
||||||
s = \\_ => table {
|
s = \\_ => table {
|
||||||
NotCmpd => BIND ++ p.ps ;
|
NotCmpd => BIND ++ p.ps ;
|
||||||
IsCmpd => p.s } ; -- is a compound
|
IsCmpd => p.s } ; -- is a compound
|
||||||
@@ -85,14 +104,15 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
|||||||
-- to here
|
-- to here
|
||||||
AdNum adn num = num ** {s = adn.s ++ num.s} ;
|
AdNum adn num = num ** {s = adn.s ++ num.s} ;
|
||||||
|
|
||||||
OrdSuperl a = {s = a.s ! Bare ++ taryn; n = Sg ; isNum=False ; isPre = True} ; -- check the form of adjective
|
OrdSuperl a = {s = a.s ! Comparative ! Bare ++ BIND ++ "ین" ; n = Sg ; isNum=False ; isPre = True} ;
|
||||||
|
|
||||||
DefArt = {s = \\_,_ => [] ; mod = Bare} ;
|
DefArt = makeQuant [] [] Bare False ;
|
||||||
IndefArt = {s = table {Sg => \\_ => IndefArticle ; Pl => \\_ => []} ; mod = Bare} ;
|
IndefArt = makeQuant IndefArticle [] Bare False ** {isDef = False} ;
|
||||||
|
|
||||||
MassNP cn = emptyNP ** cn ** {
|
MassNP cn = emptyNP ** cn ** {
|
||||||
s = \\m => cn.s ! Sg ! m ++ cn.compl ! Sg ;
|
s = \\m => cn.s ! Sg ! m ++ cn.compl ! Sg ;
|
||||||
a = agrP3 Sg ;
|
a = agrP3 Sg ;
|
||||||
|
takesYeAsComp = cn.hasAdj ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseN,
|
UseN,
|
||||||
@@ -109,20 +129,20 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
ComplN2 n2 np = n2 ** {
|
ComplN2 n2 np = n2 ** {
|
||||||
s = \\n,m => n2.s ! n ! Ezafe ;
|
s = \\n => replaceBare n2.c2.mod (n2.s ! n) ;
|
||||||
compl = \\_ => n2.compl ++ n2.c2 ++ np2str np ;
|
compl = \\_ => n2.compl ++ n2.c2.s ++ np2str np ;
|
||||||
hasAdj = False
|
hasAdj = False
|
||||||
};
|
};
|
||||||
|
|
||||||
ComplN3 n3 np = n3 ** {
|
ComplN3 n3 np = n3 ** {
|
||||||
s = \\n,m => n3.s ! n ! Ezafe ;
|
s = \\n => replaceBare n3.c2.mod (n3.s ! n) ;
|
||||||
compl = n3.c2 ++ np2str np ;
|
compl = n3.c2.s ++ np2str np ;
|
||||||
c = n3.c3;
|
c = n3.c3;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdjCN ap cn = cn ** {
|
AdjCN ap cn = cn ** {
|
||||||
s = \\n,m => case ap.isPre of {
|
s = \\n,m => case ap.isPre of {
|
||||||
True => ap.s ! Bare ++ cn.s ! n ! m ; -- TODO check mod of ap
|
True => ap.s ! Bare ++ cn.s ! n ! m ;
|
||||||
False => cn.s ! n ! Ezafe ++ ap.s ! m } ;
|
False => cn.s ! n ! Ezafe ++ ap.s ! m } ;
|
||||||
hasAdj = True
|
hasAdj = True
|
||||||
} ;
|
} ;
|
||||||
@@ -144,6 +164,6 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
|||||||
|
|
||||||
-- : CN -> NP -> CN ; -- house of Paris, house of mine
|
-- : CN -> NP -> CN ; -- house of Paris, house of mine
|
||||||
PossNP cn np = cn ** {
|
PossNP cn np = cn ** {
|
||||||
s = \\n,m => cn.s ! n ! Ezafe ; -- TODO or here for "<house of mine> <on the hill>"
|
s = \\n => replaceBare Ezafe (cn.s ! n) ; -- alternative: place np2str np here for "<house of mine> <on the hill>"
|
||||||
compl = \\n => cn.compl ! n ++ np2str np } ; -- "<house> <on the hill of mine>"
|
compl = \\n => cn.compl ! n ++ np2str np } ; -- "<house> <on the hill of mine>"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ lin pot3plus n m = {
|
|||||||
} ;
|
} ;
|
||||||
-}
|
-}
|
||||||
D_0 = mkDig "0" ;
|
D_0 = mkDig "0" ;
|
||||||
D_1 = mk3Dig "1" "" Pl;
|
D_1 = mk3Dig "1" "" Sg ;
|
||||||
D_2 = mk2Dig "2" "";
|
D_2 = mk2Dig "2" "";
|
||||||
D_3 = mk2Dig "3" "سوم" ;
|
D_3 = mk2Dig "3" "سوم" ;
|
||||||
D_4 = mkDig "4" ;
|
D_4 = mkDig "4" ;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ oper
|
|||||||
Mod : Type ; -- Argument to mkDet and mkPrep
|
Mod : Type ; -- Argument to mkDet and mkPrep
|
||||||
ezafe : Mod ; -- e.g. mkPrep "برای" ezafe
|
ezafe : Mod ; -- e.g. mkPrep "برای" ezafe
|
||||||
-- poss : Mod ; -- TODO is this needed?
|
-- poss : Mod ; -- TODO is this needed?
|
||||||
--clitic : Mod ; -- TODO is this needed?
|
-- clitic : Mod ; -- TODO is this needed?
|
||||||
--2 Nouns
|
--2 Nouns
|
||||||
|
|
||||||
mkN : overload {
|
mkN : overload {
|
||||||
@@ -42,11 +42,13 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkN2 : overload {
|
mkN2 : overload {
|
||||||
mkN2 : (key : N) -> (to : Str) -> N2 -- Takes a noun and a complementiser, returns a N2.
|
mkN2 : (key : N) -> (to : Str) -> N2 ; -- Takes a noun and a complementiser as a string, returns a N2.
|
||||||
|
mkN2 : (key : N) -> (to : Prep) -> N2 -- Takes a noun and a complementiser as a Prep, returns a N2.
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkN3 : overload {
|
mkN3 : overload {
|
||||||
mkN3 : (distance : N) -> (from,to : Str) -> N3 -- Takes a noun and two complementisers, returns a N3.
|
mkN3 : (distance : N) -> (from,to : Str) -> N3 ; -- Takes a noun and two complementisers as strings, returns a N3.
|
||||||
|
mkN3 : (distance : N) -> (from,to : Prep) -> N3 -- Takes a noun and two complementisers as Preps, returns a N3.
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Compound Nouns
|
-- Compound Nouns
|
||||||
@@ -58,7 +60,7 @@ oper
|
|||||||
= mkCmpdNoun2 ; -- e.g. مأمور پلیس '/officer/ police'.
|
= mkCmpdNoun2 ; -- e.g. مأمور پلیس '/officer/ police'.
|
||||||
cmpdN : N -> N -> N -- Compound noun with ezafe (Nی N)
|
cmpdN : N -> N -> N -- Compound noun with ezafe (Nی N)
|
||||||
= \n1,n2 -> n1 ** {
|
= \n1,n2 -> n1 ** {
|
||||||
s = \\n,m => n1.s ! n ! Ezafe ++ n2.s ! n ! m ;
|
s = \\n,m => n1.s ! n ! Ezafe ++ n2.s ! Sg ! m ;
|
||||||
isCmpd = IsCmpd} ;
|
isCmpd = IsCmpd} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -70,11 +72,13 @@ oper
|
|||||||
|
|
||||||
mkDet = overload {
|
mkDet = overload {
|
||||||
mkDet : Str -> Number -> Det -- Takes a string, number (sg/pl) and returns a det which is not a numeral
|
mkDet : Str -> Number -> Det -- Takes a string, number (sg/pl) and returns a det which is not a numeral
|
||||||
= \s,n -> lin Det (makeDet s n False);
|
= \s,n -> lin Det (makeDet s n False False);
|
||||||
mkDet : Str -> Number -> Bool -> Det -- As above + a Boolean for whether the det is a numeral
|
mkDet : Str -> Number -> (isNum : Bool) -> Det -- As above + a Boolean for whether the det is a numeral
|
||||||
= \s,n,b -> lin Det (makeDet s n b) ;
|
= \s,n,b -> lin Det (makeDet s n b False) ;
|
||||||
mkDet : Str -> Number -> Bool -> Mod -> Det -- As above + Mod for which form the determiner expects its argument to be (default bare)
|
mkDet : Str -> Number -> (isNum, isNeg : Bool) -> Det -- As above + a Boolean for whether the det is negative
|
||||||
= \s,n,b,m -> lin Det (makeDet s n b ** {mod=m})
|
= \s,n,nu,ne -> lin Det (makeDet s n nu ne) ;
|
||||||
|
mkDet : Str -> Number -> (isNum, isNeg : Bool) -> Mod -> Det -- As above + Mod for which form the determiner expects its argument to be (default bare)
|
||||||
|
= \s,n,nu,ne,m -> lin Det (makeDet s n nu ne ** {mod=m})
|
||||||
};
|
};
|
||||||
|
|
||||||
{-
|
{-
|
||||||
@@ -88,6 +92,7 @@ oper
|
|||||||
mkA : Str -> A ; -- Regular adjective, same form for adjective and adverb.
|
mkA : Str -> A ; -- Regular adjective, same form for adjective and adverb.
|
||||||
mkA : (adj,adv : Str) -> A -- Different forms for adjective and adverb.
|
mkA : (adj,adv : Str) -> A -- Different forms for adjective and adverb.
|
||||||
} ;
|
} ;
|
||||||
|
prefixA : A -> A ; -- Adjective that comes before the noun
|
||||||
|
|
||||||
mkA2 : (married,to : Str) -> A2 -- Takes string and complementiser, returns A2.
|
mkA2 : (married,to : Str) -> A2 -- Takes string and complementiser, returns A2.
|
||||||
= \a,c -> lin A2 (mkAdj a a ** {c2 = c}) ;
|
= \a,c -> lin A2 (mkAdj a a ** {c2 = c}) ;
|
||||||
@@ -112,6 +117,8 @@ oper
|
|||||||
= lin V M.haveVerb ;
|
= lin V M.haveVerb ;
|
||||||
beVerb : V -- The verb "be", to be used for light verb constructions: e.g. compoundV "عاشق" beVerb.
|
beVerb : V -- The verb "be", to be used for light verb constructions: e.g. compoundV "عاشق" beVerb.
|
||||||
= lin V M.beVerb ;
|
= lin V M.beVerb ;
|
||||||
|
doVerb : V -- The verb "do", to be used for light verb constructions. In passive, is replaced by شدن.
|
||||||
|
= lin V M.doVerb ;
|
||||||
|
|
||||||
mkV2 : overload {
|
mkV2 : overload {
|
||||||
mkV2 : Str -> V2 ; -- Predictable V2 out of string. No preposition, را for direct object.
|
mkV2 : Str -> V2 ; -- Predictable V2 out of string. No preposition, را for direct object.
|
||||||
@@ -121,7 +128,7 @@ oper
|
|||||||
|
|
||||||
mkV3 = overload {
|
mkV3 = overload {
|
||||||
mkV3 : Str -> V3 -- Predictable V3, را for direct object, no prepositions.
|
mkV3 : Str -> V3 -- Predictable V3, را for direct object, no prepositions.
|
||||||
= \s -> lin V3 (regV s ** {c2 = prepOrRa "را" ; c3 = prepOrRa []}) ;
|
= \s -> lin V3 (regV s ** {c2 = prepOrRa "را" ; c3 = noPrep}) ;
|
||||||
mkV3 : V -> (dir,indir : Str) -> V3 -- Takes a verb and two prepositions or را as strings (can be empty).
|
mkV3 : V -> (dir,indir : Str) -> V3 -- Takes a verb and two prepositions or را as strings (can be empty).
|
||||||
= \v,p,q -> lin V3 (v ** {c2 = prepOrRa p ; c3 = prepOrRa q}) ;
|
= \v,p,q -> lin V3 (v ** {c2 = prepOrRa p ; c3 = prepOrRa q}) ;
|
||||||
mkV3 : V -> (dir,indir : Prep) -> V3 -- Takes a verb and two prepositions
|
mkV3 : V -> (dir,indir : Prep) -> V3 -- Takes a verb and two prepositions
|
||||||
@@ -137,18 +144,20 @@ oper
|
|||||||
|
|
||||||
mkVA = overload {
|
mkVA = overload {
|
||||||
mkVA : Str -> VA -- predictable verb with adjective complement
|
mkVA : Str -> VA -- predictable verb with adjective complement
|
||||||
= \s -> lin VA (regV s ** {c2 = prepOrRa []}) ;
|
= \s -> lin VA (regV s ** {c2 = noPrep}) ;
|
||||||
mkVA : V -> VA -- VA out of a verb
|
mkVA : V -> VA -- VA out of a verb
|
||||||
= \v -> lin VA (v ** {c2 = prepOrRa []}) ;
|
= \v -> lin VA (v ** {c2 = noPrep}) ;
|
||||||
mkVA : V -> Prep -> VA -- VA out of a verb and preposition
|
mkVA : V -> Prep -> VA -- VA out of a verb and preposition
|
||||||
= \v,p -> lin VA (v ** {c2 = p}) ;
|
= \v,p -> lin VA (v ** {c2 = p}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkVS = overload {
|
mkVS = overload {
|
||||||
mkVS : Str -> VS -- predictable verb with sentence complement
|
mkVS : Str -> VS -- predictable verb with sentence complement in subjunctive.
|
||||||
= \s -> lin VS (regV s) ;
|
= \s -> lin VS (regV s ** {compl=subjunctive}) ;
|
||||||
mkVS : V -> VS -- VS out of a verb
|
mkVS : V -> VS -- VS out of a verb, sentence complement in subjunctive.
|
||||||
= \v -> lin VS v
|
= \v -> lin VS (v ** {compl=subjunctive}) ;
|
||||||
|
mkVS : VVForm -> V -> VS -- sentence complement given as argument
|
||||||
|
= \vvf,v -> lin VS (v ** {compl=vvf}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkVV = overload {
|
mkVV = overload {
|
||||||
@@ -162,6 +171,21 @@ oper
|
|||||||
= \isAux,vvf,v -> v ** {isAux = isAux ; compl = vvf ; isDef = False}
|
= \isAux,vvf,v -> v ** {isAux = isAux ; compl = vvf ; isDef = False}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
defVV : VV -> VV = \vv -> vv ** {isDef=True} ;
|
||||||
|
|
||||||
|
mkV2S = overload {
|
||||||
|
mkV2S : Str -> V2S -- predictable morphology, direct object with را, sentence complement in subjunctive.
|
||||||
|
= \s -> lin V2S (regV s ** {compl=subjunctive ; c2 = prepOrRa "را"}) ;
|
||||||
|
mkV2S : V -> V2S -- direct object with را, sentence complement in subjunctive.
|
||||||
|
= \v -> lin V2S (v ** {compl=subjunctive ; c2 = prepOrRa "را"}) ;
|
||||||
|
mkV2S : Prep -> VVForm -> V -> V2S -- direct object and mood for sentence complement as arguments.
|
||||||
|
= \prep,vvf,v -> lin V2S (v ** {compl=vvf ; c2 = prep}) ;
|
||||||
|
mkV2S : V2 -> V2S -- direct object given by V2, sentence complement in subjunctive.
|
||||||
|
= \v2 -> lin V2S (v2 ** {compl=subjunctive}) ;
|
||||||
|
mkV2S : VS -> V2S -- direct object with را, sentence complement given by VS.
|
||||||
|
= \vs -> lin V2S (vs ** {c2 = prepOrRa "را"})
|
||||||
|
} ;
|
||||||
|
|
||||||
mkV2V = overload {
|
mkV2V = overload {
|
||||||
mkV2V : V -> (cN : Str) -> (isAux : Bool) -> V2V -- Verb, complementiser for the noun, whether it's auxiliary.
|
mkV2V : V -> (cN : Str) -> (isAux : Bool) -> V2V -- Verb, complementiser for the noun, whether it's auxiliary.
|
||||||
= \v,s,b -> let vv : VV = mkVV b subjunctive v in
|
= \v,s,b -> let vv : VV = mkVV b subjunctive v in
|
||||||
@@ -181,9 +205,9 @@ oper
|
|||||||
|
|
||||||
mkPrep = overload {
|
mkPrep = overload {
|
||||||
mkPrep : Str -> Prep -- Takes a string, returns a preposition.
|
mkPrep : Str -> Prep -- Takes a string, returns a preposition.
|
||||||
= \str -> lin Prep {s = str ; ra = [] ; mod = Bare} ;
|
= \str -> lin Prep (prepOrRa str) ;
|
||||||
mkPrep : Str -> Mod -> Prep -- Takes a string and Mod (so far only option is ezafe), returns a preposition.
|
mkPrep : Str -> Mod -> Prep -- Takes a string and Mod (so far only option is ezafe), returns a preposition.
|
||||||
= \str,m -> lin Prep {s = str ; ra = [] ; mod=m}
|
= \str,m -> lin Prep ((prepOrRa str) ** {mod=m})
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{-
|
{-
|
||||||
@@ -209,11 +233,14 @@ oper
|
|||||||
|
|
||||||
mkSubj = overload {
|
mkSubj = overload {
|
||||||
mkSubj : Str -> Subj -- Takes its verbal complement in indicative.
|
mkSubj : Str -> Subj -- Takes its verbal complement in indicative.
|
||||||
= \s -> lin Subj {s=s ; compl=indicative} ;
|
= \s -> mkSubj' s ;
|
||||||
mkSubj : VVForm -> Str -> Subj -- Specify whether it takes complement in subjunctive or indicative.
|
mkSubj : VVForm -> Str -> Subj -- Specify whether it takes complement in subjunctive or indicative.
|
||||||
= \vvf,s -> lin Subj {s=s ; compl=vvf}
|
= \vvf,s -> mkSubj' s ** {compl=vvf}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkInterj : Str -> Interj
|
||||||
|
= \s -> lin Interj {s=s} ;
|
||||||
|
|
||||||
--.
|
--.
|
||||||
--2 Definitions of paradigms
|
--2 Definitions of paradigms
|
||||||
|
|
||||||
@@ -238,6 +265,13 @@ oper
|
|||||||
Mod = ResPes.Mod ;
|
Mod = ResPes.Mod ;
|
||||||
ezafe = ResPes.Ezafe ;
|
ezafe = ResPes.Ezafe ;
|
||||||
|
|
||||||
|
|
||||||
|
mkSubj' : Str -> Subj ;
|
||||||
|
mkSubj' s = lin Subj (case s of {
|
||||||
|
"آن" => {s = [] ; relpron = Ance ; compl = indicative} ;
|
||||||
|
_ => {s = s ; relpron = Ke ; compl = indicative}
|
||||||
|
}) ;
|
||||||
|
|
||||||
-- Removed mkV_1, mkV_2, mkN01 and mkN02 from public API, still available for
|
-- Removed mkV_1, mkV_2, mkN01 and mkN02 from public API, still available for
|
||||||
-- any applications that open ParadigmsPes. /IL 2019-02-08
|
-- any applications that open ParadigmsPes. /IL 2019-02-08
|
||||||
mkV_1 : Str -> V
|
mkV_1 : Str -> V
|
||||||
@@ -289,15 +323,23 @@ oper
|
|||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : Str -> A -- Regular adjective, same adj and adv forms.
|
mkA : Str -> A -- Regular adjective, same adj and adv forms.
|
||||||
= \str -> lin A (mkAdj str str);
|
= \str -> lin A (mkAdj str str) ;
|
||||||
mkA : Str-> Str -> A -- Takes adj and adv forms
|
mkA : Str-> Str -> A -- Takes adj and adv forms
|
||||||
= \str,adv -> lin A (mkAdj str adv);
|
= \str,adv -> lin A (mkAdj str adv);
|
||||||
|
mkA : (pos,compar,adv : Str) -> A -- positive, comparative and adverb
|
||||||
|
= \p,c,adv -> lin A (mkAdj p c adv);
|
||||||
mkA : Str -> Str -> A2 -- Takes string and complementiser, returns A2. Hidden from public API, confusing naming. /IL
|
mkA : Str -> Str -> A2 -- Takes string and complementiser, returns A2. Hidden from public API, confusing naming. /IL
|
||||||
= \a,c -> lin A2 (mkAdj a a ** {c2 = c})
|
= \a,c -> lin A2 (mkAdj a a ** {c2 = c})
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- Mostly for things that are not really adjectives, like adverbials /IL
|
||||||
|
invarA : Str -> A = \str ->
|
||||||
|
lin A (<mkAdj str str : Adjective> ** {s = \\_,_ => str}) ;
|
||||||
|
|
||||||
|
prefixA a = a ** {isPre=True};
|
||||||
|
|
||||||
preA : (adj,adv : Str) -> A = \adj,adv ->
|
preA : (adj,adv : Str) -> A = \adj,adv ->
|
||||||
lin A ((mkAdj adj adv) ** {isPre=True}) ;
|
lin A (<mkAdj adj adv:Adjective> ** {isPre=True}) ;
|
||||||
|
|
||||||
{-
|
{-
|
||||||
-- Demonstrative Pronouns
|
-- Demonstrative Pronouns
|
||||||
@@ -320,7 +362,10 @@ oper
|
|||||||
-- hidden from public API
|
-- hidden from public API
|
||||||
compoundV = overload {
|
compoundV = overload {
|
||||||
compoundV : Str -> V -> V
|
compoundV : Str -> V -> V
|
||||||
= \s,v -> v ** {prefix = s} ;
|
= \s,v -> v ** {
|
||||||
|
prefix = s ;
|
||||||
|
lightverb = case v.lightverb of {Kardan => Kardan ; _ => Light}
|
||||||
|
} ;
|
||||||
compoundV : Str -> V2 -> V -- hidden from public API
|
compoundV : Str -> V2 -> V -- hidden from public API
|
||||||
= \s,v -> lin V (v ** {prefix = s}) ;
|
= \s,v -> lin V (v ** {prefix = s}) ;
|
||||||
};
|
};
|
||||||
@@ -343,39 +388,50 @@ oper
|
|||||||
mkV2 : V -> Str -> V2
|
mkV2 : V -> Str -> V2
|
||||||
= \v,ra -> lin V2 (v ** {c2 = prepOrRa ra}) ;
|
= \v,ra -> lin V2 (v ** {c2 = prepOrRa ra}) ;
|
||||||
mkV2 : V -> Str -> Bool -> V2
|
mkV2 : V -> Str -> Bool -> V2
|
||||||
= \v,p,b -> lin V2 (v ** {c2 = {ra = [] ; s = p ; mod=Bare}}) ;
|
= \v,p,b -> lin V2 (v ** {c2 = prepOrRa p}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
prepOrRa : Str -> Compl = \s -> case s of {
|
prepOrRa : Str -> Compl = \s -> case s of {
|
||||||
"را" => {s = [] ; ra = "را" ; mod=Bare} ;
|
ra@("را"|"")
|
||||||
prep => {s = prep ; ra = []; mod=Bare}
|
=> {s = [] ; ra = ra ; mod=Bare ; isPrep = False} ;
|
||||||
|
prep => {s = prep ; ra = [] ; mod=Bare ; isPrep = True}
|
||||||
} ;
|
} ;
|
||||||
|
noPrep = prepOrRa [] ;
|
||||||
|
|
||||||
mkPost : Str -> Prep = \s -> lin Prep {s=[] ; ra=s ; mod=Bare} ;
|
-- NB. The 'mod' field has different meaning for verbs and N2s.
|
||||||
|
ezafeForN2 = {s = [] ; ra = [] ; mod=Ezafe ; isPrep = False} ;
|
||||||
|
|
||||||
|
mkPost : Str -> Prep = \s -> lin Prep {s=[] ; ra=s ; mod=Bare ; isPrep = False} ;
|
||||||
|
|
||||||
mkN2 = overload {
|
mkN2 = overload {
|
||||||
mkN2 : Str -> N2 -- Predictable N2 without complement
|
mkN2 : Str -> N2 -- Predictable N2 without complement
|
||||||
= \s -> lin N2 (mkN01 s inanimate ** {c2,compl = []}) ;
|
= \s -> lin N2 (mkN01 s inanimate ** {c2 = ezafeForN2 ; compl = []}) ;
|
||||||
mkN2 : N -> N2 -- N2 from without complement
|
mkN2 : N -> N2 -- N2 from without complement
|
||||||
= \n -> lin N2 (n ** {c2,compl = []}) ;
|
= \n -> lin N2 (n ** {c2 = ezafeForN2 ; compl = []}) ;
|
||||||
mkN2 : N -> Str -> N2
|
mkN2 : N -> Str -> N2
|
||||||
= \n,c -> lin N2 (n ** {c2 = c ; compl = []}) ;
|
= \n,c -> lin N2 (n ** {c2 = prepOrRa c ; compl = []}) ;
|
||||||
mkN2 : N -> Prep -> Str -> N2 -- hidden from puclic API
|
mkN2 : N -> Prep -> Str -> N2 -- hidden from puclic API
|
||||||
= \n,p,c -> lin N2 (n ** {c2 = p.s; compl = []})
|
= \n,p,c -> lin N2 (n ** {c2 = p; compl = []})
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkN3 = overload {
|
mkN3 = overload {
|
||||||
mkN3 : N -> Str -> Str -> N3
|
mkN3 : N -> Str -> Str -> N3
|
||||||
|
= \n,p,q -> lin N3 (n ** {c2 = prepOrRa p ; c3 = prepOrRa q}) ;
|
||||||
|
mkN3 : N -> Prep -> Prep -> N3
|
||||||
= \n,p,q -> lin N3 (n ** {c2 = p ; c3 = q}) ;
|
= \n,p,q -> lin N3 (n ** {c2 = p ; c3 = q}) ;
|
||||||
mkN3 : N -> Prep -> Str -> Str -> N3 -- hidden from public API
|
mkN3 : N -> Prep -> Str -> Str -> N3 -- hidden from public API
|
||||||
= \n,p,q,r -> lin N3 (n ** {c2 = p.s ; c3 = q ; c4 = r}) -- there is no c4
|
= \n,p,q,r -> lin N3 (n ** {c2 = p ; c3 = prepOrRa q ; c4 = r}) -- there is no c4
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
mkQuant = overload {
|
mkQuant = overload {
|
||||||
-- mkQuant : Pron -> Quant = \p -> {s = \\_,_,c => p.s!c ;a = p.a ; lock_Quant = <>};
|
-- mkQuant : Pron -> Quant = \p -> {s = \\_,_,c => p.s!c ;a = p.a ; lock_Quant = <>};
|
||||||
mkQuant : Str -> Str -> Quant -- hidden from public API
|
mkQuant : Str -> Str -> Quant -- hidden from public API
|
||||||
= \sg,pl -> makeQuant sg pl;
|
= \sg,pl -> makeQuant sg pl Bare False;
|
||||||
|
mkQuant : Str -> Str -> (isNeg : Bool) -> Quant -- hidden from public API
|
||||||
|
= \sg,pl,isneg -> makeQuant sg pl Bare isneg;
|
||||||
|
mkQuant : Str -> Str -> Mod -> (isNeg : Bool) -> Quant -- hidden from public API
|
||||||
|
= \sg,pl,mod,isneg -> makeQuant sg pl mod isneg;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ concrete PhrasePes of Phrase = CatPes ** open Prelude, ResPes in {
|
|||||||
lin
|
lin
|
||||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
UttS s = {s = s.s ! Indic} ;
|
UttS s = {s = s.s ! Indic} ;
|
||||||
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False} ;
|
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg} ;
|
||||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False} ;
|
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
|
||||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True} ;
|
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
|
||||||
|
|
||||||
UttIP, --- Acc also
|
UttIP, --- Acc also
|
||||||
UttQS,
|
UttQS,
|
||||||
@@ -16,7 +16,7 @@ concrete PhrasePes of Phrase = CatPes ** open Prelude, ResPes in {
|
|||||||
UttNP np = {s = np2str np} ;
|
UttNP np = {s = np2str np} ;
|
||||||
UttCN cn = {s = cn2str cn};
|
UttCN cn = {s = cn2str cn};
|
||||||
UttAP ap = {s = ap.s ! Bare} ;
|
UttAP ap = {s = ap.s ! Bare} ;
|
||||||
UttVP vp = {s = showVPH Inf defaultAgr vp} ;
|
UttVP vp = {s = infVP vp} ;
|
||||||
|
|
||||||
PConjConj conj = {s = conj.s2} ;
|
PConjConj conj = {s = conj.s2} ;
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
|
|||||||
CardOrd = NCard | NOrd ;
|
CardOrd = NCard | NOrd ;
|
||||||
RAgr = RNoAg | RAg Agr ;
|
RAgr = RNoAg | RAg Agr ;
|
||||||
RelPron = Ance | Ke ; -- https://en.wiktionary.org/wiki/%D8%A2%D9%86%DA%86%D9%87
|
RelPron = Ance | Ke ; -- https://en.wiktionary.org/wiki/%D8%A2%D9%86%DA%86%D9%87
|
||||||
|
WordOrder = OV | VO ; -- for showVPH
|
||||||
|
|
||||||
oper
|
oper
|
||||||
CN : Type = Noun ** {
|
CN : Type = Noun ** {
|
||||||
@@ -29,8 +30,11 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
|
|||||||
|
|
||||||
BaseNP : Type = {
|
BaseNP : Type = {
|
||||||
a : Agr ;
|
a : Agr ;
|
||||||
hasAdj : Bool ; -- to get the right form when NP is a predicate
|
isNeg : Bool ; -- negative determiner forces negation in Cl and S
|
||||||
|
takesYeAsComp : Bool ; -- to get the right form when NP is a predicate
|
||||||
animacy : Animacy ; -- to get the right pronoun in FunRP
|
animacy : Animacy ; -- to get the right pronoun in FunRP
|
||||||
|
isClitic : Bool ; -- if isPron, becomes clitic as a direct object
|
||||||
|
clitic : Str ;
|
||||||
relpron : RelPron ; -- contraction for "that which"
|
relpron : RelPron ; -- contraction for "that which"
|
||||||
empty : Str -- to prevent metavariables in case of rel.pron. contraction
|
empty : Str -- to prevent metavariables in case of rel.pron. contraction
|
||||||
} ;
|
} ;
|
||||||
@@ -39,8 +43,11 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
|
|||||||
emptyNP : NP = {
|
emptyNP : NP = {
|
||||||
s = \\_ => [] ;
|
s = \\_ => [] ;
|
||||||
a = defaultAgr ;
|
a = defaultAgr ;
|
||||||
hasAdj = False ;
|
isNeg = False ;
|
||||||
|
takesYeAsComp = False ;
|
||||||
animacy = Inanimate ;
|
animacy = Inanimate ;
|
||||||
|
isClitic = False ;
|
||||||
|
clitic = [] ;
|
||||||
relpron = Ke ;
|
relpron = Ke ;
|
||||||
empty = []
|
empty = []
|
||||||
} ;
|
} ;
|
||||||
@@ -67,16 +74,23 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
|
|||||||
-----------------------
|
-----------------------
|
||||||
param
|
param
|
||||||
VVType = NoVV | FullVV | DefVV ;
|
VVType = NoVV | FullVV | DefVV ;
|
||||||
VVForm = Indic | Subj ;
|
VVForm = Indic | Subj ; ---| SubjPast ; -- TODO extend this to VV, VS and Subj
|
||||||
VVTense = VVPres | VVPerf | VVPast ; -- VVPast Anteriority ???
|
VVTense = VVPres | VVPast VVForm ;
|
||||||
TAnt = TA Tense Anteriority ;
|
TAnt = Ind Tense Anteriority | Sub Anteriority ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
-- TODO: all forms
|
-- VVPast Subj is another possibility, used in constructions such as
|
||||||
ta2vvt : TAnt -> VVTense = \ta -> case ta of {
|
-- قاتل نمی توانسته آنجا بوده باشد، چون او آن زمان در پاریس بوده
|
||||||
TA Pres Anter => VVPerf ;
|
-- The form is created in complVV, but not currently used in other functions. /IL
|
||||||
TA Past _ => VVPast ;
|
ta2vvt : TAnt -> VVType -> VVTense = \ta,vvtype -> case ta of {
|
||||||
|
Ind Pres Anter |
|
||||||
|
Ind Past _ => VVPast Indic ;
|
||||||
|
Ind Cond Simul => VVPres ;
|
||||||
|
Ind Cond Anter =>
|
||||||
|
case vvtype of {
|
||||||
|
DefVV => VVPast Indic ;
|
||||||
|
_ => VVPres } ;
|
||||||
_ => VVPres } ;
|
_ => VVPres } ;
|
||||||
|
|
||||||
VV : Type = Verb ** {
|
VV : Type = Verb ** {
|
||||||
@@ -86,31 +100,40 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
VPH : Type = Verb ** {
|
VPH : Type = Verb ** {
|
||||||
comp : Agr => Str; -- complements of a verb, agr for ReflVP "I/you see myself/yourself" and CompCN "I am human/we are humans"
|
comp : Agr => WordOrder => Str; -- complements of a verb, agr for ReflVP "I/you see myself/yourself" and CompCN "I am human/we are humans"
|
||||||
vComp : Agr => VVTense => Str; -- when a verb is used as a complement of an auxiliary verb. Unlike ‘comp’ or ‘obj’, this type of complement follows the auxiliary verb.
|
vComp : Agr => VVTense => Str; -- when a verb is used as a complement of an auxiliary verb. Unlike ‘comp’ or ‘obj’, this type of complement follows the auxiliary verb.
|
||||||
obj : Str ; -- object of a verb; so far only used for A ("paint it black")
|
obj : Str ; -- object of a verb; so far only used for A ("paint it black")
|
||||||
ad : Str ;
|
ad : Str ;
|
||||||
|
isNeg : Bool ; -- whether the object is a negative NP: "*there is nothing" -> "there isn't nothing"
|
||||||
embComp : Str ; -- when a declarative or interrogative sentence is used as a complement of a verb.
|
embComp : Str ; -- when a declarative or interrogative sentence is used as a complement of a verb.
|
||||||
vvtype : VVType ; -- no VV, fully inflecting VV or defective VV
|
vvtype : VVType ; -- no VV, fully inflecting VV or defective VV
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
showVPH = overload {
|
showVPH = overload {
|
||||||
showVPH : VerbForm -> Agr -> VPH -> Str = showVPH' VVPres ;
|
showVPH : VerbForm -> Agr -> VPH -> Str = showVPH' OV False VVPres ;
|
||||||
showVPH : VVTense -> VerbForm -> Agr -> VPH -> Str = showVPH'
|
showVPH : VVTense -> VerbForm -> Agr -> VPH -> Str = showVPH' OV False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
showVPH' : VVTense -> VerbForm -> Agr -> VPH -> Str =
|
showVPHwithImpPrefix = showVPH' OV True VVPres ;
|
||||||
\ant,vf,agr,vp -> vp.ad ++ vp.comp ! agr ++ vp.obj
|
infVP = overload {
|
||||||
++ vp.prefix ++ vp.s ! vf
|
infVP : VPH -> Str = showVPH' VO False VVPres Inf defaultAgr ; -- word order VO, VerbForm infinitive
|
||||||
|
infVP : VerbForm -> VPH -> Str = \vf,vp -> showVPH' VO False VVPres vf defaultAgr vp -- VO as word order, but VerbForm can be any (e.g. present participle or perfect stem)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
showVPH' : WordOrder -> Bool -> VVTense -> VerbForm -> Agr -> VPH -> Str =
|
||||||
|
\wo,showImpPref,ant,vf,agr,vp ->
|
||||||
|
let impPref = case showImpPref of {
|
||||||
|
True => vp.s ! ImpPrefix Pos ;
|
||||||
|
False => [] }
|
||||||
|
in case wo of {
|
||||||
|
OV => vp.ad ++ vp.comp ! agr ! wo ++ vp.obj
|
||||||
|
++ vp.prefix ++ impPref ++ vp.s ! vf
|
||||||
++ vp.vComp ! agr ! ant ++ vp.embComp ;
|
++ vp.vComp ! agr ! ant ++ vp.embComp ;
|
||||||
|
VO => vp.prefix ++ vp.s ! vf ++ vp.ad
|
||||||
|
++ vp.comp ! agr ! wo ++ vp.obj ++ impPref
|
||||||
|
++ vp.vComp ! agr ! ant ++ vp.embComp } ;
|
||||||
|
|
||||||
-- A hack: we reuse the obj field for the VP complement in
|
Compl : Type = {s : Str ; ra : Str ; mod : Mod ; isPrep : Bool} ;
|
||||||
-- SlashV2V and this is needed to get the right word order for complVV.
|
|
||||||
showVPHvv : VerbForm -> Agr -> VPH -> Str = \vf,agr,vp ->
|
|
||||||
vp.comp ! agr ++ vp.prefix ++ vp.s ! vf -- vp.ad is missing on purpose! we add it in insertVV.
|
|
||||||
++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vp.embComp ;
|
|
||||||
|
|
||||||
Compl : Type = {s : Str ; ra : Str ; mod : Mod} ;
|
|
||||||
|
|
||||||
VPHSlash : Type = VPH ** {
|
VPHSlash : Type = VPH ** {
|
||||||
c2 : Compl ; -- prep or ra for the complement
|
c2 : Compl ; -- prep or ra for the complement
|
||||||
@@ -125,34 +148,50 @@ oper
|
|||||||
obj,
|
obj,
|
||||||
embComp = [];
|
embComp = [];
|
||||||
vvtype = NoVV ;
|
vvtype = NoVV ;
|
||||||
comp = \\_ => [] ;
|
isNeg = False ;
|
||||||
|
comp = \\_,_ => [] ;
|
||||||
vComp = \\_,_ => [] } ;
|
vComp = \\_,_ => [] } ;
|
||||||
|
|
||||||
predVc : (Verb ** {c2 : Compl}) -> VPHSlash = \verb ->
|
predVc : (Verb ** {c2 : Compl}) -> VPHSlash = \verb ->
|
||||||
predV verb ** vs verb.c2 ;
|
predV verb ** vs verb.c2 ;
|
||||||
|
|
||||||
---------------------
|
passV : Verb -> VPH = \v -> passVP (predV v) ;
|
||||||
|
|
||||||
|
passVP : VPH -> VPH = \vp -> vp ** {
|
||||||
|
s = becomeVerb.s ;
|
||||||
|
prefix = case vp.lightverb of {
|
||||||
|
Kardan => vp.prefix ;
|
||||||
|
_ => vp.s ! PerfStem ++ vp.prefix
|
||||||
|
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
-- ---------------------
|
||||||
-- VP complementation
|
-- VP complementation
|
||||||
---------------------
|
---------------------
|
||||||
appComp : Compl -> (Mod=>Str) -> Str = \c2,obj ->
|
appCompVP : Compl -> (Mod=>Str) -> (WordOrder=>Str) = \c2,obj ->
|
||||||
c2.s ++ obj ! c2.mod ++ c2.ra ;
|
\\wo => let ra = case wo of {VO => [] ; OV => c2.ra} in
|
||||||
|
case c2.mod of {
|
||||||
|
Ezafe => runtimeKasre c2.s ++ obj ! Bare ++ ra ;
|
||||||
|
_ => c2.s ++ obj ! c2.mod ++ ra } ;
|
||||||
|
|
||||||
|
-- for use outside VP, word order is redundant, ra should be retained.
|
||||||
|
appComp : Compl -> (Mod=>Str) -> Str = \c2,obj -> appCompVP c2 obj ! OV ;
|
||||||
|
|
||||||
insertComp : (Agr => Str) -> VPH -> VPH = \obj,vp -> vp ** {
|
insertComp : (Agr => Str) -> VPH -> VPH = \obj,vp -> vp ** {
|
||||||
comp = \\a => vp.comp ! a ++ obj ! a
|
comp = \\a,wo => vp.comp ! a ! wo ++ obj ! a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertCompPre : (Agr=>Mod=>Str) -> VPHSlash -> VPH = \obj,vp -> vp ** {
|
insertCompPre : (Agr=>Mod=>Str) -> VPHSlash -> VPH = \obj,vp -> vp ** {
|
||||||
comp = \\a => appComp vp.c2 (obj ! a) ++ vp.comp ! a
|
comp = \\a,wo => appCompVP vp.c2 (obj ! a) ! wo ++ vp.comp ! a ! wo
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertCompPost : (Agr=>Mod=>Str) -> VPHSlash -> VPH = \obj,vp -> vp ** {
|
insertCompPost : (Agr=>Mod=>Str) -> VPHSlash -> VPH = \obj,vp -> vp ** {
|
||||||
comp = \\a => vp.comp ! a ++ appComp vp.c2 (obj ! a)
|
comp = \\a,wo => vp.comp ! a ! wo ++ appCompVP vp.c2 (obj ! a) ! wo
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertVV : VV -> VPH -> VPH = \vv,vp -> predV vv ** {
|
insertVV : VV -> VPH -> VPH = \vv,vp -> predV vv ** {
|
||||||
vComp = \\a,t => vp.vComp ! a ! t ++ complVV vv vp ! a ! t ;
|
vComp = \\a,t => vp.vComp ! a ! t ++ complVV vv vp ! a ! t ;
|
||||||
vvType = case vv.isDef of {True => DefVV ; _ => FullVV} ;
|
vvtype = case vv.isDef of {True => DefVV ; _ => FullVV} ;
|
||||||
ad = vp.ad -- because complVV doesn't include ad! for word order.
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
embComp : Str -> VPH -> VPH = \str,vp -> vp ** {
|
embComp : Str -> VPH -> VPH = \str,vp -> vp ** {
|
||||||
@@ -164,8 +203,23 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
complSlash : VPHSlash -> NP -> VPH = \vp,np -> vp ** {
|
complSlash : VPHSlash -> NP -> VPH = \vp,np -> vp ** {
|
||||||
comp = \\a => appComp vp.c2 np.s ++ vp.comp ! a ;
|
comp = \\a,wo =>
|
||||||
obj = vp.obj ++ vp.agrObj ! np.a -- "beg her to buy", buy agrees with her
|
case <np.isClitic,vp.c2.isPrep> of {
|
||||||
|
<True,False> => [] ; -- clitic is attached to the verb or prefix
|
||||||
|
<True,True> => appCompVP vp.c2 (\\_ => BIND ++ np.clitic) ! wo ++ vp.comp ! a ! wo ;
|
||||||
|
_ => let nps : Mod=>Str = np.s ;
|
||||||
|
-- case np.takesYeAsComp of { True => replaceBare Clitic np.s ; -- TODO: later make a better rule, related to definiteness, when NP takes a clitic.
|
||||||
|
-- _ => np.s } ;
|
||||||
|
in appCompVP vp.c2 nps ! wo ++ vp.comp ! a ! wo
|
||||||
|
|
||||||
|
} ;
|
||||||
|
s = case <np.isClitic,vp.c2.isPrep> of {
|
||||||
|
<True,False> -- if it has no prep, the clitic is attached to the verb (or prefix, if it's a light verb).
|
||||||
|
=> (addClitic vp.lightverb np.clitic vp).s ;
|
||||||
|
_ => vp.s
|
||||||
|
} ;
|
||||||
|
obj = vp.obj ++ vp.agrObj ! np.a ; -- "beg her to buy", buy agrees with her
|
||||||
|
isNeg = np.isNeg
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
---- AR 14/9/2017 trying to fix isAux = True case by inserting conjThat
|
---- AR 14/9/2017 trying to fix isAux = True case by inserting conjThat
|
||||||
@@ -174,19 +228,23 @@ oper
|
|||||||
\\agr,ant => if_then_Str vv.isAux conjThat [] ++
|
\\agr,ant => if_then_Str vv.isAux conjThat [] ++
|
||||||
case <ant,vv.isDef,vv.compl> of {
|
case <ant,vv.isDef,vv.compl> of {
|
||||||
-- Auxiliaries with defective inflection: complement inflects in tense
|
-- Auxiliaries with defective inflection: complement inflects in tense
|
||||||
<VVPast,True,_> => showVPHvv (VPast Pos agr) agr vp ;
|
<VVPast Indic,True,> => showVPHwithImpPrefix (VPast Pos agr) agr vp ;
|
||||||
-- <VVPast Anter> => showVPH PerfStem agr vp ++ pluperfAux Pos agr ; -- TODO do we need this?
|
<VVPast Indic,_,_> => showVPH (VPast Pos agr) agr vp ;
|
||||||
<VVPerf,True,_> => showVPHvv PerfStem agr vp ++ subjAux Pos agr ;
|
<VVPast Subj> => showVPH PerfStem agr vp ++ subjAux Pos agr ;
|
||||||
|
|
||||||
-- Auxiliaries that take indicative (full or defective inflection)
|
-- Auxiliaries that take indicative (full or defective inflection)
|
||||||
<VVPres,_,Indic> => showVPHvv (VAor Pos agr) agr vp ;
|
<VVPres,_,Indic> => showVPH (VAor Pos agr) agr vp ;
|
||||||
|
|
||||||
-- Default: complement in subjunctive
|
-- Default: complement in subjunctive
|
||||||
_ => showVPHvv (VSubj Pos agr) agr vp ---- TODO more forms ?
|
_ => showVPH (VSubj Pos agr) agr vp
|
||||||
|
} ;
|
||||||
|
|
||||||
|
insertAdv : Str -> VPH -> VPH = \ad,vp -> vp ** {
|
||||||
|
ad = vp.ad ++ ad ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertAdV : Str -> VPH -> VPH = \ad,vp -> vp ** {
|
insertAdV : Str -> VPH -> VPH = \ad,vp -> vp ** {
|
||||||
ad = vp.ad ++ ad ;
|
ad = ad ++ vp.ad ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
conjThat : Str = "که" ;
|
conjThat : Str = "که" ;
|
||||||
@@ -198,31 +256,25 @@ oper
|
|||||||
SlClause : Type = {quest : Order => Str ; subj : Str ; vp : TAnt => Polarity => Order => Str} ;
|
SlClause : Type = {quest : Order => Str ; subj : Str ; vp : TAnt => Polarity => Order => Str} ;
|
||||||
---- AR 18/9/2017 intermediate SClause to preserve SOV in e.g. QuestionPes.QuestSlash
|
---- AR 18/9/2017 intermediate SClause to preserve SOV in e.g. QuestionPes.QuestSlash
|
||||||
|
|
||||||
-- TODO: check the VV forms with defective verbs
|
|
||||||
clTable : VPH -> (Agr => TAnt => Polarity => Str) = \vp ->
|
clTable : VPH -> (Agr => TAnt => Polarity => Str) = \vp ->
|
||||||
\\agr,vt,pol => vp.prefix ++ case vt of {
|
\\agr,vt,pol => vp.prefix ++ case vt of {
|
||||||
TA Pres Simul => vp.s ! ImpPrefix pol ++ vp.s ! VAor pol agr ; -- for reg. verbs, VAor pol is invariant and negation comes in ImpPrefix.
|
Ind Pres Simul => vp.s ! ImpPrefix pol ++ vp.s ! VAor pol agr ; -- for reg. verbs, VAor pol is invariant and negation comes in ImpPrefix.
|
||||||
TA Pres Anter => vp.s ! VPerf pol agr ;
|
Ind Pres Anter => vp.s ! VPerf pol agr ;
|
||||||
TA Past Simul => vp.s ! VPast pol agr ;
|
Ind Past Simul => vp.s ! VPast pol agr ; -- Past Simul: simple past
|
||||||
TA Past Anter =>
|
Ind Past Anter | Ind Cond _ => -- Past Anter & Cond _: continuous past
|
||||||
case vp.vvtype of {
|
case vp.vvtype of {
|
||||||
DefVV => vp.s ! ImpPrefix pol ++ vp.s ! VAor pol agr ;
|
DefVV => vp.s ! VPast pol agr ;
|
||||||
_ => vp.s ! PerfStem ++ pluperfAux pol agr } ;
|
_ => vp.s ! ImpPrefix pol ++ vp.s ! VPast Pos agr } ;
|
||||||
TA Fut Simul =>
|
Ind Fut Simul =>
|
||||||
case vp.vvtype of {
|
case vp.vvtype of {
|
||||||
DefVV => vp.s ! ImpPrefix pol ++ vp.s ! VAor pol agr ;
|
DefVV => vp.s ! ImpPrefix pol ++ vp.s ! VAor pol agr ;
|
||||||
_ => futAux pol agr ++ vp.s ! PastStem
|
_ => futAux pol agr ++ vp.s ! PastStem
|
||||||
} ; -- PastStem is, despite the name, used for future too. /IL
|
} ; -- PastStem is, despite the name, used for future too. /IL
|
||||||
TA Fut Anter =>
|
Ind Fut Anter =>
|
||||||
case vp.vvtype of {
|
case vp.vvtype of {
|
||||||
DefVV => vp.s ! VPerf pol agr ;
|
DefVV => vp.s ! VPerf pol agr ;
|
||||||
_ => "خواسته" ++ pluperfAux pol agr ++ vp.s ! PastStem
|
_ => futAux pol agr ++ vp.s ! PastStem } ;
|
||||||
} ; -- verb form need to be confirmed
|
Sub _ => vp.s ! VSubj pol agr -- TODO: anterior subjunctive ?
|
||||||
TA Cond Simul => vp.s ! VSubj pol agr ;
|
|
||||||
TA Cond Anter =>
|
|
||||||
case vp.vvtype of {
|
|
||||||
DefVV => vp.s ! VSubj pol agr ;
|
|
||||||
_ => vp.s ! PerfStem ++ subjAux pol agr } -- verb form to be confirmed
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkClause : NP -> VPH -> Clause = \np,vp ->
|
mkClause : NP -> VPH -> Clause = \np,vp ->
|
||||||
@@ -235,20 +287,25 @@ oper
|
|||||||
OQuest => "آیا" } ;
|
OQuest => "آیا" } ;
|
||||||
subj = np2str np ;
|
subj = np2str np ;
|
||||||
vp = \\ta,p,ord =>
|
vp = \\ta,p,ord =>
|
||||||
let vps = clTable vp ! np.a ! ta ! p ;
|
let pol = case orB np.isNeg vp.isNeg of {True => Neg ; _ => p} ;
|
||||||
vvt = ta2vvt ta ;
|
vps = clTable vp ! np.a ! ta ! pol ;
|
||||||
in vp.ad ++ vp.comp ! np.a ++ vp.obj ++ vps
|
vvt = ta2vvt ta vp.vvtype ;
|
||||||
++ vp.vComp ! np.a ! vvt ++ vp.embComp
|
in case vp.vvtype of {
|
||||||
|
DefVV
|
||||||
|
=> vps ++ vp.ad ++ vp.comp ! np.a ! OV ++ vp.obj
|
||||||
|
++ vp.vComp ! np.a ! vvt ++ vp.embComp ;
|
||||||
|
_ => vp.ad ++ vp.comp ! np.a ! OV ++ vp.obj ++ vps
|
||||||
|
++ vp.vComp ! np.a ! vvt ++ vp.embComp }
|
||||||
};
|
};
|
||||||
|
|
||||||
--Clause : Type = {s : TAnt => Polarity => Order => Str} ;
|
--Clause : Type = {s : TAnt => Polarity => Order => Str} ;
|
||||||
mkSClause : Str -> Agr -> VPH -> Clause = \subj,agr,vp -> {
|
mkSClause : Str -> Agr -> VPH -> Clause = \subj,agr,vp -> {
|
||||||
s = \\ta,p,ord =>
|
s = \\ta,p,ord =>
|
||||||
let vps = clTable vp ! agr ! ta ! p ;
|
let pol = case vp.isNeg of {True => Neg ; _ => p} ;
|
||||||
|
vps = clTable vp ! agr ! ta ! pol ;
|
||||||
quest = case ord of { ODir => [] ; OQuest => "آیا" } ;
|
quest = case ord of { ODir => [] ; OQuest => "آیا" } ;
|
||||||
vvt = ta2vvt ta ;
|
vvt = ta2vvt ta vp.vvtype ;
|
||||||
in quest ++ subj ++ vp.ad ++ vp.comp ! agr ++ vp.obj
|
in quest ++ subj ++ vp.ad ++ vp.comp ! agr ! OV ++ vp.obj
|
||||||
-- in quest ++ vp.ad ++ subj ++ vp.comp ! agr ++ vp.obj -- TODO check which word order is better /IL
|
|
||||||
++ vps ++ vp.vComp ! agr ! vvt ++ vp.embComp
|
++ vps ++ vp.vComp ! agr ! vvt ++ vp.embComp
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,15 +7,15 @@ concrete SentencePes of Sentence = CatPes ** open Prelude, ResPes,Predef in {
|
|||||||
|
|
||||||
PredVP np vp = mkClause np vp ;
|
PredVP np vp = mkClause np vp ;
|
||||||
|
|
||||||
PredSCVP sc vp = mkSClause ("این" ++ sc.s) defaultAgr vp ;
|
PredSCVP sc vp = mkSClause sc.s defaultAgr vp ;
|
||||||
|
|
||||||
ImpVP vp = {
|
ImpVP vp = {
|
||||||
s = \\pol,n =>
|
s = \\pol,n =>
|
||||||
let agr = Ag (numImp n) P2 ;
|
let agr = Ag n P2 ;
|
||||||
vps = vp.prefix ++ vp.s ! VImp pol (numImp n)
|
vps = vp.prefix ++ vp.s ! VImp pol n
|
||||||
in case vp.vvtype of {
|
in case vp.vvtype of {
|
||||||
NoVV => vp.ad ++ vp.comp ! agr ++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vps ++ vp.embComp ;
|
NoVV => vp.ad ++ vp.comp ! agr ! OV ++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vps ++ vp.embComp ;
|
||||||
_ => vps ++ vp.ad ++ vp.comp ! agr ++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vp.embComp }
|
_ => vps ++ vp.ad ++ vp.comp ! agr ! OV {-TODO check if legit-} ++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vp.embComp }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SlashVP np vp =
|
SlashVP np vp =
|
||||||
@@ -38,27 +38,27 @@ concrete SentencePes of Sentence = CatPes ** open Prelude, ResPes,Predef in {
|
|||||||
|
|
||||||
EmbedS s = {s = conjThat ++ s.s ! Indic} ;
|
EmbedS s = {s = conjThat ++ s.s ! Indic} ;
|
||||||
EmbedQS qs = qs ;
|
EmbedQS qs = qs ;
|
||||||
EmbedVP vp = {s = showVPH Inf defaultAgr vp} ; --- agr
|
EmbedVP vp = {s = infVP vp} ; --- agr
|
||||||
|
|
||||||
|
|
||||||
UseCl temp p cl = {
|
UseCl temp p cl = {
|
||||||
s = \\vvf => temp.s ++ p.s ++ case vvf of {
|
s = \\vvf => temp.s ++ p.s ++ case vvf of {
|
||||||
Indic => cl.s ! TA temp.t temp.a ! p.p ! ODir ;
|
Indic => cl.s ! Ind temp.t temp.a ! p.p ! ODir ;
|
||||||
Subj => cl.s ! TA Cond temp.a ! p.p ! ODir }
|
Subj => cl.s ! Sub temp.a ! p.p ! ODir }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseQCl temp p qcl = let vt = TA temp.t temp.a in {
|
UseQCl temp p qcl = let vt = Ind temp.t temp.a in {
|
||||||
s = temp.s ++ p.s ++ qcl.s ! vt ! p.p ;
|
s = temp.s ++ p.s ++ qcl.s ! vt ! p.p ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseRCl temp p rcl = let vt = TA temp.t temp.a in rcl ** {
|
UseRCl temp p rcl = let vt = Ind temp.t temp.a in rcl ** {
|
||||||
s = \\a => temp.s ++ p.s ++ rcl.s ! vt ! p.p ! a
|
s = \\a => temp.s ++ p.s ++ rcl.s ! vt ! p.p ! a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseSlash temp p cls = cls ** {
|
UseSlash temp p cls = cls ** {
|
||||||
s = \\vvf => temp.s ++ p.s ++ cls.subj ++ case vvf of {
|
s = \\vvf => temp.s ++ p.s ++ cls.subj ++ case vvf of {
|
||||||
Indic => cls.vp ! TA temp.t temp.a ! p.p ! ODir ;
|
Indic => cls.vp ! Ind temp.t temp.a ! p.p ! ODir ;
|
||||||
Subj => cls.vp ! TA Cond temp.a ! p.p ! ODir }
|
Subj => cls.vp ! Sub temp.a ! p.p ! ODir }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdvS a s = {s = \\vvf => a.s ++ s.s ! vvf} ;
|
AdvS a s = {s = \\vvf => a.s ++ s.s ! vvf} ;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ concrete StructuralPes of Structural = CatPes **
|
|||||||
lin
|
lin
|
||||||
above_Prep = mkPrep "بالای" ;
|
above_Prep = mkPrep "بالای" ;
|
||||||
after_Prep = mkPrep ["بعد از"] ;
|
after_Prep = mkPrep ["بعد از"] ;
|
||||||
all_Predet = ss ["همه ی"] ;
|
all_Predet = ss (zwnj "همه" "ی") ;
|
||||||
almost_AdA, almost_AdN = ss "تقریباً" ;
|
almost_AdA, almost_AdN = ss "تقریباً" ;
|
||||||
although_Subj = mkSubj "با وجود این" ;
|
although_Subj = mkSubj "با وجود این" ;
|
||||||
always_AdV = ss "همیشه" ;
|
always_AdV = ss "همیشه" ;
|
||||||
@@ -21,12 +21,12 @@ concrete StructuralPes of Structural = CatPes **
|
|||||||
by8agent_Prep = mkPrep "توسط" ;
|
by8agent_Prep = mkPrep "توسط" ;
|
||||||
by8means_Prep = mkPrep "با" ;
|
by8means_Prep = mkPrep "با" ;
|
||||||
-- can8know_VV,can_VV = mkVV (mkV "سکن") ;
|
-- can8know_VV,can_VV = mkVV (mkV "سکن") ;
|
||||||
can_VV = mkVV (mkV_1 "توانستن") ; ---- AR
|
can_VV = let isAux = False in mkVV isAux subjunctive (mkV_1 "توانستن") ; ---- AR
|
||||||
during_Prep = mkPrep ["در طول"] ;
|
during_Prep = mkPrep ["در طول"] ;
|
||||||
either7or_DConj = sd2 "یا" "یا" ** {n = Sg} ;
|
either7or_DConj = sd2 "یا" "یا" ** {n = Sg} ;
|
||||||
-- everybody_NP = R.indeclNP "هر کwی";
|
-- everybody_NP = R.indeclNP "هر کwی";
|
||||||
every_Det = mkDet "هر" Sg ;
|
every_Det = mkDet "هر" Sg ;
|
||||||
-- everything_NP = R.indeclNP ["هر XE"]));
|
everything_NP = DetCN (mkDet "همه" Sg) (UseN (mkN "چیز")) ;
|
||||||
everywhere_Adv = ss ["هر جا"] ;
|
everywhere_Adv = ss ["هر جا"] ;
|
||||||
few_Det = mkDet ["تعداد کمی"] Pl True; -- check
|
few_Det = mkDet ["تعداد کمی"] Pl True; -- check
|
||||||
for_Prep = mkPrep "برای" Ezafe ;
|
for_Prep = mkPrep "برای" Ezafe ;
|
||||||
@@ -44,7 +44,7 @@ concrete StructuralPes of Structural = CatPes **
|
|||||||
in_Prep = mkPrep "در" ;
|
in_Prep = mkPrep "در" ;
|
||||||
it_Pron = R.agr2pron ! Ag Sg P3;
|
it_Pron = R.agr2pron ! Ag Sg P3;
|
||||||
less_CAdv = {s = "کمتر" ; p = ""} ;
|
less_CAdv = {s = "کمتر" ; p = ""} ;
|
||||||
many_Det = mkDet "بسیار" Pl False Ezafe ;
|
many_Det = let isNum, isNeg = False in mkDet "بسیار" Pl isNum isNeg Ezafe ;
|
||||||
more_CAdv = {s = "بیشتر" ; p = "" } ;
|
more_CAdv = {s = "بیشتر" ; p = "" } ;
|
||||||
most_Predet = ss "اکثر";
|
most_Predet = ss "اکثر";
|
||||||
much_Det = mkDet ["مقدار زیادی"] Pl ;
|
much_Det = mkDet ["مقدار زیادی"] Pl ;
|
||||||
@@ -57,9 +57,9 @@ concrete StructuralPes of Structural = CatPes **
|
|||||||
only_Predet = ss "فقط" ;
|
only_Predet = ss "فقط" ;
|
||||||
or_Conj = sd2 [] "یا" ** {n = Sg} ;
|
or_Conj = sd2 [] "یا" ** {n = Sg} ;
|
||||||
otherwise_PConj = ss ["درغیراین صورت"] ;
|
otherwise_PConj = ss ["درغیراین صورت"] ;
|
||||||
part_Prep = mkPrep "از" ; -- TODO: the object following it should be in Ezafa form
|
part_Prep = mkPrep "از" Ezafe ;
|
||||||
please_Voc = ss "لطفاً" ;
|
please_Voc = ss "لطفاً" ;
|
||||||
possess_Prep = mkPrep "" ; -- will be handeled in Ezafeh
|
possess_Prep = mkPrep [] Ezafe ;
|
||||||
quite_Adv = ss "کاملاً" ;
|
quite_Adv = ss "کاملاً" ;
|
||||||
she_Pron = R.agr2pron ! Ag Sg P3 ;
|
she_Pron = R.agr2pron ! Ag Sg P3 ;
|
||||||
so_AdA = ss "بسیار" ;
|
so_AdA = ss "بسیار" ;
|
||||||
@@ -101,12 +101,12 @@ concrete StructuralPes of Structural = CatPes **
|
|||||||
youSg_Pron = R.agr2pron ! Ag Sg P2 ;
|
youSg_Pron = R.agr2pron ! Ag Sg P2 ;
|
||||||
youPl_Pron = R.agr2pron ! Ag Pl P2 ;
|
youPl_Pron = R.agr2pron ! Ag Pl P2 ;
|
||||||
youPol_Pron = R.agr2pron ! Ag Pl P2 ;
|
youPol_Pron = R.agr2pron ! Ag Pl P2 ;
|
||||||
-- no_Quant = demoPN "هیچ" ;
|
no_Quant = mkQuant "هیچ" "هیچ" Clitic True ;
|
||||||
not_Predet = {s="نه"} ;
|
not_Predet = {s="نه"} ;
|
||||||
if_then_Conj = sd2 "اگر" "آنگاه" ** {n = Sg} ;
|
if_then_Conj = sd2 "اگر" "آنگاه" ** {n = Sg} ;
|
||||||
at_least_AdN = ss "حداقل" ;
|
at_least_AdN = ss "حداقل" ;
|
||||||
at_most_AdN = ss "حداکثر";
|
at_most_AdN = ss "حداکثر";
|
||||||
nothing_NP = R.indeclNP "هیچ" ;
|
nothing_NP = R.indeclNP "هیچ چیز" ** {isNeg = True} ;
|
||||||
except_Prep = mkPrep ["به جز"] ;
|
except_Prep = mkPrep ["به جز"] ;
|
||||||
nobody_NP = R.indeclNP "هیچ کس";
|
nobody_NP = R.indeclNP "هیچ کس";
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ concrete StructuralPes of Structural = CatPes **
|
|||||||
|
|
||||||
---- have_V2 = mkV2 (mkV "داشتن" "دار") "را" ;
|
---- have_V2 = mkV2 (mkV "داشتن" "دار") "را" ;
|
||||||
|
|
||||||
language_title_Utt = ss "پeرسن" ;
|
language_title_Utt = ss "فارسی" ;
|
||||||
|
|
||||||
---- AR from Nasrin
|
---- AR from Nasrin
|
||||||
|
|
||||||
@@ -126,12 +126,7 @@ have_V2 = haveVerb ** {
|
|||||||
VImp Pos Pl => "داشته باشید" ;
|
VImp Pos Pl => "داشته باشید" ;
|
||||||
VImp Neg Sg => "نداشته باش" ;
|
VImp Neg Sg => "نداشته باش" ;
|
||||||
VImp Neg Pl => "نداشته باشید" ;
|
VImp Neg Pl => "نداشته باشید" ;
|
||||||
VSubj _ (Ag Sg P1) => "داشته باشم" ;
|
VSubj p agr => "داشته" ++ subjAux p agr ;
|
||||||
VSubj _ (Ag Sg P2) => "داشته باشی" ;
|
|
||||||
VSubj _ (Ag Sg P3) => "داشته باشد" ;
|
|
||||||
VSubj _ (Ag Pl P1) => "داشته باشیم" ;
|
|
||||||
VSubj _ (Ag Pl P2) => "داشته باشید" ;
|
|
||||||
VSubj _ (Ag Pl P3) => "داشته باشند" ;
|
|
||||||
x => haveVerb.s ! x } ;
|
x => haveVerb.s ! x } ;
|
||||||
c2 = prepOrRa [] -- "را" ; ---- AR 18/9/2017: usually no ra acc. to Nasrin, but this is tricky
|
c2 = prepOrRa [] -- "را" ; ---- AR 18/9/2017: usually no ra acc. to Nasrin, but this is tricky
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ concrete SymbolPes of Symbol = CatPes ** open Prelude, ResPes in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
SymbS sy = {s = \\_ => sy.s} ;
|
SymbS sy = {s = \\_ => sy.s} ;
|
||||||
SymbNum sy = { s = sy.s ; n = Pl } ;
|
SymbNum sy = {s = sy.s ; n = Pl} ;
|
||||||
SymbOrd sy = { s = sy.s ++ "wN" ; n = Pl; isNum,isPre=False} ;
|
SymbOrd sy = {s = sy.s ; n = Sg ; isNum,isPre=False} ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,17 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in {
|
|||||||
ComplSlash = complSlash ;
|
ComplSlash = complSlash ;
|
||||||
|
|
||||||
ComplVV = insertVV ;
|
ComplVV = insertVV ;
|
||||||
ComplVS v s = embComp (conjThat ++ s.s ! Indic) (predV v) ;
|
ComplVS v s = embComp (conjThat ++ s.s ! v.compl) (predV v) ;
|
||||||
ComplVQ v q = embComp (conjThat ++ q.s) (predV v) ;
|
ComplVQ v q = embComp (conjThat ++ q.s) (predV v) ;
|
||||||
ComplVA v ap = insertObj (appComp v.c2 ap.s) (predV v) ; -- check form of adjective
|
ComplVA v ap = let adjStr = appComp v.c2 ap.s in
|
||||||
|
case ap.afterPrefix of {
|
||||||
|
True => predV (v ** {prefix = v.prefix ++ adjStr}) ;
|
||||||
|
False => insertObj adjStr (predV v) -- check form of adjective
|
||||||
|
} ;
|
||||||
|
|
||||||
SlashVV vv vps = vps ** ComplVV vv vps ;
|
SlashVV vv vps = vps ** ComplVV vv vps ;
|
||||||
SlashV2S v s = predVc v ** embComp (conjThat ++ s.s ! Indic) (predV v) ;
|
SlashV2S v s = predVc v ** ComplVS v s ;
|
||||||
SlashV2Q v q = predVc v ** embComp q.s (predV v) ;
|
SlashV2Q v q = predVc v ** ComplVQ v q ;
|
||||||
SlashV2A v ap = predVc v ** insertObj (appComp v.c2 ap.s) (predV v) ; ---- paint it red , check form of adjective
|
SlashV2A v ap = predVc v ** insertObj (appComp v.c2 ap.s) (predV v) ; ---- paint it red , check form of adjective
|
||||||
|
|
||||||
-- : V2V -> VP -> VPSlash ; -- beg (her) to go
|
-- : V2V -> VP -> VPSlash ; -- beg (her) to go
|
||||||
@@ -35,8 +39,8 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in {
|
|||||||
|
|
||||||
-- : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy
|
-- : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy
|
||||||
SlashV2VNP v2v np vps = predVc v2v ** {
|
SlashV2VNP v2v np vps = predVc v2v ** {
|
||||||
comp = \\a => if_then_Str v2v.isAux conjThat [] -- that
|
comp = \\a,wo => if_then_Str v2v.isAux conjThat [] -- that
|
||||||
++ appComp v2v.c2 np.s ; -- I
|
++ appCompVP v2v.c2 np.s ! wo ; -- I
|
||||||
-- ∅ is placed in comp
|
-- ∅ is placed in comp
|
||||||
vComp = \\_,_ => showVPH (case v2v.compl of { -- buy
|
vComp = \\_,_ => showVPH (case v2v.compl of { -- buy
|
||||||
Subj => VSubj Pos np.a ;
|
Subj => VSubj Pos np.a ;
|
||||||
@@ -50,16 +54,17 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in {
|
|||||||
VPSlashPrep vp prep = vp ** vs prep ;
|
VPSlashPrep vp prep = vp ** vs prep ;
|
||||||
|
|
||||||
|
|
||||||
AdvVP vp adv = insertAdV adv.s vp ;
|
AdvVP vp adv = insertAdv adv.s vp ;
|
||||||
AdVVP adv vp = insertAdV adv.s vp ;
|
AdVVP adv vp = insertAdV adv.s vp ;
|
||||||
ReflVP v = insertCompPre reflPron v ;
|
ReflVP = insertCompPre reflPron ;
|
||||||
PassV2 v = predV v ; -- need to be fixed
|
PassV2 = passV ;
|
||||||
|
|
||||||
UseComp comp = insertComp comp.s (predV beVerb) ;
|
UseComp comp = insertComp comp.s (predV beVerb) ;
|
||||||
CompAP ap = {s = \\_ => ap.s ! Bare} ; -- check form of adjective
|
CompAP ap = {s = \\_ => ap.s ! Bare} ; -- check form of adjective
|
||||||
CompAdv adv = {s = \\_ => adv.s } ;
|
CompAdv adv = {s = \\_ => adv.s} ;
|
||||||
|
|
||||||
-- see https://sites.la.utexas.edu/persian_online_resources/nouns/noun-in-a-predicative-position/
|
-- see https://sites.la.utexas.edu/persian_online_resources/nouns/noun-in-a-predicative-position/
|
||||||
|
-- TODO: extend this to all verbs, when NP is indefinite
|
||||||
CompCN cn = {
|
CompCN cn = {
|
||||||
s = \\a => cn.s ! giveNumber a
|
s = \\a => cn.s ! giveNumber a
|
||||||
! case cn.hasAdj of {
|
! case cn.hasAdj of {
|
||||||
@@ -68,7 +73,7 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
CompNP np = {
|
CompNP np = {
|
||||||
s = \\a => np.s ! case np.hasAdj of {
|
s = \\a => np.s ! case np.takesYeAsComp of {
|
||||||
False => Bare ;
|
False => Bare ;
|
||||||
True => Clitic }
|
True => Clitic }
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ instance DiffPor of DiffRomance - [iAdvQuestionInv,chooseTA,otherInv,partAgr,sta
|
|||||||
<RCond,Simul> => <verb ! VFin VCondit n p, []> ; --# notpresent
|
<RCond,Simul> => <verb ! VFin VCondit n p, []> ; --# notpresent
|
||||||
<RCond,Anter> => <vaux ! VFin VCondit n p, part> ; --# notpresent
|
<RCond,Anter> => <vaux ! VFin VCondit n p, part> ; --# notpresent
|
||||||
<RPasse,Simul> => <verb ! VFin VPasse n p, []> ; --# notpresent
|
<RPasse,Simul> => <verb ! VFin VPasse n p, []> ; --# notpresent
|
||||||
<RPasse,Anter> => <vaux ! VFin VPasse n p, part> ; --# notpresent
|
<RPasse,Anter> => <vaux ! VFin (VPres m) n p, part> ; --# notpresent
|
||||||
<RPres,Anter> => <verb ! VFin VPasse n p, []> ; --# notpresent
|
<RPres,Anter> => <verb ! VFin VPasse n p, []> ; --# notpresent
|
||||||
<RPres,Simul> => <verb ! VFin (VPres m) n p, []>
|
<RPres,Simul> => <verb ! VFin (VPres m) n p, []>
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ concrete ExtendPor of Extend = CatPor ** ExtendRomanceFunctor -
|
|||||||
GenRP,
|
GenRP,
|
||||||
ICompAP,
|
ICompAP,
|
||||||
InOrderToVP,
|
InOrderToVP,
|
||||||
|
EmbedSSlash,
|
||||||
WithoutVP,
|
WithoutVP,
|
||||||
iFem_Pron,
|
iFem_Pron,
|
||||||
theyFem_Pron,
|
theyFem_Pron,
|
||||||
@@ -60,6 +61,9 @@ concrete ExtendPor of Extend = CatPor ** ExtendRomanceFunctor -
|
|||||||
exist_V : V ;
|
exist_V : V ;
|
||||||
exist_V = mkV "existir" ;
|
exist_V = mkV "existir" ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
EmbedSSlash s = {s = \\_ => "o que" ++ s.s ! {g = Masc ; n = Sg} ! Indic} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
CompoundN noun noun2 = { -- order is different because that's needed for correct translation from english
|
CompoundN noun noun2 = { -- order is different because that's needed for correct translation from english
|
||||||
s = \\n => noun2.s ! n
|
s = \\n => noun2.s ! n
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ resource ParadigmsPor =
|
|||||||
Prelude,
|
Prelude,
|
||||||
MorphoPor,
|
MorphoPor,
|
||||||
BeschPor,
|
BeschPor,
|
||||||
|
DiffPor,
|
||||||
CatPor in {
|
CatPor in {
|
||||||
|
|
||||||
flags optimize=all ;
|
flags optimize=all ;
|
||||||
@@ -79,6 +80,18 @@ oper
|
|||||||
dative : Prep ; -- preposition "a" and its contractions
|
dative : Prep ; -- preposition "a" and its contractions
|
||||||
dative = lin Prep complDat ;
|
dative = lin Prep complDat ;
|
||||||
|
|
||||||
|
CopulaType : Type ;
|
||||||
|
CopulaType = DiffPor.CopulaType ;
|
||||||
|
|
||||||
|
serCopula : CopulaType ;
|
||||||
|
serCopula = DiffPor.serCopula ;
|
||||||
|
|
||||||
|
estarCopula : CopulaType ;
|
||||||
|
estarCopula = DiffPor.estarCopula ;
|
||||||
|
|
||||||
|
ficarCopula : CopulaType ;
|
||||||
|
ficarCopula = DiffPor.ficarCopula ;
|
||||||
|
|
||||||
mkPrep = overload {
|
mkPrep = overload {
|
||||||
mkPrep : Str -> Prep -- other preposition
|
mkPrep : Str -> Prep -- other preposition
|
||||||
= \p -> lin Prep {s = p ; c = Acc ; isDir = False} ;
|
= \p -> lin Prep {s = p ; c = Acc ; isDir = False} ;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ incomplete concrete AdjectiveRomance of Adjective =
|
|||||||
ComplA2 adj np = {
|
ComplA2 adj np = {
|
||||||
s = \\af => adj.s ! Posit ! af ++ appCompl adj.c2 np ;
|
s = \\af => adj.s ! Posit ! af ++ appCompl adj.c2 np ;
|
||||||
isPre = False ;
|
isPre = False ;
|
||||||
copTyp = serCopula
|
copTyp = adj.copTyp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ReflA2 adj = {
|
ReflA2 adj = {
|
||||||
@@ -42,7 +42,7 @@ incomplete concrete AdjectiveRomance of Adjective =
|
|||||||
adj.s ! Posit ! af ++
|
adj.s ! Posit ! af ++
|
||||||
adj.c2.s ++ prepCase adj.c2.c ++ reflPron Sg P3 Nom ; --- agr
|
adj.c2.s ++ prepCase adj.c2.c ++ reflPron Sg P3 Nom ; --- agr
|
||||||
isPre = False ;
|
isPre = False ;
|
||||||
copTyp = serCopula
|
copTyp = adj.copTyp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SentAP ap sc = {
|
SentAP ap sc = {
|
||||||
@@ -60,7 +60,7 @@ incomplete concrete AdjectiveRomance of Adjective =
|
|||||||
UseA2 a = {
|
UseA2 a = {
|
||||||
s = a.s ! Posit ;
|
s = a.s ! Posit ;
|
||||||
isPre = False ; ---- A2 has no isPre
|
isPre = False ; ---- A2 has no isPre
|
||||||
copTyp = serCopula ---- A2 has no copTyp (yet)
|
copTyp = a.copTyp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdvAP ap adv = {
|
AdvAP ap adv = {
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol]
|
|||||||
VS = Verb ** {m : RPolarity => Mood} ;
|
VS = Verb ** {m : RPolarity => Mood} ;
|
||||||
|
|
||||||
A = {s : Degree => AForm => Str ; isPre : Bool ; copTyp : CopulaType} ;
|
A = {s : Degree => AForm => Str ; isPre : Bool ; copTyp : CopulaType} ;
|
||||||
A2 = {s : Degree => AForm => Str ; c2 : Compl} ;
|
A2 = {s : Degree => AForm => Str ; c2 : Compl ; copTyp : CopulaType} ;
|
||||||
|
|
||||||
N = Noun ;
|
N = Noun ;
|
||||||
N2 = Noun ** {c2 : Compl} ;
|
N2 = Noun ** {c2 : Compl} ;
|
||||||
|
|||||||
@@ -51,7 +51,11 @@ incomplete concrete ExtendRomanceFunctor of Extend =
|
|||||||
-- s = \\agr,t,a,p,m => cls.s ! agr ! DDir ! t ! a ! p ! m ++ cls.c2.s ;
|
-- s = \\agr,t,a,p,m => cls.s ! agr ! DDir ! t ! a ! p ! m ++ cls.c2.s ;
|
||||||
-- c = Nom
|
-- c = Nom
|
||||||
-- } ;
|
-- } ;
|
||||||
|
SubjRelNP np rs = heavyNPpol np.isNeg {
|
||||||
|
s = \\c => (np.s ! c).ton ++ rs.s ! Conjunct ! np.a ;
|
||||||
|
a = np.a ;
|
||||||
|
hasClit = False
|
||||||
|
} ;
|
||||||
lin
|
lin
|
||||||
PredVPS np vpi = {
|
PredVPS np vpi = {
|
||||||
s = \\m => (np.s ! Nom).comp ++ vpi.s ! m ! np.a ! np.isNeg
|
s = \\m => (np.s ! Nom).comp ++ vpi.s ! m ! np.a ! np.isNeg
|
||||||
@@ -119,6 +123,12 @@ incomplete concrete ExtendRomanceFunctor of Extend =
|
|||||||
ExistMassCN cn = ExistNP (MassNP cn) ;
|
ExistMassCN cn = ExistNP (MassNP cn) ;
|
||||||
ExistPluralCN cn = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
ExistPluralCN cn = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
||||||
AdvIsNP adv np = mkClause adv.s False False np.a (UseComp_estar (CompNP np)) ;
|
AdvIsNP adv np = mkClause adv.s False False np.a (UseComp_estar (CompNP np)) ;
|
||||||
|
AdvIsNPAP adv np ap = -- <aquí:Adv> está <documentada:AP> <la examinación:NP>
|
||||||
|
let emptyN : N = lin N {s = \\_ => [] ; g = np.a.g} ; -- To match the gender of the N
|
||||||
|
indef : Quant = IndefArt ** {s = \\b,n,g,c => []} ;
|
||||||
|
det : Det = case np.a.n of {Sg => DetQuant indef NumSg ; Pl => DetQuant indef NumPl} ;
|
||||||
|
apAsNP : NP = DetCN det (AdjCN ap (UseN emptyN)) ; -- NP where the string comes only from AP
|
||||||
|
in AdvIsNP adv (ApposNP apAsNP np) ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
ComplBareVS = ComplVS ; -- VS -> S -> VP ; -- say she runs ; DEFAULT say that she runs
|
ComplBareVS = ComplVS ; -- VS -> S -> VP ; -- say she runs ; DEFAULT say that she runs
|
||||||
@@ -186,6 +196,8 @@ incomplete concrete ExtendRomanceFunctor of Extend =
|
|||||||
|
|
||||||
InOrderToVP = variants {} ; -- VP -> Adv ; -- (in order) to publish the document
|
InOrderToVP = variants {} ; -- VP -> Adv ; -- (in order) to publish the document
|
||||||
|
|
||||||
|
PredIAdvVP iadv vp = {s = \\_,_,_,_ => iadv.s ++ infStr vp} ;
|
||||||
|
|
||||||
ApposNP np1 np2 = np1 ** {
|
ApposNP np1 np2 = np1 ** {
|
||||||
s = \\c => {
|
s = \\c => {
|
||||||
c1 = (np1.s ! c).c1 ++ (np2.s ! c).c1 ;
|
c1 = (np1.s ! c).c1 ++ (np2.s ! c).c1 ;
|
||||||
@@ -217,7 +229,15 @@ incomplete concrete ExtendRomanceFunctor of Extend =
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
DetNPMasc = DetNP ;
|
DetNPMasc = DetNP ;
|
||||||
DetNPFem = DetNP ;
|
DetNPFem det =
|
||||||
|
let
|
||||||
|
g = Fem ;
|
||||||
|
n = det.n
|
||||||
|
in heavyNPpol det.isNeg {
|
||||||
|
s = det.sp ! g ;
|
||||||
|
a = agrP3 g n ;
|
||||||
|
hasClit = False
|
||||||
|
} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
iFem_Pron = i_Pron ; -- DEFAULT I (masc)
|
iFem_Pron = i_Pron ; -- DEFAULT I (masc)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
--# -path=.:../abstract:../common:../prelude
|
--# -path=.:../abstract:../common:../prelude
|
||||||
|
|
||||||
concrete AllSlv of AllSlvAbs =
|
concrete AllSlv of AllSlvAbs =
|
||||||
LangSlv
|
LangSlv,
|
||||||
|
ExtendSlv
|
||||||
** {} ;
|
** {} ;
|
||||||
|
|||||||
61
src/slovenian/ExtendSlv.gf
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
concrete ExtendSlv of Extend = CatSlv ** open ResSlv, ParadigmsSlv, GrammarSlv in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
iFem_Pron = mkPron "jàz" "méne" "méne" "méni" "méni" ("menój"|"máno")
|
||||||
|
"mój" "mòjega" "mòjemu" ("mòj"|"mòjega") "mòjem" "mòjim"
|
||||||
|
"mòja" "mòjih" "mòjima" "mòja" "mòjih" "mòjima"
|
||||||
|
"mòji" "mòjih" "mòjim" "mòje" "mòjih" "mòjimi"
|
||||||
|
"mòja" "mòje" "mòji" "mòjo" "mòji" "mòjo"
|
||||||
|
"mòji" "mòjih" "mòjima" "mòji" "mòjih" "mòjima"
|
||||||
|
"mòje" "mòjih" "mòjim" "mòje" "mòjih" "mòjimi"
|
||||||
|
"mòje" "mòjega" "mòjemu" "mòjo" "mòjem" "mòjim"
|
||||||
|
"mòji" "mòjih" "mòjima" "mòji" "mòjih" "mòjima"
|
||||||
|
"mòja" "mòjih" "mòjim" "mòja" "mòjih" "mòjimi" Fem Sg P1 ;
|
||||||
|
youFem_Pron = mkPron "tí" "tébe" "tébe" "tébi" "tébi" ("tebój"|"tábo")
|
||||||
|
"tvój" "tvòjega" "tvòjemu" ("tvòj"|"tvòjega") "tvòjem" "tvòjim"
|
||||||
|
"tvòja" "tvòjih" "tvòjima" "tvòja" "tvòjih" "tvòjima"
|
||||||
|
"tvòji" "tvòjih" "tvòjim" "tvòje" "tvòjih" "tvòjimi"
|
||||||
|
"tvòja" "tvòje" "tvòji" "tvòjo" "tvòji" "tvòjo"
|
||||||
|
"tvòji" "tvòjih" "tvòjima" "tvòji" "tvòjih" "tvòjima"
|
||||||
|
"tvòje" "tvòjih" "tvòjim" "tvòje" "tvòjih" "tvòjimi"
|
||||||
|
"tvòje" "tvòjega" "tvòjemu" "tvòjo" "tvòjem" "tvòjim"
|
||||||
|
"tvòji" "tvòjih" "tvòjima" "tvòji" "tvòjih" "tvòjima"
|
||||||
|
"tvòja" "tvòjih" "tvòjim" "tvòja" "tvòjih" "tvòjimi" Fem Sg P2 ;
|
||||||
|
weFem_Pron = mkPron "mí" "nàs" "nàs" "nàm" "nàs" "nàmi"
|
||||||
|
"nàš" "nášega" "nášemu" ("náši"|"nášega") "nášem" "nášim"
|
||||||
|
"náša" "náših" "nášima" "náša" "náših" "nášima"
|
||||||
|
"náši" "náših" "nášim" "náše" "náših" "nášimi"
|
||||||
|
"náša" "náše" "náši" "nášo" "náši" "nášo"
|
||||||
|
"náši" "náših" "nášima" "náši" "náših" "nášima"
|
||||||
|
"náše" "náših" "nášim" "náše" "náših" "nášimi"
|
||||||
|
"náše" "nášega" "nášemu" "náše" "nášem" "nášim"
|
||||||
|
"náši" "náših" "nášima" "náši" "náših" "nášima"
|
||||||
|
"náša" "náših" "nášim" "náša" "náših" "nášimi" Fem Pl P1 ;
|
||||||
|
youPlFem_Pron = mkPron "ví" "vàs" "vàs" "vàm" "vàs" "vàmi"
|
||||||
|
"vàš" "vášega" "vášemu" ("váši"|"vášega") "vášem" "vášim"
|
||||||
|
"váša" "váših" "vášima" "váša" "váših" "vášima"
|
||||||
|
"váši" "váših" "vášim" "váše" "váših" "vášimi"
|
||||||
|
"váša" "váše" "váši" "vášo" "váši" "vášo"
|
||||||
|
"váši" "váših" "vášima" "váši" "váših" "vášima"
|
||||||
|
"váše" "váših" "vášim" "váše" "váših" "vášimi"
|
||||||
|
"váše" "vášega" "vášemu" "váše" "vášem" "vášim"
|
||||||
|
"váši" "váših" "vášima" "váši" "váših" "vášima"
|
||||||
|
"váša" "váših" "vášim" "váša" "váših" "vášimi" Fem Pl P2 ;
|
||||||
|
theyFem_Pron = mkPron "ôni" "njìh" "njìh" "njìm" "njìh" "njími"
|
||||||
|
"njíhov" "njíhovega" "njíhovemu" ("njíhov"|"njíhovega") "njíhovem" "njíhovim"
|
||||||
|
"njíhova" "njíhovih" "njíhovima" "njíhova" "njíhovih" "njíhovima"
|
||||||
|
"njíhovi" "njíhovih" "njíhovim" "njíhove" "njíhovih" "njíhovimi"
|
||||||
|
"njíhova" "njíhove" "njíhovi" "njíhovo" "njíhovi" "njíhovo"
|
||||||
|
"njíhovi" "njíhovih" "njíhovima" "njíhovi" "njíhovih" "njíhovima"
|
||||||
|
"njíhove" "njíhovih" "njíhovim" "njíhove" "njíhovih" "njíhovimi"
|
||||||
|
"njíhove" "njíhovega" "njíhovemu" "njíhovo" "njíhovem" "njíhovim"
|
||||||
|
"njíhovi" "njíhovih" "njíhovima" "njíhovi" "njíhovih" "njíhovima"
|
||||||
|
"njíhova" "njíhovih" "njíhovim" "njíhova" "njíhovih" "njíhovimi" Fem Pl P3 ;
|
||||||
|
|
||||||
|
youPolFem_Pron = youPlFem_Pron ;
|
||||||
|
youPolPl_Pron = youPol_Pron ;
|
||||||
|
youPolPlFem_Pron = youPlFem_Pron ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -71,8 +71,8 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
Det = ResSom.Determiner ;
|
Det = ResSom.Determiner ;
|
||||||
Predet = {s : Str} ;
|
Predet = {s : Str} ;
|
||||||
Quant = ResSom.Quant ;
|
Quant = ResSom.Quant ;
|
||||||
Num = { s : Str ; n : Number ; isNum : Bool } ;
|
Num = ResSom.Num ;
|
||||||
Card, Ord = { s : Str ; n : Number } ;
|
Card, Ord = {s : Str ; n : Number} ;
|
||||||
DAP = ResSom.Determiner ;
|
DAP = ResSom.Determiner ;
|
||||||
|
|
||||||
|
|
||||||
@@ -80,8 +80,8 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
|
|
||||||
-- Constructed in NumeralSom.
|
-- Constructed in NumeralSom.
|
||||||
|
|
||||||
Numeral = { s : Str ; n : Number } ;
|
Numeral = {s : Str ; n : Number} ;
|
||||||
Digits = { s : CardOrd => Str ; n : Number } ;
|
Digits = {s : CardOrd => Str ; n : Number} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -100,8 +100,7 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
-- additional lexicon modules.
|
-- additional lexicon modules.
|
||||||
|
|
||||||
V,
|
V,
|
||||||
V2,
|
-- TODO: eventually proper lincats
|
||||||
V3,
|
|
||||||
VV, -- verb-phrase-complement verb e.g. "want"
|
VV, -- verb-phrase-complement verb e.g. "want"
|
||||||
VS, -- sentence-complement verb e.g. "claim"
|
VS, -- sentence-complement verb e.g. "claim"
|
||||||
VQ, -- question-complement verb e.g. "wonder"
|
VQ, -- question-complement verb e.g. "wonder"
|
||||||
@@ -111,6 +110,9 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
V2Q, -- verb with NP and Q complement e.g. "ask"
|
V2Q, -- verb with NP and Q complement e.g. "ask"
|
||||||
V2A = ResSom.Verb ; -- verb with NP and AP complement e.g. "paint"
|
V2A = ResSom.Verb ; -- verb with NP and AP complement e.g. "paint"
|
||||||
|
|
||||||
|
V2 = ResSom.Verb2 ;
|
||||||
|
V3 = ResSom.Verb3 ;
|
||||||
|
|
||||||
A = ResSom.Adjective ;
|
A = ResSom.Adjective ;
|
||||||
A2 = ResSom.Adjective2 ;
|
A2 = ResSom.Adjective2 ;
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ lin city_N = mkN "magaalo" ;
|
|||||||
-- lin doctor_N = mkN "" ;
|
-- lin doctor_N = mkN "" ;
|
||||||
-- lin dog_N = mkN "" ;
|
-- lin dog_N = mkN "" ;
|
||||||
-- lin door_N = mkN "" ;
|
-- lin door_N = mkN "" ;
|
||||||
-- lin drink_V2 = mkV2 "" ;
|
lin drink_V2 = mkV2 "cab" ;
|
||||||
-- lin dry_A = mkA "" ;
|
-- lin dry_A = mkA "" ;
|
||||||
-- lin dull_A = mkA "" ;
|
-- lin dull_A = mkA "" ;
|
||||||
-- lin dust_N = mkN "" ;
|
-- lin dust_N = mkN "" ;
|
||||||
@@ -118,7 +118,7 @@ lin city_N = mkN "magaalo" ;
|
|||||||
-- lin fall_V = mkV "" ;
|
-- lin fall_V = mkV "" ;
|
||||||
-- lin far_Adv = mkA "" ;
|
-- lin far_Adv = mkA "" ;
|
||||||
-- lin fat_N = mkN "" ;
|
-- lin fat_N = mkN "" ;
|
||||||
-- lin father_N2 = mkN "" ;
|
lin father_N2 = mkN2 (shortPossN (mkN "aabbe")) noPrep ;
|
||||||
-- lin fear_V2 = mkV2 "" ;
|
-- lin fear_V2 = mkV2 "" ;
|
||||||
-- lin fear_VS = mkVS "" ;
|
-- lin fear_VS = mkVS "" ;
|
||||||
-- lin feather_N = mkN "" ;
|
-- lin feather_N = mkN "" ;
|
||||||
@@ -148,7 +148,7 @@ lin city_N = mkN "magaalo" ;
|
|||||||
|
|
||||||
-- lin garden_N = mkN "" ;
|
-- lin garden_N = mkN "" ;
|
||||||
lin girl_N = mkN "gabadh" "gabdho" fem ;
|
lin girl_N = mkN "gabadh" "gabdho" fem ;
|
||||||
-- lin give_V3 = mkV3 "" ;
|
lin give_V3 = mkV3 "bixiyo" ;
|
||||||
-- lin glove_N = mkN "" ;
|
-- lin glove_N = mkN "" ;
|
||||||
-- lin go_V = joan_V ;
|
-- lin go_V = joan_V ;
|
||||||
-- lin gold_N = mkN "" ;
|
-- lin gold_N = mkN "" ;
|
||||||
@@ -227,7 +227,7 @@ lin man_N = mkN "nin" ;
|
|||||||
-- lin meat_N = mkN "" ;
|
-- lin meat_N = mkN "" ;
|
||||||
-- lin milk_N = mkN "" ;
|
-- lin milk_N = mkN "" ;
|
||||||
-- lin moon_N = mkN "" ;
|
-- lin moon_N = mkN "" ;
|
||||||
-- lin mother_N2 = mkN "" ;
|
lin mother_N2 = mkN2 (shortPossN (mkN "hooyo")) noPrep ;
|
||||||
-- lin mountain_N = mkN "" ;
|
-- lin mountain_N = mkN "" ;
|
||||||
-- lin mouth_N = mkN "" ;
|
-- lin mouth_N = mkN "" ;
|
||||||
-- lin music_N = mkN "" ;
|
-- lin music_N = mkN "" ;
|
||||||
@@ -235,7 +235,7 @@ lin man_N = mkN "nin" ;
|
|||||||
----
|
----
|
||||||
-- N
|
-- N
|
||||||
|
|
||||||
-- lin name_N = mkN "" ;
|
lin name_N = mkN "magac" ;
|
||||||
-- lin narrow_A = mkA "" ;
|
-- lin narrow_A = mkA "" ;
|
||||||
-- lin near_A = mkA "" ;
|
-- lin near_A = mkA "" ;
|
||||||
-- lin neck_N = mkN "" ;
|
-- lin neck_N = mkN "" ;
|
||||||
@@ -333,7 +333,7 @@ lin small_A = mkA "yar" ;
|
|||||||
-- lin snow_N = mkN "" ;
|
-- lin snow_N = mkN "" ;
|
||||||
-- lin sock_N = mkN "" ;
|
-- lin sock_N = mkN "" ;
|
||||||
-- lin song_N = mkN "" ;
|
-- lin song_N = mkN "" ;
|
||||||
-- lin speak_V2 = mkV2 "" ;
|
lin speak_V2 = mkV2 "hadlo" ;
|
||||||
-- lin spit_V = mkV "" ;
|
-- lin spit_V = mkV "" ;
|
||||||
-- lin split_V2 = mkV2 "" ;
|
-- lin split_V2 = mkV2 "" ;
|
||||||
-- lin squeeze_V2 = mkV2 "" ;
|
-- lin squeeze_V2 = mkV2 "" ;
|
||||||
|
|||||||
@@ -6,26 +6,29 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
|
|
||||||
--2 Noun phrases
|
--2 Noun phrases
|
||||||
|
|
||||||
-- The three main types of noun phrases are
|
-- : Det -> CN -> NP
|
||||||
-- - common nouns with determiners
|
DetCN det cn = useN cn ** {
|
||||||
-- - proper names
|
s = sTable ;
|
||||||
-- - pronouns
|
a = getAgr det.d cn.g ;
|
||||||
|
sp = sTable ! Nom }
|
||||||
-- : Det -> CN -> NP
|
where {
|
||||||
DetCN det cn = useN cn ** {
|
sTable : Case => Str = \\c =>
|
||||||
s = \\c =>
|
|
||||||
let nfc : {nf : NForm ; c : Case} =
|
let nfc : {nf : NForm ; c : Case} =
|
||||||
case <c,cn.hasMod,det.d> of {
|
case <c,cn.hasMod,det.d> of {
|
||||||
<Nom,True, Indef Sg> => {nf=Indef Sg ; c=Abs} ;
|
|
||||||
<Nom,False,Indef Sg> => {nf=IndefNom ; c=Nom} ; -- special form for fem. nouns
|
<Nom,False,Indef Sg> => {nf=IndefNom ; c=Nom} ; -- special form for fem. nouns
|
||||||
<Nom,True,Def x vA> => {nf=Def x vA ; c=Abs} ;
|
<Nom,False,Def x NA> => {nf=Def x vU ; c=Nom} ; -- special case for DefArt
|
||||||
<Nom,False,Def x vA> => {nf=Def x vU ; c=Nom} ;
|
<Nom,True,_> => {nf=det.d ; c=Abs} ; -- If cn has modifier, the Nom ending attaches to the modifier
|
||||||
_ => {nf=det.d ; c=c}
|
_ => {nf=det.d ; c=c}
|
||||||
} ;
|
} ;
|
||||||
in cn.s ! nfc.nf
|
detStr : Str =
|
||||||
++ det.s ! nfc.c
|
case <det.isPoss,cn.shortPoss> of {
|
||||||
++ cn.mod ! getNum (getAgr det.d Masc) ! c ;
|
<True,True> => det.shortPoss ;
|
||||||
a = getAgr det.d cn.g
|
_ => det.s ! nfc.c
|
||||||
|
} ;
|
||||||
|
in det.pref -- if det is numeral. TODO find out if gender/case/other distinction.
|
||||||
|
++ cn.s ! nfc.nf
|
||||||
|
++ detStr -- non-numeral det
|
||||||
|
++ cn.mod ! getNum (getAgr det.d Masc) ! c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : PN -> NP ;
|
-- : PN -> NP ;
|
||||||
@@ -37,7 +40,6 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
-- : Pron -> NP ;
|
-- : Pron -> NP ;
|
||||||
UsePron pron = lin NP pron ;
|
UsePron pron = lin NP pron ;
|
||||||
|
|
||||||
|
|
||||||
-- : Predet -> NP -> NP ; -- only the man
|
-- : Predet -> NP -> NP ; -- only the man
|
||||||
PredetNP predet np = np ** {
|
PredetNP predet np = np ** {
|
||||||
s = \\c => predet.s ++ np.s ! c ---- ?
|
s = \\c => predet.s ++ np.s ! c ---- ?
|
||||||
@@ -80,13 +82,25 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
-- quantifier and an optional numeral can be discerned.
|
-- quantifier and an optional numeral can be discerned.
|
||||||
|
|
||||||
-- : Quant -> Num -> Det ;
|
-- : Quant -> Num -> Det ;
|
||||||
-- DetQuant quant num = quant **
|
DetQuant quant num = quant ** {
|
||||||
-- { } ;
|
pref = num.s ;
|
||||||
|
sp = \\g => case <num.n,g> of {
|
||||||
|
<Sg,Masc> => quant.sp ! SgMasc ;
|
||||||
|
<Sg,Fem> => quant.sp ! SgFem ;
|
||||||
|
<Pl,_> => quant.sp ! InvarPl } ;
|
||||||
|
|
||||||
|
d = case <num.isNum,quant.st> of {
|
||||||
|
<True,_> => Numerative ;
|
||||||
|
<False,Definite> => Def num.n quant.v ;
|
||||||
|
<False,Indefinite> => Indef num.n } ;
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : Quant -> Num -> Ord -> Det ; -- these five best
|
-- : Quant -> Num -> Ord -> Det ; -- these five best
|
||||||
-- DetQuantOrd quant num ord =
|
DetQuantOrd quant num ord =
|
||||||
-- let theseFive = DetQuant quant num
|
let theseFive = DetQuant quant num in theseFive ** {
|
||||||
-- in theseFive ** { s = \\c,ph => theseFive.s ! c ! ph ++ ord.s } ; --TODO: dummy implementation
|
s = \\c => theseFive.s ! c ++ ord.s ;
|
||||||
|
sp = \\g,c => theseFive.sp ! g ! c ++ ord.s
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Whether the resulting determiner is singular or plural depends on the
|
-- Whether the resulting determiner is singular or plural depends on the
|
||||||
-- cardinal.
|
-- cardinal.
|
||||||
@@ -94,10 +108,10 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
-- All parts of the determiner can be empty, except $Quant$, which is
|
-- All parts of the determiner can be empty, except $Quant$, which is
|
||||||
-- the "kernel" of a determiner. It is, however, the $Num$ that determines
|
-- the "kernel" of a determiner. It is, however, the $Num$ that determines
|
||||||
-- the inherent number.
|
-- the inherent number.
|
||||||
{-
|
|
||||||
NumSg = { s = [] ; n = Sg ; isNum = False } ;
|
|
||||||
NumPl = { s = [] ; n = Pl ; isNum = False } ;
|
|
||||||
|
|
||||||
|
NumSg = {s = [] ; n = Sg ; isNum = False} ;
|
||||||
|
NumPl = {s = [] ; n = Pl ; isNum = False} ;
|
||||||
|
{-
|
||||||
-- : Card -> Num ;
|
-- : Card -> Num ;
|
||||||
NumCard card = (card ** { isNum = True }) ;
|
NumCard card = (card ** { isNum = True }) ;
|
||||||
|
|
||||||
@@ -117,27 +131,37 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
OrdNumeral num = num ;
|
OrdNumeral num = num ;
|
||||||
|
|
||||||
-- : A -> Ord ;
|
-- : A -> Ord ;
|
||||||
OrdSuperl a = { } ; -- why force Sg?
|
OrdSuperl a = { } ;
|
||||||
|
|
||||||
-- One can combine a numeral and a superlative.
|
-- One can combine a numeral and a superlative.
|
||||||
|
|
||||||
-- : Numeral -> A -> Ord ; -- third largest
|
-- : Numeral -> A -> Ord ; -- third largest
|
||||||
OrdNumeralSuperl num a = num ** { } ;
|
OrdNumeralSuperl num a = num ** { } ;
|
||||||
|
-}
|
||||||
|
|
||||||
-- : Quant
|
-- : Quant
|
||||||
DefArt = { } ;
|
DefArt = defQuant "a" "kan" "tan" "kuwan" NA ;
|
||||||
|
|
||||||
-- : Quant
|
-- : Quant
|
||||||
IndefArt = { s = artDef ;
|
IndefArt = indefQuant ** {sp = \\gn,c => "1"} ; -- TODO sp forms
|
||||||
indep = False ;
|
|
||||||
pref = [] ;
|
|
||||||
isDef = False } ; --has suffix, but turns into partitive in negative!
|
|
||||||
|
|
||||||
-- : Pron -> Quant
|
-- : Pron -> Quant
|
||||||
PossPron pron = { s = artDef ;
|
PossPron pron =
|
||||||
indep = True ;
|
let p = pron.poss ;
|
||||||
pref = pron.s ! Gen ;
|
gntbl = gnTable (BIND ++ p.sp ! SgMasc)
|
||||||
isDef = True } ;
|
(BIND ++ p.sp ! SgFem)
|
||||||
-}
|
(BIND ++ p.sp ! InvarPl)
|
||||||
|
in DefArt ** {
|
||||||
|
shortPoss = BIND ++ p.s ;
|
||||||
|
isPoss = True ;
|
||||||
|
s = \\c => let casevow = case c of {Nom => "u" ; Abs => "a"}
|
||||||
|
in gntbl ! SgMasc ++ BIND ++ casevow ;
|
||||||
|
sp = \\gn,c => let prefix = case gn of {SgFem => "t" ; _ => "k"} ;
|
||||||
|
casevow = case c of {Nom => "u" ; Abs => "a"}
|
||||||
|
in prefix ++ gntbl ! gn ++ BIND ++ casevow ;
|
||||||
|
v = p.v
|
||||||
|
} ;
|
||||||
|
|
||||||
--2 Common nouns
|
--2 Common nouns
|
||||||
|
|
||||||
-- : N -> CN
|
-- : N -> CN
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
resource ParadigmsSom = open CatSom, ResSom, Prelude in {
|
resource ParadigmsSom = open CatSom, ResSom, ParamSom, Prelude in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
@@ -30,6 +30,7 @@ oper
|
|||||||
ku : Preposition ;
|
ku : Preposition ;
|
||||||
la : Preposition ;
|
la : Preposition ;
|
||||||
u : Preposition ;
|
u : Preposition ;
|
||||||
|
noPrep : Preposition ;
|
||||||
|
|
||||||
|
|
||||||
--2 Nouns
|
--2 Nouns
|
||||||
@@ -41,6 +42,12 @@ oper
|
|||||||
--mkN : N -> Gender -> N ; -- Otherwise predictable but not gender (TODO does this even happen?)
|
--mkN : N -> Gender -> N ; -- Otherwise predictable but not gender (TODO does this even happen?)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkN2 : overload {
|
||||||
|
mkN2 : Str -> N2 ; -- Predictable N2, no preposition
|
||||||
|
mkN2 : Str -> Preposition -> N2 ; -- Predictable N2, given preposition
|
||||||
|
mkN2 : N -> Preposition -> N2 -- N2 out of noun and preposition
|
||||||
|
} ;
|
||||||
|
|
||||||
mkPN : overload {
|
mkPN : overload {
|
||||||
mkPN : Str -> PN ; -- Proper noun, default agr. P3 Sg Masc.
|
mkPN : Str -> PN ; -- Proper noun, default agr. P3 Sg Masc.
|
||||||
mkPN : Str -> Agr -> PN -- Proper noun, another agr.
|
mkPN : Str -> Agr -> PN -- Proper noun, another agr.
|
||||||
@@ -72,6 +79,12 @@ oper
|
|||||||
mkV2 : V -> Preposition -> V2 ; -- Already constructed verb with preposition
|
mkV2 : V -> Preposition -> V2 ; -- Already constructed verb with preposition
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkV3 : overload {
|
||||||
|
mkV3 : (sug : Str) -> V3 ; -- Predictable verb: imperative form, no preposition
|
||||||
|
mkV3 : (sug : Str) -> (_,_ : Preposition) -> V2 ; -- Regular verb, imperative and preposition
|
||||||
|
mkV3 : V -> (_,_ : Preposition) -> V2 ; -- Already constructed verb with preposition
|
||||||
|
} ;
|
||||||
|
|
||||||
-- TODO: actual constructors
|
-- TODO: actual constructors
|
||||||
-- mkVA : Str -> VA = \s -> lin VA (mkVerb s) ;
|
-- mkVA : Str -> VA = \s -> lin VA (mkVerb s) ;
|
||||||
--
|
--
|
||||||
@@ -138,6 +151,7 @@ oper
|
|||||||
ku = ResSom.ku ;
|
ku = ResSom.ku ;
|
||||||
la = ResSom.la ;
|
la = ResSom.la ;
|
||||||
u = ResSom.u ;
|
u = ResSom.u ;
|
||||||
|
noPrep = ResSom.noPrep ;
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
mkN = overload {
|
mkN = overload {
|
||||||
@@ -147,6 +161,15 @@ oper
|
|||||||
--mkN : N -> Gender -> N = \n,g -> n ** {g = g }
|
--mkN : N -> Gender -> N = \n,g -> n ** {g = g }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
shortPossN : N -> N -- force N to take short form of possessive suffix, e.g. family members
|
||||||
|
= \n -> n ** {shortPoss = True} ;
|
||||||
|
|
||||||
|
mkN2 = overload {
|
||||||
|
mkN2 : Str -> N2 = \s -> lin N2 (mkN1 s ** {c2 = noPrep}) ;
|
||||||
|
mkN2 : Str -> Preposition -> N2 = \s,p -> lin N2 (mkN1 s ** {c2 = p}) ;
|
||||||
|
mkN2 : N -> Preposition -> N2 = \n,p -> lin N2 (n ** {c2=p})
|
||||||
|
} ;
|
||||||
|
|
||||||
mkPN = overload {
|
mkPN = overload {
|
||||||
mkPN : Str -> PN = \s -> lin PN (mkPNoun s sgMasc) ;
|
mkPN : Str -> PN = \s -> lin PN (mkPNoun s sgMasc) ;
|
||||||
mkPN : Str -> Agr -> PN = \s,a -> lin PN (mkPNoun s a)
|
mkPN : Str -> Agr -> PN = \s,a -> lin PN (mkPNoun s a)
|
||||||
@@ -166,7 +189,7 @@ oper
|
|||||||
copula = ResSom.copula ;
|
copula = ResSom.copula ;
|
||||||
|
|
||||||
regV : Str -> Verb = \s -> case s of {
|
regV : Str -> Verb = \s -> case s of {
|
||||||
-- _ + g@#c + s@#c + "o" => cJoogso s ;
|
_ + #c + #c + "o" => cJoogso s ;
|
||||||
_ + "o" => cQaado s ; ----
|
_ + "o" => cQaado s ; ----
|
||||||
_ + "i" => cKari s ;
|
_ + "i" => cKari s ;
|
||||||
_ + "ee" => cYaree s ;
|
_ + "ee" => cYaree s ;
|
||||||
@@ -178,6 +201,12 @@ oper
|
|||||||
mkV2 : Str -> Preposition -> V2 = \s,p -> lin V2 (regV s ** {c2 = p}) ;
|
mkV2 : Str -> Preposition -> V2 = \s,p -> lin V2 (regV s ** {c2 = p}) ;
|
||||||
mkV2 : V -> Preposition -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
|
mkV2 : V -> Preposition -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkV3 = overload {
|
||||||
|
mkV3 : (sug : Str) -> V3 = \s -> lin V3 (regV s ** {c2,c3 = noPrep}) ;
|
||||||
|
mkV3 : (sug : Str) -> (_,_ : Preposition) -> V3 = \s,p,q -> lin V3 (regV s ** {c2 = p ; c3 = q}) ;
|
||||||
|
mkV3 : V -> (_,_ : Preposition) -> V2 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) ;
|
||||||
|
} ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ oper
|
|||||||
|
|
||||||
param
|
param
|
||||||
Morpheme = mO | mKa | mTa ;
|
Morpheme = mO | mKa | mTa ;
|
||||||
|
-- | mKii | mTii ; -- TODO check if needed
|
||||||
|
|
||||||
oper
|
oper
|
||||||
allomorph : Morpheme -> Str -> Str = \x,stem ->
|
allomorph : Morpheme -> Str -> Str = \x,stem ->
|
||||||
@@ -34,18 +35,24 @@ oper
|
|||||||
"c"|"g"|"i"|"j"|"x"|"s" => "yo" ;
|
"c"|"g"|"i"|"j"|"x"|"s" => "yo" ;
|
||||||
_ => "o" } ;
|
_ => "o" } ;
|
||||||
|
|
||||||
-- Based on the table on page 21--TODO find generalisations in patterns
|
mTa => case stem of { -- Saeed p. 29
|
||||||
mTa => case stem of {
|
_ + ("dh") => "dha" ; ---- ???
|
||||||
_ + ("dh") => "a" ; ---- ??? just guessing
|
_ + (#v|"'"|"c"|"d"|"h"|"kh"|"q"|"w"|"x"|"y") => "da" ;
|
||||||
_ + ("d"|"c"|"h"|"x"|"q"|"'"|"i"|"y"|"w") => "da" ;
|
|
||||||
_ + "l" => "sha" ;
|
_ + "l" => "sha" ;
|
||||||
_ => "ta" } ;
|
_ {- b,f,g,n,r,s -} => "ta" } ;
|
||||||
|
|
||||||
mKa => case stem of {
|
mKa => case stem of { -- Saeed p. 28-29
|
||||||
_ + ("g"|"aa"|"i"|"y"|"w") => "ga" ;
|
_ + ("r"|"g"|"w"|"y"|"i"|"u"|"aa"|"oo"|"uu") => "ga" ;
|
||||||
_ + ("c"|"h"|"x"|"q"|"'") => "a" ;
|
_ + ("q"|"'"|"kh"|"x"|"c"|"h") => "a" ;
|
||||||
_ + ("e"|"o") => "ha" ;
|
_ + ("e"|"o") => "ha" ;
|
||||||
_ => "ka" }
|
_ {- b,d,dh,f,j,l,n,r,sh-} => "ka" }
|
||||||
|
|
||||||
|
{-- TODO check if needed/implement elsewhere:
|
||||||
|
mKii => case stem of {
|
||||||
|
_+ #vv + #c => init (allomorph mKa stem) ++ "ii" ; -- Should not change stem vowel
|
||||||
|
_ + ("'"|"x"|"c") => "ii" ; -- Should change stem vowel
|
||||||
|
_ => init (allomorph mKa stem) ++ "ii" } ;
|
||||||
|
mTii => init (allomorph mTa stem) ++ "ii" -}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -55,7 +62,8 @@ oper
|
|||||||
param
|
param
|
||||||
Case = Nom | Abs ;
|
Case = Nom | Abs ;
|
||||||
Gender = Masc | Fem ;
|
Gender = Masc | Fem ;
|
||||||
Vowel = vA | vE | vI | vO | vU ; -- For vowel assimilation
|
Vowel = vA | vE | vI | vO | vU | NA ; -- For vowel assimilation
|
||||||
|
GenNum = SgMasc | SgFem | InvarPl ; -- For Quant
|
||||||
|
|
||||||
Inclusion = Excl | Incl ;
|
Inclusion = Excl | Incl ;
|
||||||
Agreement =
|
Agreement =
|
||||||
@@ -67,6 +75,8 @@ param
|
|||||||
| Pl3
|
| Pl3
|
||||||
| Impers ; -- Verb agrees with Sg3, but needed for preposition contraction
|
| Impers ; -- Verb agrees with Sg3, but needed for preposition contraction
|
||||||
|
|
||||||
|
State = Definite | Indefinite ;
|
||||||
|
|
||||||
NForm =
|
NForm =
|
||||||
Indef Number
|
Indef Number
|
||||||
| Def Number Vowel -- Stems for definite and determinative suffixes
|
| Def Number Vowel -- Stems for definite and determinative suffixes
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ resource ResSom = ParamSom ** open Prelude, Predef, ParamSom in {
|
|||||||
-- Nouns
|
-- Nouns
|
||||||
oper
|
oper
|
||||||
|
|
||||||
Noun : Type = {s : NForm => Str ; g : Gender} ;
|
Noun : Type = {s : NForm => Str ; g : Gender ; shortPoss : Bool} ;
|
||||||
Noun2 : Type = Noun ** {c2 : Preposition} ;
|
Noun2 : Type = Noun ** {c2 : Preposition} ;
|
||||||
Noun3 : Type = Noun2 ** {c3 : Preposition} ;
|
Noun3 : Type = Noun2 ** {c3 : Preposition} ;
|
||||||
|
|
||||||
@@ -23,11 +23,11 @@ oper
|
|||||||
Masc => wiil } ;
|
Masc => wiil } ;
|
||||||
defStems : Str -> Vowel => Str = \s -> case s of {
|
defStems : Str -> Vowel => Str = \s -> case s of {
|
||||||
ilk + "aha" =>
|
ilk + "aha" =>
|
||||||
table { vA => ilk+"ah" ;
|
table { vE => ilk+"eh" ;
|
||||||
vE => ilk+"eh" ;
|
|
||||||
vI => ilk+"ih" ;
|
vI => ilk+"ih" ;
|
||||||
vO => ilk+"oh" ;
|
vO => ilk+"oh" ;
|
||||||
vU => ilk+"uh"
|
vU => ilk+"uh" ;
|
||||||
|
_ => ilk+"ah"
|
||||||
} ;
|
} ;
|
||||||
_ => table { _ => init s }
|
_ => table { _ => init s }
|
||||||
} ;
|
} ;
|
||||||
@@ -39,7 +39,8 @@ oper
|
|||||||
Numerative => bisadood ;
|
Numerative => bisadood ;
|
||||||
Def Sg vow => defStems wiilka ! vow ;
|
Def Sg vow => defStems wiilka ! vow ;
|
||||||
Def Pl vow => defStems wiilasha ! vow } ;
|
Def Pl vow => defStems wiilasha ! vow } ;
|
||||||
g = gender } ;
|
g = gender ;
|
||||||
|
shortPoss = False} ;
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
-- Regular noun paradigms
|
-- Regular noun paradigms
|
||||||
@@ -55,10 +56,11 @@ oper
|
|||||||
|
|
||||||
-- 3) Masculine, plural with duplication
|
-- 3) Masculine, plural with duplication
|
||||||
nMas mas = let s = last mas ;
|
nMas mas = let s = last mas ;
|
||||||
|
a = last (init mas) ;
|
||||||
ka = allomorph mKa mas ;
|
ka = allomorph mKa mas ;
|
||||||
ta = allomorph mTa mas ;
|
ta = allomorph mTa mas ;
|
||||||
sha = case ta of {"sha" => ta ; _ => s + ta } in
|
sha = case ta of {"sha" => ta ; _ => s + ta } in
|
||||||
mkNoun mas (mas + ka) (mas + "a" + s) (mas + "a" + sha) Masc ;
|
mkNoun mas (mas + ka) (mas + a + s) (mas + a + sha) Masc ;
|
||||||
|
|
||||||
-- 4a) Feminine, plural with ó
|
-- 4a) Feminine, plural with ó
|
||||||
nUl ul = let o = case last ul of { "i" => "yo" ; _ => "o" } ;
|
nUl ul = let o = case last ul of { "i" => "yo" ; _ => "o" } ;
|
||||||
@@ -139,29 +141,69 @@ oper
|
|||||||
-- keenna teenna kuweenna (1 pl. inkl.)
|
-- keenna teenna kuweenna (1 pl. inkl.)
|
||||||
-- kiinna tiinna kuwiinna
|
-- kiinna tiinna kuwiinna
|
||||||
-- kooda tooda kuwooda
|
-- kooda tooda kuwooda
|
||||||
Pronoun : Type = NounPhrase ;
|
Pronoun : Type = NounPhrase ** {
|
||||||
|
poss : { -- for PossPron : Pron -> Quant
|
||||||
|
--s, -- possessive suffix
|
||||||
|
sp : GenNum => Str ; -- independent forms
|
||||||
|
s : Str ; -- special case: e.g. family members, name
|
||||||
|
v : Vowel}
|
||||||
|
} ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Det, Quant, Card, Ord
|
-- Det, Quant, Card, Ord
|
||||||
Quant : Type = SS ; ---- TODO
|
|
||||||
|
|
||||||
Determiner : Type = {
|
BaseQuant : Type = {
|
||||||
s : Case => Str ;
|
s : Case => Str ;
|
||||||
sp : Gender => Case => Str ;
|
isPoss : Bool ;
|
||||||
d : NForm
|
shortPoss : Str ; -- short form of possessive, e.g. family members
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkDeterminer : (x1,_,x3 : Str) -> NForm -> Determiner = \an,kani,tani,nf ->
|
Determiner : Type = BaseQuant ** {
|
||||||
let ani : Str = case an of { _ + #c => an+"i" ;
|
pref : Str ; -- Numerals ?
|
||||||
_ => case nf of { Def _ _ => "u" ;
|
sp : Gender => Case => Str ;
|
||||||
_ => [] }
|
d : NForm -- a combination of number, state and vowel
|
||||||
} ;
|
} ;
|
||||||
bind : Str -> Str = \x -> case x of { "" => [] ; _ => BIND ++ x } ;
|
|
||||||
in { s = table { Nom => bind ani ; Abs => bind an } ;
|
Quant : Type = BaseQuant ** {
|
||||||
sp = table { Fem => table { Nom => tani ; Abs => init tani } ;
|
sp : GenNum => Case => Str ;
|
||||||
Masc => table { Nom => kani ; Abs => init kani }
|
st : State ;
|
||||||
|
v : Vowel ;
|
||||||
} ;
|
} ;
|
||||||
d = nf
|
|
||||||
|
Num : Type = {
|
||||||
|
s : Str ; -- TODO check if enough
|
||||||
|
n : Number ; -- singular or plural
|
||||||
|
isNum : Bool -- whether to choose Numerative as the value of NForm
|
||||||
|
} ;
|
||||||
|
|
||||||
|
baseQuant : BaseQuant = {
|
||||||
|
s = \\_ => [] ;
|
||||||
|
isPoss = False ;
|
||||||
|
shortPoss = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
defQuant = defQuantBind True ;
|
||||||
|
|
||||||
|
defQuantBind : (bind : Bool) -> (s, kan, tan, kuwan : Str) -> Vowel -> Quant = \b,s,spm,spf,spp,v ->
|
||||||
|
let bind : Str -> Str = \x -> case b of {False => x ; True => BIND ++ x} ;
|
||||||
|
in baseQuant ** {
|
||||||
|
s = \\c =>
|
||||||
|
let nom = case v of {NA => "u" ; _ => s + "i"}
|
||||||
|
in case c of {Abs => bind s ; Nom => bind nom} ;
|
||||||
|
sp = \\gn,c =>
|
||||||
|
let i = case c of {Nom => "i"; Abs => []}
|
||||||
|
in gnTable (spm + i) (spf + i) (spp + i) ! gn ;
|
||||||
|
st = Definite ;
|
||||||
|
v = v ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
gnTable : (m,f,p : Str) -> (GenNum => Str) = \m,f,p ->
|
||||||
|
table {SgMasc => m ; SgFem => f ; _ => p} ;
|
||||||
|
|
||||||
|
indefQuant : Quant = baseQuant ** {
|
||||||
|
sp = \\gn,c => [] ;
|
||||||
|
st = Indefinite ;
|
||||||
|
v = NA ; -- Will be ignored in DetQuant
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
@@ -305,7 +347,7 @@ oper
|
|||||||
_ => arki + "n" } ; -- otherwise add n.
|
_ => arki + "n" } ; -- otherwise add n.
|
||||||
|
|
||||||
-- Some predictable sound changes
|
-- Some predictable sound changes
|
||||||
t : Str = case arag of { -- kari+seen, noq+deen, (sug|joogsa|qaada)+teen,
|
t : Str = case arag of { -- kari+seen, bixi noq+deen, (sug|joogsa|qaada)+teen,
|
||||||
_ + ("i"|"y") => "s" ; -- t changes into s in front of i/y
|
_ + ("i"|"y") => "s" ; -- t changes into s in front of i/y
|
||||||
_ + ("x"|"q"|"c") => "d" ; -- t changes into d in front of x/q/c
|
_ + ("x"|"q"|"c") => "d" ; -- t changes into d in front of x/q/c
|
||||||
_ => "t" } ;
|
_ => "t" } ;
|
||||||
@@ -364,7 +406,7 @@ oper
|
|||||||
in mkVerb joogso (joogsa + "d") joogsa ;
|
in mkVerb joogso (joogsa + "d") joogsa ;
|
||||||
|
|
||||||
cQaado qaado =
|
cQaado qaado =
|
||||||
let qaa = drop 2 qaado
|
let qaa = init (init qaado)
|
||||||
in mkVerb qaado -- Imperative sg, with the vowel
|
in mkVerb qaado -- Imperative sg, with the vowel
|
||||||
(qaa + "t") -- Per1 Sg, Per3 Pl and Per3 Sg Masc
|
(qaa + "t") -- Per1 Sg, Per3 Pl and Per3 Sg Masc
|
||||||
(qaa + "da") ; -- Per2 Pl and others
|
(qaa + "da") ; -- Per2 Pl and others
|
||||||
|
|||||||
@@ -69,11 +69,11 @@ lin somePl_Det = R.indefDet "" pl ;
|
|||||||
lin someSg_Det = R.indefDet "" sg ;
|
lin someSg_Det = R.indefDet "" sg ;
|
||||||
|
|
||||||
lin no_Quant = mkPrep no_Quant
|
lin no_Quant = mkPrep no_Quant
|
||||||
|
-}
|
||||||
lin that_Quant = R.defDet [] sg ** { s = R.quantHori } ;
|
lin that_Quant = defQuant "aas" "kaas" "taas" "kuwaas" vA ;
|
||||||
lin this_Quant = R.defDet [] sg ** { s = R.quantHau } ;
|
lin this_Quant = defQuant "an" "kan" "tan" "kuwan" vA ;
|
||||||
lin which_IQuant = R.defDet "" sg ** { s = R.artDef } ;
|
--lin which_IQuant = defQuant
|
||||||
|
{-
|
||||||
|
|
||||||
-----
|
-----
|
||||||
-- NP
|
-- NP
|
||||||
@@ -123,30 +123,38 @@ lin with_Prep = prepTable ! la ;
|
|||||||
i_Pron = {
|
i_Pron = {
|
||||||
s = table {Nom => "aan" ; Abs => "i"} ;
|
s = table {Nom => "aan" ; Abs => "i"} ;
|
||||||
a = Sg1 ; isPron = True ; sp = "aniga" ;
|
a = Sg1 ; isPron = True ; sp = "aniga" ;
|
||||||
|
poss = {s = "ay" ; v = vA ; sp = gnTable "ayg" "ayd" "uwayg"}
|
||||||
} ;
|
} ;
|
||||||
|
youPol_Pron, -- TODO check
|
||||||
youSg_Pron = {
|
youSg_Pron = {
|
||||||
s = table {Nom => "aad" ; Abs => "ku"} ;
|
s = table {Nom => "aad" ; Abs => "ku"} ;
|
||||||
a = Sg2 ; isPron = True ; sp = "adiga" ;
|
a = Sg2 ; isPron = True ; sp = "adiga" ;
|
||||||
|
poss = {s = "aa" ; v = vA ; sp = gnTable "aag" "aad" "uwaag"}
|
||||||
} ;
|
} ;
|
||||||
he_Pron = {
|
he_Pron = {
|
||||||
s = table {Nom => "uu" ; Abs => []} ;
|
s = table {Nom => "uu" ; Abs => []} ;
|
||||||
a = Sg3 Masc ; isPron = True ; sp = "isaga" ;
|
a = Sg3 Masc ; isPron = True ; sp = "isaga" ;
|
||||||
|
poss = {s = "iis" ; v = vI ; sp = gnTable "iis" "iis" "uwiis"}
|
||||||
} ;
|
} ;
|
||||||
she_Pron = {
|
she_Pron = {
|
||||||
s = table {Nom => "ay" ; Abs => []} ;
|
s = table {Nom => "ay" ; Abs => []} ;
|
||||||
a = Sg3 Fem ; isPron = True ; sp = "iyada" ;
|
a = Sg3 Fem ; isPron = True ; sp = "iyada" ;
|
||||||
|
poss = {s = "eed" ; v = vE ; sp = gnTable "eed" "eed" "uweed"}
|
||||||
} ;
|
} ;
|
||||||
we_Pron = {
|
we_Pron = {
|
||||||
s = table {Nom => "aan" ; Abs => "na"} ;
|
s = table {Nom => "aan" ; Abs => "na"} ;
|
||||||
a = Pl1 Incl ; isPron = True ; sp = "innaga" ;
|
a = Pl1 Incl ; isPron = True ; sp = "innaga" ;
|
||||||
|
poss = {s = "een" ; v = vE ; sp = gnTable "eenn" "eenn" "uweenn"}
|
||||||
} ;
|
} ;
|
||||||
youPl_Pron = {
|
youPl_Pron = {
|
||||||
s = table {Nom => "aad" ; Abs => "idin"} ;
|
s = table {Nom => "aad" ; Abs => "idin"} ;
|
||||||
a = Pl2 ; isPron = True ; sp = "idinka" ;
|
a = Pl2 ; isPron = True ; sp = "idinka" ;
|
||||||
|
poss = {s = "iin" ; v = vI ; sp = gnTable "iinn" "iinn" "uwiinn"}
|
||||||
} ;
|
} ;
|
||||||
they_Pron = {
|
they_Pron = {
|
||||||
s = table {Nom => "ay" ; Abs => []} ;
|
s = table {Nom => "ay" ; Abs => []} ;
|
||||||
a = Pl3 ; isPron = True ; sp = "iyaga" ;
|
a = Pl3 ; isPron = True ; sp = "iyaga" ;
|
||||||
|
poss = {s = "ood" ; v = vO ; sp = gnTable "ood" "ood" "uwood"}
|
||||||
} ;
|
} ;
|
||||||
{-
|
{-
|
||||||
lin whatPl_IP = ;
|
lin whatPl_IP = ;
|
||||||
|
|||||||
@@ -7932,6 +7932,7 @@ fun camarógrafo_N : N ;
|
|||||||
fun camarón_N : N ;
|
fun camarón_N : N ;
|
||||||
fun cambalache_N : N ;
|
fun cambalache_N : N ;
|
||||||
fun cambiable_A : A ;
|
fun cambiable_A : A ;
|
||||||
|
fun cambiador_N : N ;
|
||||||
fun cambiante_A : A ;
|
fun cambiante_A : A ;
|
||||||
fun cambiar_N : N ;
|
fun cambiar_N : N ;
|
||||||
fun cambiar_V : V ;
|
fun cambiar_V : V ;
|
||||||
@@ -10310,6 +10311,7 @@ fun colmillo_N : N ;
|
|||||||
fun colmo_N : N ;
|
fun colmo_N : N ;
|
||||||
fun colocación_N : N ;
|
fun colocación_N : N ;
|
||||||
fun colocación_de_minas_N : N ;
|
fun colocación_de_minas_N : N ;
|
||||||
|
fun colocado_A : A ;
|
||||||
fun colocar_V : V ;
|
fun colocar_V : V ;
|
||||||
fun colocar_burlete_V : V ;
|
fun colocar_burlete_V : V ;
|
||||||
fun colocar_en_barracas_V : V ;
|
fun colocar_en_barracas_V : V ;
|
||||||
@@ -14958,6 +14960,7 @@ fun doctrina_judicial_N : N ;
|
|||||||
fun doctrinal_A : A ;
|
fun doctrinal_A : A ;
|
||||||
fun documentación_N : N ;
|
fun documentación_N : N ;
|
||||||
fun documentación_de_software_N : N ;
|
fun documentación_de_software_N : N ;
|
||||||
|
fun documentado_A : A ;
|
||||||
fun documental_A : A ;
|
fun documental_A : A ;
|
||||||
fun documental_N : N ;
|
fun documental_N : N ;
|
||||||
fun documentar_V : V ;
|
fun documentar_V : V ;
|
||||||
@@ -16833,6 +16836,7 @@ fun escapulario_N : N ;
|
|||||||
fun escarabajo_N : N ;
|
fun escarabajo_N : N ;
|
||||||
fun escarabajo_bombardero_N : N ;
|
fun escarabajo_bombardero_N : N ;
|
||||||
fun escarabajo_del_frijol_N : N ;
|
fun escarabajo_del_frijol_N : N ;
|
||||||
|
fun escaramujo_N : N ;
|
||||||
fun escaramuza_N : N ;
|
fun escaramuza_N : N ;
|
||||||
fun escaramuzador_N : N ;
|
fun escaramuzador_N : N ;
|
||||||
fun escaramuzar_V : V ;
|
fun escaramuzar_V : V ;
|
||||||
@@ -17023,8 +17027,6 @@ fun esfera_N : N ;
|
|||||||
fun esferómetro_N : N ;
|
fun esferómetro_N : N ;
|
||||||
fun esfigmomanómetro_N : N ;
|
fun esfigmomanómetro_N : N ;
|
||||||
fun esfinge_N : N ;
|
fun esfinge_N : N ;
|
||||||
fun esfinter_N : N ;
|
|
||||||
fun esfinter_anal_N : N ;
|
|
||||||
fun esforzar_V : V ;
|
fun esforzar_V : V ;
|
||||||
fun esforzarse_V : V ;
|
fun esforzarse_V : V ;
|
||||||
fun esfuerza_N : N ;
|
fun esfuerza_N : N ;
|
||||||
@@ -19726,6 +19728,8 @@ fun freno_N : N ;
|
|||||||
fun freno_de_pies_N : N ;
|
fun freno_de_pies_N : N ;
|
||||||
fun frenológico_A : A ;
|
fun frenológico_A : A ;
|
||||||
fun frente_N : N ;
|
fun frente_N : N ;
|
||||||
|
fun frente_1_N : N ; -- forehead
|
||||||
|
fun frente_2_N : N ; -- front
|
||||||
fun frente_de_onda_N : N ;
|
fun frente_de_onda_N : N ;
|
||||||
fun frente_popular_N : N ;
|
fun frente_popular_N : N ;
|
||||||
fun frenéticamente_Adv : Adv ;
|
fun frenéticamente_Adv : Adv ;
|
||||||
@@ -23057,6 +23061,7 @@ fun individual_A : A ;
|
|||||||
fun individualidad_N : N ;
|
fun individualidad_N : N ;
|
||||||
fun individualismo_N : N ;
|
fun individualismo_N : N ;
|
||||||
fun individualización_N : N ;
|
fun individualización_N : N ;
|
||||||
|
fun individualizado_A : A ;
|
||||||
fun individualmente_Adv : Adv ;
|
fun individualmente_Adv : Adv ;
|
||||||
fun individuo_N : N ;
|
fun individuo_N : N ;
|
||||||
fun indivisible_A : A ;
|
fun indivisible_A : A ;
|
||||||
@@ -23073,6 +23078,7 @@ fun indonesa_N : N ;
|
|||||||
fun indonés_N : N ;
|
fun indonés_N : N ;
|
||||||
fun inducir_V : V ;
|
fun inducir_V : V ;
|
||||||
fun inductancia_N : N ;
|
fun inductancia_N : N ;
|
||||||
|
fun inductivo_A : A ;
|
||||||
fun inductor_N : N ;
|
fun inductor_N : N ;
|
||||||
fun indudable_A : A ;
|
fun indudable_A : A ;
|
||||||
fun indudablemente_Adv : Adv ;
|
fun indudablemente_Adv : Adv ;
|
||||||
@@ -27590,6 +27596,7 @@ fun moho_mucilaginoso_verdadero_N : N ;
|
|||||||
fun mohoso_A : A ;
|
fun mohoso_A : A ;
|
||||||
fun mohria_N : N ;
|
fun mohria_N : N ;
|
||||||
fun mohín_N : N ;
|
fun mohín_N : N ;
|
||||||
|
fun mojado_A : A ;
|
||||||
fun mojar_V : V ;
|
fun mojar_V : V ;
|
||||||
fun mojave_N : N ;
|
fun mojave_N : N ;
|
||||||
fun mojiganga_N : N ;
|
fun mojiganga_N : N ;
|
||||||
@@ -30611,7 +30618,9 @@ fun parroquia_N : N ;
|
|||||||
fun parsec_N : N ;
|
fun parsec_N : N ;
|
||||||
fun parsimonia_N : N ;
|
fun parsimonia_N : N ;
|
||||||
fun parsismo_N : N ;
|
fun parsismo_N : N ;
|
||||||
fun parte_N : N ;
|
fun parte_N : N ; -- parte_1_N is more common, this is an alias for it
|
||||||
|
fun parte_1_N : N ; -- part, section, portion
|
||||||
|
fun parte_2_N : N ; -- message, report, dispatch
|
||||||
fun parte_alícuota_A : A ;
|
fun parte_alícuota_A : A ;
|
||||||
fun parte_anterior_N : N ;
|
fun parte_anterior_N : N ;
|
||||||
fun parte_del_cuerpo_N : N ;
|
fun parte_del_cuerpo_N : N ;
|
||||||
@@ -34572,7 +34581,6 @@ fun recibo_desprendible_N : N ;
|
|||||||
fun reciclaje_N : N ;
|
fun reciclaje_N : N ;
|
||||||
fun reciclar_V : V ;
|
fun reciclar_V : V ;
|
||||||
fun nacido_N : N ;
|
fun nacido_N : N ;
|
||||||
fun recien_nacido_N : N ;
|
|
||||||
fun reciente_A : A ;
|
fun reciente_A : A ;
|
||||||
fun recinto_N : N ;
|
fun recinto_N : N ;
|
||||||
fun recinto_natural_N : N ;
|
fun recinto_natural_N : N ;
|
||||||
@@ -34587,11 +34595,12 @@ fun recirculación_N : N ;
|
|||||||
fun recitador_N : N ;
|
fun recitador_N : N ;
|
||||||
fun recitar_V : V ;
|
fun recitar_V : V ;
|
||||||
fun recitar_una_rapsodia_V : V ;
|
fun recitar_una_rapsodia_V : V ;
|
||||||
fun recién_N : N ;
|
|
||||||
fun recién_casada_N : N ;
|
fun recién_casada_N : N ;
|
||||||
fun recién_casado_N : N ;
|
fun recién_casado_N : N ;
|
||||||
fun recién_llegada_N : N ;
|
fun recién_llegada_N : N ;
|
||||||
fun recién_llegado_N : N ;
|
fun recién_llegado_N : N ;
|
||||||
|
fun recién_nacido_A : A ;
|
||||||
|
fun recién_nacido_N : N ;
|
||||||
fun reclamación_N : N ;
|
fun reclamación_N : N ;
|
||||||
fun reclamar_V : V ;
|
fun reclamar_V : V ;
|
||||||
fun reclamar_legalmente_V : V ;
|
fun reclamar_legalmente_V : V ;
|
||||||
@@ -35255,6 +35264,7 @@ fun reproductivo_A : A ;
|
|||||||
fun reproductor_A : A ;
|
fun reproductor_A : A ;
|
||||||
fun reproductor_N : N ;
|
fun reproductor_N : N ;
|
||||||
fun reproductor_de_casetes_N : N ;
|
fun reproductor_de_casetes_N : N ;
|
||||||
|
fun reprogramar_V : V ;
|
||||||
fun repromulgar_V : V ;
|
fun repromulgar_V : V ;
|
||||||
fun reptil_A : A ;
|
fun reptil_A : A ;
|
||||||
fun reptil_N : N ;
|
fun reptil_N : N ;
|
||||||
@@ -42558,4 +42568,91 @@ fun abstraer_V : V ;
|
|||||||
fun abstener_V : V ;
|
fun abstener_V : V ;
|
||||||
fun abrigar_V : V ;
|
fun abrigar_V : V ;
|
||||||
fun abalanzar_V : V ;
|
fun abalanzar_V : V ;
|
||||||
|
fun ecografía_N : N ;
|
||||||
|
fun entumecimiento_N : N ;
|
||||||
|
fun extractor_N : N ;
|
||||||
|
fun glóbulo_N : N ;
|
||||||
|
fun ante_Prep : Prep ;
|
||||||
|
fun traducido_A : A ;
|
||||||
|
fun irritado_A : A ;
|
||||||
|
fun mareo_A : A ;
|
||||||
|
fun web_N : N ;
|
||||||
|
fun almohadilla_N : N ;
|
||||||
|
fun descansa_N : N ;
|
||||||
|
fun aparencia_N : N ;
|
||||||
|
fun urocultivo_N : N ;
|
||||||
|
fun esterilla_N : N ;
|
||||||
|
fun puja_N : N ;
|
||||||
|
fun asir_N : N ;
|
||||||
|
fun ulcerado_A : A ;
|
||||||
|
fun coser_A : A ;
|
||||||
|
fun hinchazón_N : N ;
|
||||||
|
fun hinchado_A : A ;
|
||||||
|
fun capota_N : N ;
|
||||||
|
fun estresado_A : A ;
|
||||||
|
fun agrietado_A : A ;
|
||||||
|
fun tranquilizante_N : N ;
|
||||||
|
fun legaña_A : A ;
|
||||||
|
fun letargo_A : A ;
|
||||||
|
fun mucosa_N : N ;
|
||||||
|
fun girarse_V : V ;
|
||||||
|
fun esqueleto_N : N ;
|
||||||
|
fun electroencefalógrafo_N : N ;
|
||||||
|
fun sonrosado_A : A ;
|
||||||
|
fun miedo_A : A ;
|
||||||
|
fun enrojecimiento_N : N ;
|
||||||
|
fun policlínica_N : N ;
|
||||||
|
fun pigmentado_A : A ;
|
||||||
|
fun animoso_A : A ;
|
||||||
|
fun observador_A : A ;
|
||||||
|
fun pielonefritis_N : N ;
|
||||||
|
fun translucencia_N : N ;
|
||||||
|
fun sospecha_A : A ;
|
||||||
|
fun descontento_A : A ;
|
||||||
|
fun milimetro_N : N ;
|
||||||
|
fun milia_N : N ;
|
||||||
|
fun disuelto_A : A ;
|
||||||
|
fun liviano_A : A ;
|
||||||
|
fun calma_A : A ;
|
||||||
|
fun logopeda_N : N ;
|
||||||
|
fun fotosensibilidad_N : N ;
|
||||||
|
fun micción_N : N ;
|
||||||
|
fun admitido_A : A ;
|
||||||
|
fun inmunización_N : N ;
|
||||||
|
fun hemorroide_N : N ;
|
||||||
|
fun andador_N : N ;
|
||||||
|
fun túrbido_A : A ;
|
||||||
|
fun aprobado_A : A ;
|
||||||
|
fun brechar_V : V ;
|
||||||
|
fun sorprendido_A : A ;
|
||||||
|
fun engrandecido_A : A ;
|
||||||
|
fun resfrío_N : N ;
|
||||||
|
fun coyuntura_N : N ;
|
||||||
|
fun uroflujometría_N : N ;
|
||||||
|
fun flanco_N : N ;
|
||||||
|
fun merendar_V : V ;
|
||||||
|
fun mal_A : A ;
|
||||||
|
fun involucrado_A : A ;
|
||||||
|
fun tembloroso_A : A ;
|
||||||
|
fun sangrado_N : N ;
|
||||||
|
fun azulado_A : A ;
|
||||||
|
fun antihipertensivo_A : A ;
|
||||||
|
fun palidecer_V : V ;
|
||||||
|
fun relajante_N : N ;
|
||||||
|
fun audiólogo_N : N ;
|
||||||
|
fun apuntado_A : A ;
|
||||||
|
fun anamnesis_N : N ;
|
||||||
|
fun lactancia_N : N ;
|
||||||
|
fun emergencia_A : A ;
|
||||||
|
fun acrocianosis_N : N ;
|
||||||
|
fun cribado_N : N ;
|
||||||
|
fun bastoncillo_N : N ;
|
||||||
|
fun de_verdad_Adv : Adv ;
|
||||||
|
fun monitoreo_N : N ;
|
||||||
|
fun monitorear_V : V ;
|
||||||
|
fun levemente_Adv : Adv ;
|
||||||
|
fun amamantamiento_N : N ;
|
||||||
|
fun inducción_N : N ;
|
||||||
|
fun cosido_A : A ;
|
||||||
|
fun legañoso_A : A ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,14 +116,15 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg
|
|||||||
mkImperative isPol p vp =
|
mkImperative isPol p vp =
|
||||||
\\pol,g,n => case pol of {
|
\\pol,g,n => case pol of {
|
||||||
RPos => neg.p1 ++ imper ++ bindIf refl.isRefl ++ refl.pron
|
RPos => neg.p1 ++ imper ++ bindIf refl.isRefl ++ refl.pron
|
||||||
++ bindIf hasClit ++ clit ++ compl ;
|
++ bindIf hasClit ++ clit ++ particle ++ compl ;
|
||||||
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ subj ++ compl
|
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ subj ++ particle ++ compl
|
||||||
} where {
|
} where {
|
||||||
pe = case isPol of {True => P3 ; _ => p} ;
|
pe = case isPol of {True => P3 ; _ => p} ;
|
||||||
refl = case vp.s.vtyp of {
|
refl = case vp.s.vtyp of {
|
||||||
VRefl => {pron = reflPron n pe Acc ; isRefl = True} ;
|
VRefl => {pron = reflPron n pe Acc ; isRefl = True} ;
|
||||||
_ => {pron = [] ; isRefl = False}
|
_ => {pron = [] ; isRefl = False}
|
||||||
} ;
|
} ;
|
||||||
|
particle = vp.s.p ;
|
||||||
clit = vp.clit1 ++ vp.clit2 ;
|
clit = vp.clit1 ++ vp.clit2 ;
|
||||||
hasClit = vp.clit3.hasClit ;
|
hasClit = vp.clit3.hasClit ;
|
||||||
imper = vp.s.s ! vImper n pe ;
|
imper = vp.s.s ! vImper n pe ;
|
||||||
@@ -157,8 +158,8 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg
|
|||||||
relPron : Bool => AAgr => Case => Str = \\b,a,c =>
|
relPron : Bool => AAgr => Case => Str = \\b,a,c =>
|
||||||
case c of {
|
case c of {
|
||||||
Nom | Acc => "que" ;
|
Nom | Acc => "que" ;
|
||||||
CPrep P_a => "cuyo" ;
|
CPrep P_de => "cuyo" ;
|
||||||
_ => prepCase c ++ "cuyo"
|
_ => prepCase c ++ "que"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
pronSuch : AAgr => Str = aagrForms "tál" "tál" "tales" "tales" ;
|
pronSuch : AAgr => Str = aagrForms "tál" "tál" "tales" "tales" ;
|
||||||
@@ -196,7 +197,7 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg
|
|||||||
<_,Pl,P1> => cases "nos" "nosotras" ; --- nosotros
|
<_,Pl,P1> => cases "nos" "nosotras" ; --- nosotros
|
||||||
<_,Pl,P2> => cases "vos" "vosotras" ; --- vosotros
|
<_,Pl,P2> => cases "vos" "vosotras" ; --- vosotros
|
||||||
<Fem,Sg,P3> => cases3 "la" "le" "ella" ;
|
<Fem,Sg,P3> => cases3 "la" "le" "ella" ;
|
||||||
<_, Sg,P3> => cases3 "lo" "le" "èl" ;
|
<_, Sg,P3> => cases3 "lo" "le" "él" ;
|
||||||
<Fem,Pl,P3> => cases3 "las" "les" "ellas" ;
|
<Fem,Pl,P3> => cases3 "las" "les" "ellas" ;
|
||||||
<_, Pl,P3> => cases3 "los" "les" "ellos"
|
<_, Pl,P3> => cases3 "los" "les" "ellos"
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ concrete ExtendSpa of Extend = CatSpa ** ExtendRomanceFunctor -
|
|||||||
CompoundAP,
|
CompoundAP,
|
||||||
CompoundN,
|
CompoundN,
|
||||||
ExistsNP,
|
ExistsNP,
|
||||||
|
EmbedSSlash,
|
||||||
GenRP,
|
GenRP,
|
||||||
GenRP,
|
GenRP,
|
||||||
IAdvAdv,
|
IAdvAdv,
|
||||||
@@ -33,51 +34,36 @@ concrete ExtendSpa of Extend = CatSpa ** ExtendRomanceFunctor -
|
|||||||
-- put your own definitions here
|
-- put your own definitions here
|
||||||
|
|
||||||
lin
|
lin
|
||||||
iFem_Pron = mkPronoun
|
iFem_Pron = agr2pron ! {g=Fem ; n=Sg ; p=P1} ;
|
||||||
"yo" "me" "me" "mí"
|
youFem_Pron = agr2pron ! {g=Fem ; n=Sg ; p=P2} ;
|
||||||
"mi" "mi" "mis" "mis"
|
weFem_Pron = agr2pron ! {g=Fem ; n=Pl ; p=P1} ;
|
||||||
Fem Sg P1 ;
|
youPlFem_Pron = agr2pron ! {g=Fem ; n=Pl ; p=P2} ;
|
||||||
theyFem_Pron = mkPronoun
|
theyFem_Pron = agr2pron ! {g=Fem ; n=Pl ; p=P3} ;
|
||||||
"ellas" "las" "les" "ellas"
|
|
||||||
"su" "su" "sus" "sus"
|
|
||||||
Fem Pl P3 ;
|
|
||||||
|
|
||||||
weFem_Pron = mkPronoun
|
|
||||||
"nosotras" "nos" "nos" "nosotras"
|
|
||||||
"nuestro" "nuestra" "nuestros" "nuestras"
|
|
||||||
Fem Pl P1 ;
|
|
||||||
|
|
||||||
youFem_Pron = mkPronoun
|
|
||||||
"tú" "te" "te" "ti"
|
|
||||||
"tu" "tu" "tus" "tus"
|
|
||||||
Fem Sg P2 ;
|
|
||||||
youPlFem_Pron = mkPronoun
|
|
||||||
"vosotras" "os" "os" "vosotras"
|
|
||||||
"vuestro" "vuestra" "vuestros" "vuestras"
|
|
||||||
Fem Pl P2 ;
|
|
||||||
youPolFem_Pron = mkPronoun
|
youPolFem_Pron = mkPronoun
|
||||||
"usted" "la" "le" "usted"
|
"usted" "la" "le" "usted"
|
||||||
"su" "su" "sus" "sus"
|
"su" "su" "sus" "sus"
|
||||||
Fem Sg P3 ;
|
Fem Sg P3 ;
|
||||||
|
|
||||||
youPolPl_Pron = mkPronoun
|
youPolPl_Pron = mkPronoun
|
||||||
"ustedes" "los" "les" "usted"
|
"ustedes" "los" "les" "ustedes"
|
||||||
"su" "su" "sus" "sus"
|
"su" "su" "sus" "sus"
|
||||||
Masc Pl P3 ;
|
Masc Pl P3 ;
|
||||||
youPolPlFem_Pron = mkPronoun
|
youPolPlFem_Pron = mkPronoun
|
||||||
"ustedes" "las" "les" "usted"
|
"ustedes" "las" "les" "ustedes"
|
||||||
"su" "su" "sus" "sus"
|
"su" "su" "sus" "sus"
|
||||||
Fem Pl P3 ;
|
Fem Pl P3 ;
|
||||||
|
|
||||||
ICompAP ap = {
|
ICompAP ap = {
|
||||||
s =\\a => "que tan" ++ ap.s ! (genNum2Aform a.g a.n) ;
|
s =\\a => "qué tan" ++ ap.s ! (genNum2Aform a.g a.n) ;
|
||||||
cop = serCopula
|
cop = serCopula
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IAdvAdv adv = {
|
IAdvAdv adv = {
|
||||||
s = "que tan" ++ adv.s
|
s = "qué tan" ++ adv.s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
EmbedSSlash s = {s = \\_ => "lo que" ++ s.s ! {g=Masc ; n=Sg} ! Indic} ;
|
||||||
|
|
||||||
ExistsNP np =
|
ExistsNP np =
|
||||||
mkClause [] True False np.a
|
mkClause [] True False np.a
|
||||||
(insertComplement (\\_ => (np.s ! Nom).ton)
|
(insertComplement (\\_ => (np.s ! Nom).ton)
|
||||||
@@ -85,7 +71,7 @@ concrete ExtendSpa of Extend = CatSpa ** ExtendRomanceFunctor -
|
|||||||
|
|
||||||
CompoundN noun noun2 = { -- order is different because that's needed for correct translation from english
|
CompoundN noun noun2 = { -- order is different because that's needed for correct translation from english
|
||||||
s = \\n => noun2.s ! n
|
s = \\n => noun2.s ! n
|
||||||
++ variants {"de" ; genForms "do" "da" ! noun.g}
|
++ variants {"de" ; genForms "del" "de la" ! noun.g}
|
||||||
++ noun.s ! Sg ;
|
++ noun.s ! Sg ;
|
||||||
g = noun2.g
|
g = noun2.g
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
concrete IdiomSpa of Idiom = CatSpa **
|
concrete IdiomSpa of Idiom = CatSpa **
|
||||||
open (P = ParamX), MorphoSpa, ParadigmsSpa, BeschSpa, Prelude in {
|
open (P = ParamX), MorphoSpa, ParadigmsSpa, BeschSpa, (N=NounSpa), Prelude in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
@@ -20,13 +20,25 @@ concrete IdiomSpa of Idiom = CatSpa **
|
|||||||
|
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
mkClause [] True False (agrP3 Masc Sg)
|
mkClause [] True False (agrP3 Masc Sg)
|
||||||
(insertComplement (\\_ => (np.s ! Acc).ton) (predV (verboV (hay_3 "haber")))) ;
|
(insertComplement (\\_ => (np.s ! Acc).ton) hay_VP) ;
|
||||||
|
|
||||||
|
ExistNPAdv np adv = ExistNP (N.AdvNP np adv) ;
|
||||||
|
|
||||||
ExistIP ip = {
|
ExistIP ip = {
|
||||||
s = \\t,a,p,_ =>
|
s = \\t,a,p,_ =>
|
||||||
ip.s ! Nom ++
|
ip.s ! Nom ++
|
||||||
(mkClause [] True False (agrP3 Masc Sg) (predV (verboV (hay_3 "haber")))).s ! DDir ! t ! a ! p ! Indic
|
(mkClause [] True False (agrP3 Masc Sg) hay_VP).s ! DDir ! t ! a ! p ! Indic
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
ExistIPAdv ip adv = {
|
||||||
|
s = \\t,a,p,_ =>
|
||||||
|
ip.s ! Nom ++
|
||||||
|
(mkClause [] True False (agrP3 Masc Sg) hay_VP).s ! DDir ! t ! a ! p ! Indic
|
||||||
|
++ adv.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- ImpP3 np vp = {} ;
|
||||||
|
|
||||||
ProgrVP vp =
|
ProgrVP vp =
|
||||||
insertComplement
|
insertComplement
|
||||||
(\\agr =>
|
(\\agr =>
|
||||||
@@ -42,4 +54,22 @@ concrete IdiomSpa of Idiom = CatSpa **
|
|||||||
mkImperative False P1 vp ! RPos ! Masc ! Pl ; --- fem
|
mkImperative False P1 vp ! RPos ! Masc ! Pl ; --- fem
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- : NP -> NP ; -- the president himself (is at home)
|
||||||
|
-- SelfNP np =
|
||||||
|
|
||||||
|
-- : VP -> VP ; -- is himself at home
|
||||||
|
SelfAdvVP,
|
||||||
|
SelfAdVVP = selfVP ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
hay_VP = predV (verboV (hay_3 "haber")) ;
|
||||||
|
selfVP : VP -> VP = insertComplement (
|
||||||
|
\\agr => case agr of {
|
||||||
|
{g = g ; n = n ; p = p} => table {
|
||||||
|
P1 => numForms "yo mismo" "yo misma" ! n ;
|
||||||
|
P2 => genNumForms "tu mismo" "tu misma" "vosotros mismos" "vosotras mismas" ! g ! n ;
|
||||||
|
P3 => genNumForms "él mismo" "ella misma" "ellos mismos" "ellas mismas" ! g ! n
|
||||||
|
} ! p
|
||||||
|
}
|
||||||
|
) ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ lin
|
|||||||
girl_N = regN "niña" ;
|
girl_N = regN "niña" ;
|
||||||
glove_N = regN "guante" ;
|
glove_N = regN "guante" ;
|
||||||
gold_N = regN "oro" ;
|
gold_N = regN "oro" ;
|
||||||
good_A = prefA (mkADeg (regA "bueno") (regA "mejor")) ; ---- adv?
|
good_A = prefA (mkA (mkA "buen" "bueno" "buena" "buena" "buenos" "buenas" "bien") (mkA "mejor")) ;
|
||||||
go_V = (verboV (ir_46 "ir")) ;
|
go_V = (verboV (ir_46 "ir")) ;
|
||||||
green_A = regADeg "verde" ;
|
green_A = regADeg "verde" ;
|
||||||
harbour_N = regN "puerto" ;
|
harbour_N = regN "puerto" ;
|
||||||
|
|||||||
@@ -55,17 +55,14 @@ oper
|
|||||||
mkDet = overload {
|
mkDet = overload {
|
||||||
-- Does not inflect for number
|
-- Does not inflect for number
|
||||||
mkDet : Str -> Number -> Det = \piu,n -> lin Det {
|
mkDet : Str -> Number -> Det = \piu,n -> lin Det {
|
||||||
s,sp = \\_,_ => piu ;
|
s,sp = \\_,c => prepCase c ++ piu ;
|
||||||
n = n ;
|
n = n ;
|
||||||
s2 = [] ;
|
s2 = [] ;
|
||||||
isNeg = False
|
isNeg = False
|
||||||
} ;
|
} ;
|
||||||
-- Inflects for number
|
-- Inflects for number
|
||||||
mkDet : Str -> Str -> Number -> Det = \alcuni,alcune,n -> lin Det {
|
mkDet : Str -> Str -> Number -> Det = \alcuni,alcune,n -> lin Det {
|
||||||
s,sp = table {
|
s,sp = \\g,c => prepCase c ++ genForms alcuni alcune ! g ;
|
||||||
Masc => \\_ => alcuni ;
|
|
||||||
Fem => \\_ => alcune
|
|
||||||
} ;
|
|
||||||
n = n ;
|
n = n ;
|
||||||
s2 = [] ;
|
s2 = [] ;
|
||||||
isNeg = False
|
isNeg = False
|
||||||
|
|||||||