1
0
forked from GitHub/gf-rgl

- add Por to complete languages (although it's not quite there yet)

- update headers
- add Por modules to lib/src/api/
This commit is contained in:
odanoburu
2018-03-29 20:17:39 -03:00
parent cc12f0da4a
commit 30dd37e135
18 changed files with 202 additions and 79637 deletions

View File

@@ -1,4 +1,4 @@
--# -path=.:../spanish:../romance:../common:../abstract:../prelude --# -path=.:../portuguese:../romance:../common:../abstract:../prelude
resource SymbolicPor = Symbolic with resource SymbolicPor = Symbolic with
(Symbol = SymbolPor), (Symbol = SymbolPor),

View File

@@ -2,4 +2,3 @@
instance SyntaxPor of Syntax = instance SyntaxPor of Syntax =
ConstructorsPor, CatPor, StructuralPor, CombinatorsPor ; ConstructorsPor, CatPor, StructuralPor, CombinatorsPor ;

View File

@@ -1,3 +1,3 @@
--# -path=.:../spanish:../romance:../common:../abstract:../prelude --# -path=.:../portuguese:../romance:../common:../abstract:../prelude
resource TryPor = SyntaxPor, LexiconPor, ParadigmsPor - [mkAdv,mkAdN] ; resource TryPor = SyntaxPor, LexiconPor, ParadigmsPor - [mkAdv,mkAdN] ;

View File

@@ -1,15 +0,0 @@
--# -path=.:alltenses:prelude
resource CombinatorsPor = Combinators - [appCN, appCNc] with
(Cat = CatPor),
(Structural = StructuralPor),
(Noun = NounPor),
(Constructors = ConstructorsPor) **
{
oper
appCN : CN -> NP -> NP
= \cn,x -> mkNP the_Art (PossNP cn x) ;
appCNc : CN -> [NP] -> NP
= \cn,xs -> let np : NP = mkNP and_Conj xs
in mkNP the_Art (PossNP cn np) ;
}

View File

@@ -1,7 +1,7 @@
--# -path=alltenses:.:../abstract --# -path=alltenses:.:../abstract
concrete ConstructionPor of Construction = CatPor ** concrete ConstructionPor of Construction = CatPor **
open SyntaxPor, SymbolicPor, ParadigmsPor, open SyntaxPor, SymbolicPor, ParadigmsPor, BeschPor,
(L = LexiconPor), (E = ExtraPor), (I = IrregPor), (R = ResPor), (C = CommonRomance), (L = LexiconPor), (E = ExtraPor), (I = IrregPor), (R = ResPor), (C = CommonRomance),
Prelude in { Prelude in {
flags coding=utf8 ; flags coding=utf8 ;
@@ -19,7 +19,7 @@ lin
how_far_QCl x = mkQCl (lin IAdv (ss "a que distância")) (mkCl x I.estar_V) ; how_far_QCl x = mkQCl (lin IAdv (ss "a que distância")) (mkCl x I.estar_V) ;
-- some more things -- some more things
weather_adjCl ap = mkCl (mkVP (mkVA I.hacer_V) (lin AP ap)) ; weather_adjCl ap = mkCl (mkVP (mkVA I.fazer_V) (lin AP ap)) ;
is_right_VP = E.ComplCN have_V2 (mkCN (mkN "razão")) ; is_right_VP = E.ComplCN have_V2 (mkCN (mkN "razão")) ;
is_wrong_VP = mkVP (mkVA I.estar_V) (mkAP (mkA "errado")) ; is_wrong_VP = mkVP (mkVA I.estar_V) (mkAP (mkA "errado")) ;

View File

@@ -1,3 +0,0 @@
--# -path=.:alltenses:prelude
resource ConstructorsPor = Constructors with (Grammar = GrammarPor) ;

View File

@@ -76,7 +76,7 @@ instance DiffPor of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
_ => Acc _ => Acc
} ; } ;
auxVerb : VType -> (VF => Str) = \_ -> haber_V.s ; auxVerb : VType -> (VF => Str) = \_ -> haver_V.s ;
vpAgrClit : Agr -> VPAgr = \a -> vpAgrClit : Agr -> VPAgr = \a ->
vpAgrNone ; vpAgrNone ;
@@ -204,13 +204,15 @@ instance DiffPor of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
_ => False _ => False
} ; } ;
auxPassive : Verb = verbBeschH (estar_10 "estar") ; auxPassive : Verb = copula ;
copula : Verb = verbBeschH (ser_3 []) ; copula : Verb = verbBeschH (ser_3 "ser") ;
estar_V : Verb = verbBeschH (estar_10 "estar") ; estar_V : Verb = verbBeschH (estar_10 "estar") ;
haber_V : Verb = verbBeschH (haver_2 "haver") ; haver_V : Verb = verbBeschH (haver_2 "haver") ;
ficar_V : Verb = verbBeschH (ficar_12 "ficar") ;
verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere ; p = []} ; verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere ; p = []} ;

View File

@@ -1,6 +1,6 @@
--# -path=.:../abstract:../common --# -path=.:../abstract:../common
-- documentation of Pornish in Pornish: the default introduced in LangPor -- documentation of Portuguese in Portuguese: the default introduced in LangPor
concrete DocumentationPor of Documentation = CatPor ** concrete DocumentationPor of Documentation = CatPor **
DocumentationPorFunctor with (Terminology = TerminologyPor) ; DocumentationPorFunctor with (Terminology = TerminologyPor) ;

View File

@@ -1,4 +1,4 @@
-- Structures special for Spanish. These are not implemented in other -- Structures special for Portuguese. These are not implemented in other
-- Romance languages. -- Romance languages.
abstract ExtraPorAbs = ExtraRomanceAbs ** { abstract ExtraPorAbs = ExtraRomanceAbs ** {

View File

@@ -20,11 +20,11 @@ concrete IdiomPor of Idiom = CatPor **
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) (predV (verboV (haver_2 "haver")))) ;
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) (predV (verboV (haver_2 "haver")))).s ! DDir ! t ! a ! p ! Indic
} ; } ;
ProgrVP vp = ProgrVP vp =
@@ -36,7 +36,7 @@ concrete IdiomPor of Idiom = CatPor **
in in
vp.s.s ! VGer ++ clpr.p1 ++ obj vp.s.s ! VGer ++ clpr.p1 ++ obj
) )
(predV (verboV (estar_2 "estar"))) ; (predV (verboV (estar_10 "estar"))) ;
ImpPl1 vp = {s = ImpPl1 vp = {s =
mkImperative False P1 vp ! RPos ! Masc ! Pl ; --- fem mkImperative False P1 vp ! RPos ! Masc ! Pl ; --- fem

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -8,56 +8,56 @@ flags
coding=utf8 ; coding=utf8 ;
lin lin
easy_A2V = mkA2V (regA "fácil") dative genitive ; easy_A2V = mkA2V (mkA "fácil") dative genitive ;
married_A2 = mkA2 (regA "casado") dative ; married_A2 = mkA2 (mkA "casado") dative ;
probable_AS = mkAS (regA "provável") ; probable_AS = mkAS (mkA "provável") ;
fun_AV = mkAV (regA "divertido") genitive ; fun_AV = mkAV (mkA "divertido") genitive ;
-- A -- A
bad_A = prefA (mkADeg (regA "mau") (regA "pior")) ; bad_A = prefA (mkA (mkA "mau") (mkA "pior")) ;
beautiful_A = prefA (regADeg "belo") ; -- bela beautiful_A = prefA (mkA "belo") ; -- bela
big_A = prefA (regADeg "grande") ; big_A = prefA (mkA "grande") ;
black_A = regADeg "preto" ; -- preta black_A = mkA "preto" ; -- preta
blue_A = regADeg "azul" ; blue_A = mkA "azul" ;
broad_A = regADeg "largo" ; broad_A = mkA "largo" ;
brown_A = regADeg "marrom" ; --- * brown_A = mkA "marrom" ; --- *
clean_A = regADeg "limpo" ; clean_A = mkA "limpo" ;
clever_A = regADeg "inteligente" ; clever_A = mkA "inteligente" ;
cold_A = regADeg "frio" ; -- fria cold_A = mkA "frio" ; -- fria
correct_A = regA "correcto" ; correct_A = mkA "correcto" ;
dirty_A = regADeg "sujo" ; dirty_A = mkA "sujo" ;
dry_A = regA "seco" ; dry_A = mkA "seco" ;
dull_A = regA "desafilado" ; dull_A = mkA "desafilado" ;
empty_A = regADeg "vazio" ; empty_A = mkA "vazio" ;
full_A = regA "lleno" ; full_A = mkA "lleno" ;
good_A = prefA (mkADeg (regA "bom") (regA "melhor")) ; ---- adv? good_A = prefA (mkA (mkA "bom") (mkA "melhor")) ; ---- adv?
green_A = regADeg "verde" ; green_A = mkA "verde" ;
heavy_A = regA "pesado" ; heavy_A = mkA "pesado" ;
hot_A = regADeg "quente" ; hot_A = mkA "quente" ;
important_A = regADeg "importante" ; important_A = mkA "importante" ;
long_A = regADeg "longo" ; long_A = mkA "longo" ;
narrow_A = regADeg "estreito" ; narrow_A = mkA "estreito" ;
near_A = regA "cercano" ; near_A = mkA "cercano" ;
new_A = prefA (regADeg "novo") ; new_A = prefA (mkA "novo") ;
old_A = prefA (regADeg "velho") ; old_A = prefA (mkA "velho") ;
ready_A = regA "pronto" ; ready_A = mkA "pronto" ;
red_A = regADeg "vermelho" ; red_A = mkA "vermelho" ;
rotten_A = regA "podre" ; rotten_A = mkA "podre" ;
round_A = regA "redondo" ; round_A = mkA "redondo" ;
sharp_A = regA "filoso" ; -- afilado, puntiagudo sharp_A = mkA "filoso" ; -- afilado, puntiagudo
short_A = regADeg "curto" ; --- breve, pequeno, baixo short_A = mkA "curto" ; --- breve, pequeno, baixo
small_A = prefA (regADeg "pequeno") ; small_A = prefA (mkA "pequeno") ;
smooth_A = regA "liso" ; -- suave smooth_A = mkA "liso" ; -- suave
straight_A = regA "directo" ; straight_A = mkA "directo" ;
stupid_A = regADeg "estúpido" ; stupid_A = mkA "estúpido" ;
thick_A = regADeg "grosso" ; thick_A = mkA "grosso" ;
thin_A = regADeg "fino" ; -- delgado thin_A = mkA "fino" ; -- delgado
ugly_A = regADeg "feio" ; ugly_A = mkA "feio" ;
uncertain_A = regA "incerto" ; uncertain_A = mkA "incerto" ;
warm_A = regADeg "quente" ; warm_A = mkA "quente" ;
wet_A = regA "mojado" ; wet_A = mkA "mojado" ;
white_A = compADeg (regA "blanco") ; white_A = compADeg (mkA "blanco") ;
wide_A = regA "ancho" ; -- extenso wide_A = mkA "ancho" ; -- extenso
yellow_A = regADeg "amarillo" ; yellow_A = mkA "amarillo" ;
young_A = prefA (mkA "joven" "joven" "jóvenes" "jóvenes" "jovenamente") ; young_A = prefA (mkA "joven" "joven" "jóvenes" "jóvenes" "jovenamente") ;
already_Adv = mkAdv "ya" ; already_Adv = mkAdv "ya" ;
far_Adv = mkAdv "lejos" ; ----? far_Adv = mkAdv "lejos" ; ----?
@@ -256,108 +256,108 @@ lin
paris_PN = mkPN "Paris" feminine ; paris_PN = mkPN "Paris" feminine ;
-- V -- V
rain_V0 = mkV0 (verboV (chover_47 "chover")) ; rain_V0 = mkV0 (verboV (chover_47 "chover")) ;
paint_V2A = mkV2A (regV "pintar") accusative (mkPrep "em") ; paint_V2A = mkV2A (mkV "pintar") accusative (mkPrep "em") ;
ask_V2Q = mkV2Q (regV "perguntar") dative ; ask_V2Q = mkV2Q (mkV "perguntar") dative ;
answer_V2S = mkV2S (regV "responder") dative ; answer_V2S = mkV2S (mkV "responder") dative ;
beg_V2V = mkV2V (mkV "rogar") accusative dative ; -- pedir beg_V2V = mkV2V (mkV "rogar") accusative dative ; -- pedir
bite_V2 = dirV2 (regV "morder") ; bite_V2 = dirV2 (mkV "morder") ;
break_V2 = dirV2 (special_ppV (regV "romper") "rompido") ; break_V2 = dirV2 (special_ppV (mkV "romper") "rompido") ;
buy_V2 = dirV2 (regV "comprar") ; buy_V2 = dirV2 (mkV "comprar") ;
close_V2 = dirV2 (mkV "fechar") ; close_V2 = dirV2 (mkV "fechar") ;
count_V2 = dirV2 (regV "contar") ; count_V2 = dirV2 (mkV "contar") ;
cut_V2 = dirV2 (regV "cortar") ; cut_V2 = dirV2 (mkV "cortar") ;
do_V2 = dirV2 (regV "fazer") ; do_V2 = dirV2 (mkV "fazer") ;
drink_V2 = dirV2 (regV "beber") ; drink_V2 = dirV2 (mkV "beber") ;
eat_V2 = dirV2 (regV "comer") ; eat_V2 = dirV2 (mkV "comer") ;
fear_V2 = dirV2 (regV "temer") ; fear_V2 = dirV2 (mkV "temer") ;
fight_V2 = dirV2 (regV "lutar") ; fight_V2 = dirV2 (mkV "lutar") ;
find_V2 = dirV2 (regV "encontrar") ; find_V2 = dirV2 (mkV "encontrar") ;
forget_V2 = dirV2 (regV "esquecer") ; forget_V2 = dirV2 (mkV "esquecer") ;
hate_V2 = dirV2 (mkV "odiar") ; hate_V2 = dirV2 (mkV "odiar") ;
hear_V2 = dirV2 (mkV "ouvir") ; hear_V2 = dirV2 (mkV "ouvir") ;
hit_V2 = dirV2 (regV "bater") ; hit_V2 = dirV2 (mkV "bater") ;
hold_V2 = dirV2 (regV "ter") ; hold_V2 = dirV2 (mkV "ter") ;
hunt_V2 = dirV2 (regV "caçar") ; hunt_V2 = dirV2 (mkV "caçar") ;
kill_V2 = dirV2 (regV "matar") ; kill_V2 = dirV2 (mkV "matar") ;
know_V2 = mkV2 (regV "conhecer") ; know_V2 = mkV2 (mkV "conhecer") ;
learn_V2 = dirV2 (regV "aprender") ; learn_V2 = dirV2 (mkV "aprender") ;
leave_V2 = dirV2 (regV "partir") ; -- irse, dejar leave_V2 = dirV2 (mkV "partir") ; -- irse, dejar
like_V2 = dirV2 (regV "gostar") ; like_V2 = dirV2 (mkV "gostar") ;
listen_V2 = dirV2 (regV "escutar") ; listen_V2 = dirV2 (mkV "escutar") ;
lose_V2 = dirV2 (regV "perder") ; lose_V2 = dirV2 (mkV "perder") ;
love_V2 = dirV2 (regV "amar") ; love_V2 = dirV2 (mkV "amar") ;
open_V2 = dirV2 (special_ppV (regV "abrir") "aberto") ; open_V2 = dirV2 (special_ppV (mkV "abrir") "aberto") ;
play_V2 = dirV2 (regV "jogar") ; play_V2 = dirV2 (mkV "jogar") ;
pull_V2 = dirV2 (regV "tirar") ; pull_V2 = dirV2 (mkV "tirar") ;
push_V2 = dirV2 (regV "empurrar") ; push_V2 = dirV2 (mkV "empurrar") ;
put_V2 = dirV2 (regV "por") ; put_V2 = dirV2 (mkV "por") ;
read_V2 = dirV2 (regV "ler") ; read_V2 = dirV2 (mkV "ler") ;
rub_V2 = dirV2 (regV "resfregar") ; rub_V2 = dirV2 (mkV "resfregar") ;
scratch_V2 = dirV2 (regV "rascar") ; scratch_V2 = dirV2 (mkV "rascar") ;
see_V2 = dirV2 (regV "ver") ; see_V2 = dirV2 (mkV "ver") ;
seek_V2 = dirV2 (regV "buscar") ; seek_V2 = dirV2 (mkV "buscar") ;
speak_V2 = dirV2 (regV "falar") ; speak_V2 = dirV2 (mkV "falar") ;
split_V2 = dirV2 (regV "separar") ; -- dividir,) ; split_V2 = dirV2 (mkV "separar") ; -- dividir,) ;
squeeze_V2 = dirV2 (regV "exprimir") ; squeeze_V2 = dirV2 (mkV "exprimir") ;
stab_V2 = dirV2 (regV "apuñalar") ; stab_V2 = dirV2 (mkV "apuñalar") ;
suck_V2 = dirV2 (regV "chupar") ; suck_V2 = dirV2 (mkV "chupar") ;
switch8off_V2 = dirV2 (regV "apagar") ; switch8off_V2 = dirV2 (mkV "apagar") ;
switch8on_V2 = dirV2 (regV "ligar") ; -- acender switch8on_V2 = dirV2 (mkV "ligar") ; -- acender
teach_V2 = dirV2 (regV "enseñar") ; teach_V2 = dirV2 (mkV "enseñar") ;
throw_V2 = dirV2 (regV "tirar") ; throw_V2 = dirV2 (mkV "tirar") ;
tie_V2 = dirV2 (regV "atar") ; tie_V2 = dirV2 (mkV "atar") ;
understand_V2 = dirV2 (mkV "entender") ; understand_V2 = dirV2 (mkV "entender") ;
wait_V2 = mkV2 (regV "esperar") dative ; wait_V2 = mkV2 (mkV "esperar") dative ;
wash_V2 = dirV2 (regV "lavar") ; wash_V2 = dirV2 (mkV "lavar") ;
watch_V2 = dirV2 (regV "mirar") ; -- ver watch_V2 = dirV2 (mkV "mirar") ; -- ver
win_V2 = dirV2 (regV "ganar") ; win_V2 = dirV2 (mkV "ganar") ;
wipe_V2 = dirV2 (regV "secar") ; wipe_V2 = dirV2 (mkV "secar") ;
write_V2 = dirV2 (special_ppV (regV "escribir") "escrito") ; write_V2 = dirV2 (special_ppV (mkV "escribir") "escrito") ;
add_V3 = dirV3 (regV "somar") dative ; add_V3 = dirV3 (mkV "somar") dative ;
give_V3 = dirdirV3 (regV "dar") ; give_V3 = dirdirV3 (mkV "dar") ;
sell_V3 = dirV3 (regV "vender") dative ; sell_V3 = dirV3 (mkV "vender") dative ;
send_V3 = dirV3 (regV "mandar") dative ; -- enviar send_V3 = dirV3 (mkV "mandar") dative ; -- enviar
talk_V3 = mkV3 (regV "falar") dative genitive ; talk_V3 = mkV3 (mkV "falar") dative genitive ;
become_VA = reflV (mkV "converter") ; --- convertirse en, volverse, ponerse become_VA = reflV (mkV "converter") ; --- convertirse en, volverse, ponerse
know_VQ = mkVQ (regV "saber") ; know_VQ = mkVQ (mkV "saber") ;
wonder_VQ = mkVQ (reflV (regV "preguntar")) ; wonder_VQ = mkVQ (reflV (mkV "preguntar")) ;
fear_VS = mkVS (regV "temer") ; fear_VS = mkVS (mkV "temer") ;
hope_VS = mkVS (regV "esperar") ; hope_VS = mkVS (mkV "esperar") ;
know_VS = mkVS (regV "saber") ; know_VS = mkVS (mkV "saber") ;
say_VS = mkVS (regV "dizer") ; say_VS = mkVS (mkV "dizer") ;
-- V -- V
blow_V = regV "assoprar" ; blow_V = mkV "assoprar" ;
breathe_V = regV "respirar" ; breathe_V = mkV "respirar" ;
burn_V = regV "queimar" ; burn_V = mkV "queimar" ;
come_V = regV "vir" ; come_V = mkV "vir" ;
die_V = regV "morrer" ; die_V = mkV "morrer" ;
dig_V = regV "escavar" ; dig_V = mkV "escavar" ;
fall_V = regV "cair" ; fall_V = mkV "cair" ;
float_V = regV "flutuar" ; float_V = mkV "flutuar" ;
flow_V = regV "fluir" ; -- circular flow_V = mkV "fluir" ; -- circular
fly_V = regV "voar" ; fly_V = mkV "voar" ;
freeze_V = regV "congelar" ; freeze_V = mkV "congelar" ;
go_V = (regV "ir") ; go_V = (mkV "ir") ;
jump_V = regV "saltar" ; jump_V = mkV "saltar" ;
laugh_V = regV "reir" ; ----V reír_67 laugh_V = mkV "reir" ; ----V reír_67
lie_V = reflV (regV "acostar") ; -- "acostarse" lie_V = reflV (mkV "acostar") ; -- "acostarse"
live_V = regV "viver" ; live_V = mkV "viver" ;
play_V = regV "jugar" ; play_V = mkV "jugar" ;
run_V = regV "correr" ; run_V = mkV "correr" ;
sew_V = regV "coser" ; sew_V = mkV "coser" ;
sing_V = regV "cantar" ; sing_V = mkV "cantar" ;
sit_V = reflV (mkV "sentar") ; sit_V = reflV (mkV "sentar") ;
sleep_V = regV "dormir" ; sleep_V = mkV "dormir" ;
smell_V = regV "cheirar" ; smell_V = mkV "cheirar" ;
spit_V = regV "escupir" ; spit_V = mkV "escupir" ;
stand_V = regV "estar" ; ---- "estar de pie" ; stand_V = mkV "estar" ; ---- "estar de pie" ;
stop_V = regV "parar" ; stop_V = mkV "parar" ;
swell_V = regV "tragar" ; swell_V = mkV "tragar" ;
swim_V = regV "nadar" ; swim_V = mkV "nadar" ;
think_V = regV "pensar" ; think_V = mkV "pensar" ;
travel_V = regV "viajar" ; travel_V = mkV "viajar" ;
turn_V = regV "doblar" ; turn_V = mkV "doblar" ;
vomit_V = regV "vomitar" ; vomit_V = mkV "vomitar" ;
walk_V = mkV "caminhar" ; walk_V = mkV "caminhar" ;
-- interj -- interj
alas_Interj = ss "infelizmente" ; alas_Interj = ss "infelizmente" ;

View File

@@ -57,6 +57,9 @@ oper
_ => error "input must be vowel character." _ => error "input must be vowel character."
} ; } ;
nomReptil : Str -> Number => Str = \reptil ->
numForms reptil (tk 2 reptil + "eis") ;
nomFenol : Str -> Number => Str = \fenol -> nomFenol : Str -> Number => Str = \fenol ->
case fenol of { case fenol of {
fen + v@("a"|"e"|"i"|"o"|"u") + "l" => numForms fenol (fen + acuteVowel v + "is") fen + v@("a"|"e"|"i"|"o"|"u") + "l" => numForms fenol (fen + acuteVowel v + "is")
@@ -125,6 +128,16 @@ oper
} }
} ; } ;
mkAdj2N : (_,_: N) -> Str -> Adj = \mascN, femN, burramente ->
{s = table {
AF Masc n => mascN.s ! n ;
AF Fem n => femN.s ! n ;
AA => burramente
}
} ;
mkAdjN : N -> Str -> Adj = \n, burramente -> mkAdj2N n n burramente ;
-- Then the regular and invariant patterns. -- Then the regular and invariant patterns.
adjPreto : Str -> Adj = \preto -> adjPreto : Str -> Adj = \preto ->
@@ -148,7 +161,7 @@ oper
mkAdj blu blu blu blu blu ; --- blasé mkAdj blu blu blu blu blu ; --- blasé
-- francês francesa franceses francesas -- francês francesa franceses francesas
adjEs : Str -> Adj = \francês -> adjFrances : Str -> Adj = \francês ->
let franc : Str = Predef.tk 2 francês ; let franc : Str = Predef.tk 2 francês ;
frances : Str = franc + "es" ; frances : Str = franc + "es" ;
in mkAdj francês (frances + "a") (frances + "es") (frances + "as") (frances + "amente") ; in mkAdj francês (frances + "a") (frances + "es") (frances + "as") (frances + "amente") ;
@@ -176,7 +189,7 @@ oper
pret + "o" => adjPreto a ; pret + "o" => adjPreto a ;
anarquist + v@("e" | "a") => adjUtil (anarquist + v) (anarquist + v + "s") ; anarquist + v@("e" | "a") => adjUtil (anarquist + v) (anarquist + v + "s") ;
ouvido + "r" => adjOuvidor a (ouvido + "ra") ; ouvido + "r" => adjOuvidor a (ouvido + "ra") ;
chin + "ês" => adjEs a ; chin + "ês" => adjFrances a ;
europ + "eu" => adjEuropeu a ; europ + "eu" => adjEuropeu a ;
alem + "ão" => adjVo a ; alem + "ão" => adjVo a ;
_ => adjUtil a (a + "s") _ => adjUtil a (a + "s")

View File

@@ -193,13 +193,18 @@ oper
superlADeg a = {s = table {Posit => a.s ! Posit ; superlADeg a = {s = table {Posit => a.s ! Posit ;
Compar => a.s ! Compar ; Compar => a.s ! Compar ;
Superl => a.s ! Compar}} ; Superl => a.s ! Compar}} ;
-} -}
-- redundant
-- regADeg : Str -> A ;
-- regADeg a = compADeg (regA a) ;
regA : Str -> A ; regA : Str -> A ;
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ;
lock_A = <>} ; lock_A = <>} ;
mk2A : (espanhol,espanhola : Str) -> A ; mk2A : (espanhol,espanhola : Str) -> A ;
mk2A a b = compADeg {s = \\_ => (adjOuvidor a b).s ; isPre = False ; mk2A a b = compADeg {s = \\_ => (mkAdj2N (mkN a) (mkN b) (b + "mente")).s ; isPre = False ;
lock_A = <>} ; lock_A = <>} ;
mk5A : (solo,sola,solos,solas,solamente : Str) -> A ; mk5A : (solo,sola,solos,solas,solamente : Str) -> A ;
@@ -217,19 +222,19 @@ oper
-- For regular adjectives, all forms are derived from the masculine -- For regular adjectives, all forms are derived from the masculine
-- singular. The types of adjectives that are recognized are "alto", -- singular. The types of adjectives that are recognized are "alto",
-- "fuerte", "util". Comparison is formed by "mas". -- "fuerte", "util". Comparison is formed by "mas".
mkA : (util : Str) -> A = regA ; -- predictable adjective mkA : (bobo : Str) -> A = regA ; -- predictable adjective
-- Some adjectives need the feminine form separately. -- Some adjectives need the feminine form separately.
mkA : (espanol,espanola : Str) -> A = mk2A ; mkA : (espanhol,espanhola : Str) -> A = mk2A ;
-- One-place adjectives compared with "mais" need five forms in the -- One-place adjectives compared with "mais" need five forms in the
-- worst case (masc and fem singular, masc plural, adverbial). -- worst case (masc and fem singular, masc plural, adverbial).
mkA : (solo,sola,solos,solas,solamente : Str) -> A = mk5A ; mkA : (bobo,boba,bobos,bobas,bobamente : Str) -> A = mk5A ;
-- In the worst case, two separate adjectives are given: the positive -- In the worst case, two separate adjectives are given: the positive
-- ("bueno"), and the comparative ("mejor"). -- ("bueno"), and the comparative ("mejor").
-- special comparison with "mais" as default -- special comparison with "mais" as default
mkA : (bueno : A) -> (mejor : A) -> A = mkADeg ; mkA : (bom : A) -> (melhor : A) -> A = mkADeg ;
} ; } ;
-- The functions above create postfix adjectives. To switch them to -- The functions above create postfix adjectives. To switch them to
@@ -319,7 +324,7 @@ oper
-- the complete set of "Bescherelle" conjugations. -- the complete set of "Bescherelle" conjugations.
mkV : (pagar : Str) -> V = \s -> case s of { mkV : (pagar : Str) -> V = \s -> case s of {
far + "-se" => reflV (regV far) ; chamar + "-se" => reflV (regV chamar) ;
_ => regV s _ => regV s
} ; -- regular in "-ar", "-er", "-ir" } ; -- regular in "-ar", "-er", "-ir"
@@ -500,9 +505,6 @@ oper
isPol = False ; isPol = False ;
isNeg = False} ** {lock_NP = <>} ; isNeg = False} ** {lock_NP = <>} ;
regADeg : Str -> A ;
regADeg a = compADeg (regA a) ;
reflVerboV : Verbum -> V = \ve -> reflV (verboV ve) ; reflVerboV : Verbum -> V = \ve -> reflV (verboV ve) ;
} ; } ;

View File

@@ -1,5 +0,0 @@
--# -path=.:../portuguese:../romance:../common:../abstract:../prelude
resource SymbolicPor = Symbolic with
(Symbol = SymbolPor),
(Grammar = GrammarPor) ;

View File

@@ -1,4 +0,0 @@
--# -path=.:alltenses
instance SyntaxPor of Syntax =
ConstructorsPor, CatPor, StructuralPor, CombinatorsPor ;

View File

@@ -1,3 +0,0 @@
--# -path=.:../portuguese:../romance:../common:../abstract:../prelude
resource TryPor = SyntaxPor, LexiconPor, ParadigmsPor - [mkAdv,mkAdN] ;