- add missing lins tired_VP, scared_VP, ill_VP, ready_VP

- add time linearizations
- rm Spa from RNeg lin and Refl and pronouns
- use constructors (mkV, mkA, etc) when possible
- update Lexicon
- update Numeral
This commit is contained in:
odanoburu
2018-04-14 19:21:47 -03:00
parent 97b1c50ae0
commit 2106566e85
9 changed files with 112 additions and 92 deletions

View File

@@ -9,6 +9,10 @@ concrete ConstructionPor of Construction = CatPor **
lin lin
hungry_VP = E.ComplCN have_V2 (mkCN (mkN "fome" feminine)) ; hungry_VP = E.ComplCN have_V2 (mkCN (mkN "fome" feminine)) ;
thirsty_VP = E.ComplCN have_V2 (mkCN (mkN "sede" feminine)) ; thirsty_VP = E.ComplCN have_V2 (mkCN (mkN "sede" feminine)) ;
tired_VP = mkVP (mkA "cansado") ;
scared_VP = mkVP (mkA "assustado") ;
ill_VP = mkVP (mkA "doente") ;
ready_VP = mkVP (mkA "pronto") ;
has_age_VP card = mkVP have_V2 (mkNP <lin Card card : Card> L.year_N) ; has_age_VP card = mkVP have_V2 (mkNP <lin Card card : Card> L.year_N) ;
have_name_Cl x y = mkCl x (mkV2 (reflV (mkV "chamar"))) y ; have_name_Cl x y = mkCl x (mkV2 (reflV (mkV "chamar"))) y ;
@@ -45,15 +49,21 @@ lin
come_from_there_VP = mkVP (mkVP L.come_V) (mkAdv "de allí") ; -- "de allá" come_from_there_VP = mkVP (mkVP L.come_V) (mkAdv "de allí") ; -- "de allá"
-} -}
lincat lincat
Weekday = N ; Timeunit = N ;
Monthday = NP ; Weekday = N ;
Month = N ; Monthday = NP ;
Year = NP ; Month = N ;
Year = NP ;
oper oper
noPrep : Prep = mkPrep [] ; noPrep : Prep = mkPrep [] ;
lin lin
timeunitAdv n time =
let n_card : Card = lin Card n;
n_hours_NP : NP = mkNP n_card time ;
in SyntaxPor.mkAdv for_Prep n_hours_NP ;--| SyntaxPor.mkAdv (n_hours_NP.s ! R.Nom) ;
weekdayPunctualAdv w = lin Adv {s = w.s ! C.Sg} ; -- lundi weekdayPunctualAdv w = lin Adv {s = w.s ! C.Sg} ; -- lundi
weekdayHabitualAdv w = SyntaxPor.mkAdv noPrep (mkNP the_Det w) ; -- il lunedí ---- weekdayHabitualAdv w = SyntaxPor.mkAdv noPrep (mkNP the_Det w) ; -- il lunedí ----
weekdayLastAdv w = SyntaxPor.mkAdv noPrep (mkNP the_Det (mkCN (mkA "passado") w)) ; -- il lunedí scorso weekdayLastAdv w = SyntaxPor.mkAdv noPrep (mkNP the_Det (mkCN (mkA "passado") w)) ; -- il lunedí scorso
@@ -75,6 +85,7 @@ lin InLanguage l = SyntaxPor.mkAdv (mkPrep "em") (mkNP l) ;
lin lin
weekdayN w = w ; weekdayN w = w ;
monthN m = m ;
weekdayPN w = mkPN w ; weekdayPN w = mkPN w ;
monthPN m = mkPN m ; monthPN m = mkPN m ;
@@ -86,6 +97,13 @@ oper mkLanguage : Str -> N = \s -> mkN s ;
---------------------------------------------- ----------------------------------------------
---- lexicon of special names ---- lexicon of special names
lin second_Timeunit = mkN "segundo" ;
lin minute_Timeunit = mkN "minuto" ;
lin hour_Timeunit = mkN "hora" ;
lin day_Timeunit = mkN "dia" masculine ;
lin week_Timeunit = mkN "semana" ;
lin month_Timeunit = mkN "mês" "meses" ;
lin year_Timeunit = mkN "ano" ;
lin monday_Weekday = mkN "segunda" ; lin monday_Weekday = mkN "segunda" ;
lin tuesday_Weekday = mkN "terça" ; lin tuesday_Weekday = mkN "terça" ;

View File

@@ -28,7 +28,6 @@ instance DiffPor of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
CPrep P_a => "a" CPrep P_a => "a"
} ; } ;
artDef : Bool -> Gender -> Number -> Case -> Str = \isNP,g,n,c -> artDef : Bool -> Gender -> Number -> Case -> Str = \isNP,g,n,c ->
case isNP of { case isNP of {
True => case <g,n,c> of { True => case <g,n,c> of {
@@ -141,12 +140,12 @@ instance DiffPor of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
negation : RPolarity => (Str * Str) = table { negation : RPolarity => (Str * Str) = table {
RPos => <[],[]> ; RPos => <[],[]> ;
RNeg _ => <"no",[]> RNeg _ => <"não",[]>
} ; } ;
conjThan = "que" ; conjThan = "que" ;
conjThat = "que" ; conjThat = "que" ;
subjIf = "si" ; subjIf = "se" ;
clitInf b cli inf = inf ++ bindIf b ++ cli ; clitInf b cli inf = inf ++ bindIf b ++ cli ;
@@ -170,7 +169,7 @@ instance DiffPor of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
case p of { case p of {
P3 => case c of { P3 => case c of {
Acc | CPrep P_a => "se" ; Acc | CPrep P_a => "se" ;
_ => "sí" _ => "si"
} ; } ;
_ => pro _ => pro
} ; } ;
@@ -188,14 +187,14 @@ instance DiffPor of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
} ; } ;
in in
\g,n,p -> case <<g,n,p> : Gender * Number * Person> of { \g,n,p -> case <<g,n,p> : Gender * Number * Person> of {
<_,Sg,P1> => cases "me" "mí" ; <_,Sg,P1> => cases "me" "mim" ;
<_,Sg,P2> => cases "te" "tí" ; <_,Sg,P2> => cases "te" "ti" ;
<_,Pl,P1> => cases "nos" "nosotras" ; --- nosotros <_,Pl,P1> => cases "nos" "nós" ; --- nosotros
<_,Pl,P2> => cases "vos" "vosotras" ; --- vosotros <_,Pl,P2> => cases "vos" "vós" ; --- vosotros
<Fem,Sg,P3> => cases3 "la" "le" "ella" ; <Fem,Sg,P3> => cases3 "a" "sua" "ela" ;
<_, Sg,P3> => cases3 "lo" "le" "èl" ; <_, Sg,P3> => cases3 "o" "seu" "ele" ;
<Fem,Pl,P3> => cases3 "las" "les" "ellas" ; <Fem,Pl,P3> => cases3 "as" "suas" "elas" ;
<_, Pl,P3> => cases3 "los" "les" "ellos" <_, Pl,P3> => cases3 "os" "seus" "eles"
} ; } ;
vRefl _ = VRefl ; vRefl _ = VRefl ;

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 (haver_2 "haver")))) ; (insertComplement (\\_ => (np.s ! Acc).ton) (predV (mkV (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 (haver_2 "haver")))).s ! DDir ! t ! a ! p ! Indic (mkClause [] True False (agrP3 Masc Sg) (predV (mkV (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_10 "estar"))) ; (predV (mkV (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

View File

@@ -8,7 +8,7 @@ concrete IrregPor of IrregPorAbs = CatPor **
flags optimize=values ; flags optimize=values ;
coding=utf8 ; coding=utf8 ;
lin estar_V = verboV (estar_10 "estar") ; lin estar_V = mkV (estar_10 "estar") ;
lin fazer_V = verboV (fazer_31 "fazer") ; lin fazer_V = mkV (fazer_31 "fazer") ;
} }

View File

@@ -23,12 +23,12 @@ lin
clean_A = mkA "limpo" ; clean_A = mkA "limpo" ;
clever_A = mkA "inteligente" ; clever_A = mkA "inteligente" ;
cold_A = mkA "frio" ; -- fria cold_A = mkA "frio" ; -- fria
correct_A = mkA "correcto" ; correct_A = mkA "correto" | mkA "correcto" ;
dirty_A = mkA "sujo" ; dirty_A = mkA "sujo" ;
dry_A = mkA "seco" ; dry_A = mkA "seco" ;
dull_A = mkA "desafilado" ; dull_A = mkA "desafilado" ;
empty_A = mkA "vazio" ; empty_A = mkA "vazio" ;
full_A = mkA "lleno" ; full_A = mkA "cheio" ;
good_A = prefA (mkA (mkA "bom") (mkA "melhor")) ; ---- adv? good_A = prefA (mkA (mkA "bom") (mkA "melhor")) ; ---- adv?
green_A = mkA "verde" ; green_A = mkA "verde" ;
heavy_A = mkA "pesado" ; heavy_A = mkA "pesado" ;
@@ -36,32 +36,32 @@ lin
important_A = mkA "importante" ; important_A = mkA "importante" ;
long_A = mkA "longo" ; long_A = mkA "longo" ;
narrow_A = mkA "estreito" ; narrow_A = mkA "estreito" ;
near_A = mkA "cercano" ; near_A = mkA "perto" ;
new_A = prefA (mkA "novo") ; new_A = prefA (mkA "novo") ;
old_A = prefA (mkA "velho") ; old_A = prefA (mkA "velho") ;
ready_A = mkA "pronto" ; ready_A = mkA "pronto" ;
red_A = mkA "vermelho" ; red_A = mkA "vermelho" ;
rotten_A = mkA "podre" ; rotten_A = mkA "podre" ;
round_A = mkA "redondo" ; round_A = mkA "redondo" ;
sharp_A = mkA "filoso" ; -- afilado, puntiagudo sharp_A = mkA "afiado" ; -- pontiagudo
short_A = mkA "curto" ; --- breve, pequeno, baixo short_A = mkA "curto" ; --- breve, pequeno, baixo
small_A = prefA (mkA "pequeno") ; small_A = prefA (mkA "pequeno") ;
smooth_A = mkA "liso" ; -- suave smooth_A = mkA "liso" ; -- suave
straight_A = mkA "directo" ; straight_A = mkA "direto" | mkA "directo" ; -- reto
stupid_A = mkA "estúpido" ; stupid_A = mkA "estúpido" ;
thick_A = mkA "grosso" ; thick_A = mkA "grosso" ;
thin_A = mkA "fino" ; -- delgado thin_A = mkA "fino" ; -- delgado, magro
ugly_A = mkA "feio" ; ugly_A = mkA "feio" ;
uncertain_A = mkA "incerto" ; uncertain_A = mkA "incerto" ;
warm_A = mkA "quente" ; warm_A = mkA "quente" ;
wet_A = mkA "mojado" ; wet_A = mkA "molhado" ;
white_A = compADeg (mkA "blanco") ; white_A = compADeg (mkA "branco") ;
wide_A = mkA "ancho" ; -- extenso wide_A = mkA "largo" ; -- extenso
yellow_A = mkA "amarillo" ; yellow_A = mkA "amarelo" ;
young_A = prefA (mkA "joven" "joven" "jóvenes" "jóvenes" "jovenamente") ; young_A = prefA (mkA "jovem" "jovem" "jovens" "jovens" "juvenilmente") ;
already_Adv = mkAdv "ya" ; already_Adv = mkAdv "" ;
far_Adv = mkAdv "lejos" ; ----? far_Adv = mkAdv "longe" ; ----?
now_Adv = mkAdv "ahora" ; now_Adv = mkAdv "agora" ;
today_Adv = mkAdv "hoje" ; today_Adv = mkAdv "hoje" ;
brother_N2 = deN2 (mkN "irmão") ; brother_N2 = deN2 (mkN "irmão") ;
father_N2 = deN2 (mkN "pai") ; father_N2 = deN2 (mkN "pai") ;
@@ -255,28 +255,28 @@ lin
john_PN = mkPN "João" masculine ; john_PN = mkPN "João" masculine ;
paris_PN = mkPN "Paris" feminine ; paris_PN = mkPN "Paris" feminine ;
-- V -- V
rain_V0 = mkV0 (verboV (chover_47 "chover")) ; rain_V0 = mkV0 (mkV (chover_47 "chover")) ;
paint_V2A = mkV2A (mkV "pintar") accusative (mkPrep "em") ; paint_V2A = mkV2A (mkV "pintar") accusative (mkPrep "em") ;
ask_V2Q = mkV2Q (mkV "perguntar") dative ; ask_V2Q = mkV2Q (mkV "perguntar") dative ;
answer_V2S = mkV2S (mkV "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 (mkV "morder") ; bite_V2 = dirV2 (mkV "morder") ;
break_V2 = dirV2 (special_ppV (mkV "romper") "rompido") ; break_V2 = dirV2 (mkV "quebrar") ;
buy_V2 = dirV2 (mkV "comprar") ; buy_V2 = dirV2 (mkV "comprar") ;
close_V2 = dirV2 (mkV "fechar") ; close_V2 = dirV2 (mkV "fechar") ;
count_V2 = dirV2 (mkV "contar") ; count_V2 = dirV2 (mkV "contar") ;
cut_V2 = dirV2 (mkV "cortar") ; cut_V2 = dirV2 (mkV "cortar") ;
do_V2 = dirV2 (mkV "fazer") ; do_V2 = dirV2 (mkV (fazer_31 "fazer")) ;
drink_V2 = dirV2 (mkV "beber") ; drink_V2 = dirV2 (mkV "beber") ;
eat_V2 = dirV2 (mkV "comer") ; eat_V2 = dirV2 (mkV "comer") ;
fear_V2 = dirV2 (mkV "temer") ; fear_V2 = dirV2 (mkV "temer") ;
fight_V2 = dirV2 (mkV "lutar") ; fight_V2 = dirV2 (mkV "lutar") ;
find_V2 = dirV2 (mkV "encontrar") ; find_V2 = dirV2 (mkV "encontrar") ;
forget_V2 = dirV2 (mkV "esquecer") ; forget_V2 = dirV2 (mkV "esquecer") ;
hate_V2 = dirV2 (mkV "odiar") ; hate_V2 = dirV2 (mkV (odiar_17 "odiar")) ;
hear_V2 = dirV2 (mkV "ouvir") ; hear_V2 = dirV2 (mkV "ouvir") ;
hit_V2 = dirV2 (mkV "bater") ; hit_V2 = dirV2 (mkV "bater") ;
hold_V2 = dirV2 (mkV "ter") ; hold_V2 = dirV2 (mkV (ter_1 "ter")) ;
hunt_V2 = dirV2 (mkV "caçar") ; hunt_V2 = dirV2 (mkV "caçar") ;
kill_V2 = dirV2 (mkV "matar") ; kill_V2 = dirV2 (mkV "matar") ;
know_V2 = mkV2 (mkV "conhecer") ; know_V2 = mkV2 (mkV "conhecer") ;
@@ -284,43 +284,43 @@ lin
leave_V2 = dirV2 (mkV "partir") ; -- irse, dejar leave_V2 = dirV2 (mkV "partir") ; -- irse, dejar
like_V2 = dirV2 (mkV "gostar") ; like_V2 = dirV2 (mkV "gostar") ;
listen_V2 = dirV2 (mkV "escutar") ; listen_V2 = dirV2 (mkV "escutar") ;
lose_V2 = dirV2 (mkV "perder") ; lose_V2 = dirV2 (mkV (perder_44 "perder")) ;
love_V2 = dirV2 (mkV "amar") ; love_V2 = dirV2 (mkV "amar") ;
open_V2 = dirV2 (special_ppV (mkV "abrir") "aberto") ; open_V2 = dirV2 (special_ppV (mkV "abrir") "aberto") ;
play_V2 = dirV2 (mkV "jogar") ; play_V2 = dirV2 (mkV "jogar") ;
pull_V2 = dirV2 (mkV "tirar") ; pull_V2 = dirV2 (mkV "tirar") ;
push_V2 = dirV2 (mkV "empurrar") ; push_V2 = dirV2 (mkV "empurrar") ;
put_V2 = dirV2 (mkV "por") ; put_V2 = dirV2 (mkV (pôr_45 "pôr")) ;
read_V2 = dirV2 (mkV "ler") ; read_V2 = dirV2 (mkV (ler_42 "ler")) ;
rub_V2 = dirV2 (mkV "resfregar") ; rub_V2 = dirV2 (mkV "esfregar") ;
scratch_V2 = dirV2 (mkV "rascar") ; scratch_V2 = dirV2 (mkV "coçar") ;
see_V2 = dirV2 (mkV "ver") ; see_V2 = dirV2 (mkV (ver_40 "ver")) ;
seek_V2 = dirV2 (mkV "buscar") ; seek_V2 = dirV2 (mkV "buscar") ;
speak_V2 = dirV2 (mkV "falar") ; speak_V2 = dirV2 (mkV "falar") ;
split_V2 = dirV2 (mkV "separar") ; -- dividir,) ; split_V2 = dirV2 (mkV "separar") ; -- dividir,) ;
squeeze_V2 = dirV2 (mkV "exprimir") ; squeeze_V2 = dirV2 (mkV "apertar") ;
stab_V2 = dirV2 (mkV "apuñalar") ; stab_V2 = dirV2 (mkV "esfaquear") ;
suck_V2 = dirV2 (mkV "chupar") ; suck_V2 = dirV2 (mkV "chupar") ;
switch8off_V2 = dirV2 (mkV "apagar") ; switch8off_V2 = dirV2 (mkV "apagar") ;
switch8on_V2 = dirV2 (mkV "ligar") ; -- acender switch8on_V2 = dirV2 (mkV "ligar") ; -- acender
teach_V2 = dirV2 (mkV "ensar") ; teach_V2 = dirV2 (mkV "ensinar") ;
throw_V2 = dirV2 (mkV "tirar") ; throw_V2 = dirV2 (mkV "jogar") ;
tie_V2 = dirV2 (mkV "atar") ; tie_V2 = dirV2 (mkV "atar") ;
understand_V2 = dirV2 (mkV "entender") ; understand_V2 = dirV2 (mkV "entender") ;
wait_V2 = mkV2 (mkV "esperar") dative ; wait_V2 = mkV2 (mkV "esperar") dative ;
wash_V2 = dirV2 (mkV "lavar") ; wash_V2 = dirV2 (mkV "lavar") ;
watch_V2 = dirV2 (mkV "mirar") ; -- ver watch_V2 = dirV2 (mkV "ver") ; -- ver
win_V2 = dirV2 (mkV "ganar") ; win_V2 = dirV2 (mkV "ganhar") ;
wipe_V2 = dirV2 (mkV "secar") ; wipe_V2 = dirV2 (mkV "remover") ;
write_V2 = dirV2 (special_ppV (mkV "escribir") "escrito") ; write_V2 = dirV2 (special_ppV (mkV "escrever") "escrito") ;
add_V3 = dirV3 (mkV "somar") dative ; add_V3 = dirV3 (mkV "somar") dative ;
give_V3 = dirdirV3 (mkV "dar") ; give_V3 = dirdirV3 (mkV (dar_11 "dar")) ;
sell_V3 = dirV3 (mkV "vender") dative ; sell_V3 = dirV3 (mkV "vender") dative ;
send_V3 = dirV3 (mkV "mandar") dative ; -- enviar send_V3 = dirV3 (mkV "enviar") dative ; -- mandar
talk_V3 = mkV3 (mkV "falar") dative genitive ; talk_V3 = mkV3 (mkV "falar") dative genitive ;
become_VA = reflV (mkV "converter") ; --- convertirse en, volverse, ponerse become_VA = reflV (mkV "virar") ; --- convertirse en, volverse, ponerse
know_VQ = mkVQ (mkV "saber") ; know_VQ = mkVQ (mkV "saber") ;
wonder_VQ = mkVQ (reflV (mkV "preguntar")) ; wonder_VQ = mkVQ (reflV (mkV "perguntar")) ;
fear_VS = mkVS (mkV "temer") ; fear_VS = mkVS (mkV "temer") ;
hope_VS = mkVS (mkV "esperar") ; hope_VS = mkVS (mkV "esperar") ;
know_VS = mkVS (mkV "saber") ; know_VS = mkVS (mkV "saber") ;
@@ -329,34 +329,34 @@ lin
blow_V = mkV "assoprar" ; blow_V = mkV "assoprar" ;
breathe_V = mkV "respirar" ; breathe_V = mkV "respirar" ;
burn_V = mkV "queimar" ; burn_V = mkV "queimar" ;
come_V = mkV "vir" ; come_V = mkV (vir_67 "vir") ;
die_V = mkV "morrer" ; die_V = mkV "morrer" ;
dig_V = mkV "escavar" ; dig_V = mkV "escavar" ;
fall_V = mkV "cair" ; fall_V = mkV "cair" ;
float_V = mkV "flutuar" ; float_V = mkV "flutuar" ;
flow_V = mkV "fluir" ; -- circular flow_V = mkV "fluir" ; -- circular
fly_V = mkV "voar" ; fly_V = mkV "voar" ;
freeze_V = mkV "congelar" ; freeze_V = mkV "congelar" ;
go_V = (mkV "ir") ; go_V = (mkV "ir") ;
jump_V = mkV "saltar" ; jump_V = mkV "saltar" ;
laugh_V = mkV "reir" ; ----V reír_67 laugh_V = mkV (rir_69 "rir") ;
lie_V = reflV (mkV "acostar") ; -- "acostarse" lie_V = reflV (mkV "mentir") ;
live_V = mkV "viver" ; live_V = mkV "viver" ;
play_V = mkV "jugar" ; play_V = mkV "jogar" ;
run_V = mkV "correr" ; run_V = mkV "correr" ;
sew_V = mkV "coser" ; sew_V = mkV "costurar" ;
sing_V = mkV "cantar" ; sing_V = mkV "cantar" ;
sit_V = reflV (mkV "sentar") ; sit_V = reflV (mkV "sentar") ;
sleep_V = mkV "dormir" ; sleep_V = mkV "dormir" ;
smell_V = mkV "cheirar" ; smell_V = mkV "cheirar" ;
spit_V = mkV "escupir" ; spit_V = mkV "cuspir" ;
stand_V = mkV "estar" ; ---- "estar de pie" ; stand_V = mkV (estar_10 "estar") ; ---- "estar de pé" ;
stop_V = mkV "parar" ; stop_V = mkV "parar" ;
swell_V = mkV "tragar" ; swell_V = mkV "tragar" ;
swim_V = mkV "nadar" ; swim_V = mkV "nadar" ;
think_V = mkV "pensar" ; think_V = mkV "pensar" ;
travel_V = mkV "viajar" ; travel_V = mkV "viajar" ;
turn_V = mkV "doblar" ; turn_V = mkV "virar" ;
vomit_V = mkV "vomitar" ; vomit_V = mkV "vomitar" ;
walk_V = mkV "caminhar" ; walk_V = mkV "caminhar" ;
-- interj -- interj

View File

@@ -269,8 +269,9 @@ oper
} ; } ;
mkIDet : (quantos, quantas : Str) -> Number -> IDet = \quantos,quantas,number -> mkIDet : (quantos, quantas : Str) -> Number -> IDet = \quantos,quantas,number ->
lin IDet { lin IDet {
s = \\g,c => prepCase c ++ genForms quantos quantas ! g ; s = \\g,c => prepCase c ++ genForms quantos quantas ! g ;
n = number n = number
} ; } ;
} }

View File

@@ -3,12 +3,12 @@ concrete NumeralPor of Numeral = CatPor [Numeral,Digits] **
flags coding=utf8 ; flags coding=utf8 ;
lincat lincat
Digit = {s : DForm => CardOrd => Str} ; Digit = {s : DForm => CardOrd => Str} ;
Sub10 = {s : DForm => CardOrd => Str ; n : Number} ; Sub10 = {s : DForm => CardOrd => Str ; n : Number} ;
Sub100 = {s : CardOrd => Str ; n : Number} ; Sub100 = {s : CardOrd => Str ; n : Number} ;
Sub1000 = {s : CardOrd => Str ; n : Number} ; Sub1000 = {s : CardOrd => Str ; n : Number} ;
Sub1000000 = {s : CardOrd => Str ; n : Number} ; Sub1000000 = {s : CardOrd => Str ; n : Number} ;
lin lin
num x = x ; num x = x ;
@@ -25,29 +25,28 @@ lincat
mkTal "três" "treze" "trinta" "trezentos" mkTal "três" "treze" "trinta" "trezentos"
"terceiro" "trigésimo" "tricentésimo" ; "terceiro" "trigésimo" "tricentésimo" ;
n4 = n4 =
mkTal "quatro" (variants {"catorze" ; "quatorze"}) "quarenta" mkTal "quatro" ("catorze" | "quatorze") "quarenta"
"quatrocentos" "quarto" "quadragésimo" "quadringentésimo" ; "quatrocentos" "quarto" "quadragésimo" "quadringentésimo" ;
n5 = n5 =
mkTal "cinco" "quinze" "cinquenta" "quinhentos" mkTal "cinco" "quinze" "cinquenta" "quinhentos"
"quinto" "quinquagésimo" "guingentésimo" ; "quinto" "quinquagésimo" "guingentésimo" ;
n6 = n6 =
mkTal "seis" (variants {"dezesseis"; "dezasseis"}) mkTal "seis" ("dezesseis" | "dezasseis") "sessenta" "seiscentos"
"sessenta" "seiscentos" "sexto" "sexagésimo" "sexcentésimo" ; "sexto" "sexagésimo" "sexcentésimo" ;
n7 = n7 =
mkTal "sete" (variants {"dezessete" ; "dezassete"}) "setenta" mkTal "sete" ("dezessete" | "dezassete") "setenta"
"setecentos" "sétimo" "septuagésimo" "septingentésimo" ; "setecentos" "sétimo" "septuagésimo" "septingentésimo" ;
n8 = n8 =
mkTal "oito" "dezoito" "oitenta" "oitocentos" mkTal "oito" "dezoito" "oitenta" "oitocentos"
"oitavo" "octogésimo" "octingentésimo" ; "oitavo" "octogésimo" "octingentésimo" ;
n9 = n9 =
mkTal "nove" (variants {"dezenove" ; "dezanove"}) "noventa" mkTal "nove" ("dezenove" | "dezanove") "noventa"
"novecentos" "nono" "nonagésimo" "noningentésimo"; "novecentos" "nono" "nonagésimo" "noningentésimo";
pot01 = pot01 =
let um = (mkTal "um" "onze" "dez" "cento" "primeiro" let um = (mkTal "um" "onze" "dez" "cento" "primeiro"
"décimo" "centésimo").s in "décimo" "centésimo").s in
{s =\\f,g => case <f,g> of { {s =\\f,g => case <f,g> of {
<unit, NCard Masc> => "um" ;
<unit, NCard Fem> => "uma" ; <unit, NCard Fem> => "uma" ;
_ => um ! f ! g _ => um ! f ! g
} ; } ;

View File

@@ -112,7 +112,7 @@ oper
\s,p -> regN s ** {s = numForms s p} ; \s,p -> regN s ** {s = numForms s p} ;
-- force gender -- force gender
mkN : Str -> Gender -> N = mkN : Str -> Gender -> N =
\s,g -> regN s ** {g = g}; \s,g -> regN s ** {g = g} ;
-- The worst case has two forms (singular + plural) and the -- The worst case has two forms (singular + plural) and the
-- gender. -- gender.
mkN : (bastão,bastões : Str) -> Gender -> N = mk2N mkN : (bastão,bastões : Str) -> Gender -> N = mk2N
@@ -207,13 +207,16 @@ oper
mk2A a b = compADeg {s = \\_ => (mkAdj2N (mkN a) (mkN b) (b + "mente")).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 : (preto,preta,pretos,pretas,pretamente : Str) -> A ;
mk5A a b c d e = compADeg {s = \\_ => (mkAdj a b c d e).s ; mk5A a b c d e = compADeg {s = \\_ => (mkAdj a b c d e).s ;
isPre = False ; lock_A = <>} ; isPre = False ; lock_A = <>} ;
mkADeg : A -> A -> A ; mkADeg : A -> A -> A ;
mkADeg a b = {s = table {Posit => a.s ! Posit ; mkADeg a b = {s = table {Posit => a.s ! Posit ;
_ => b.s ! Posit} ; _ => b.s ! Posit
-- Compar => b.s ! Posit ;
-- Superl => "o" ++ b.s ! Posit ;
} ;
isPre = a.isPre ; lock_A = <>} ; isPre = a.isPre ; lock_A = <>} ;

View File

@@ -61,8 +61,8 @@ concrete StructuralPor of Structural = CatPor **
but_PConj = ss "mas" ; but_PConj = ss "mas" ;
by8agent_Prep = mkPrep "por" ; by8agent_Prep = mkPrep "por" ;
by8means_Prep = mkPrep "por" ; by8means_Prep = mkPrep "por" ;
can8know_VV = mkVV (verboV (saber_35 "saber")) ; can8know_VV = mkVV (mkV (saber_35 "saber")) ;
can_VV = mkVV (verboV (poder_36 "poder")) ; can_VV = mkVV (mkV (poder_36 "poder")) ;
during_Prep = mkPrep "durante" ; during_Prep = mkPrep "durante" ;
either7or_DConj = {s1,s2 = "o" ; n = Sg} ; either7or_DConj = {s1,s2 = "o" ; n = Sg} ;
everybody_NP = makeNP ["todos"] Masc Pl ; everybody_NP = makeNP ["todos"] Masc Pl ;
@@ -136,7 +136,7 @@ concrete StructuralPor of Structural = CatPor **
to_Prep = complDat ; to_Prep = complDat ;
under_Prep = mkPrep "embaixo" ; under_Prep = mkPrep "embaixo" ;
very_AdA = ss "muito" ; very_AdA = ss "muito" ;
want_VV = mkVV (verboV (querer_38 "querer")) ; want_VV = mkVV (mkV (querer_38 "querer")) ;
whatSg_IP = {s = \\c => prepCase c ++ ["que"] ; a = aagr Masc Sg} ; whatSg_IP = {s = \\c => prepCase c ++ ["que"] ; a = aagr Masc Sg} ;
whatPl_IP = {s = \\c => prepCase c ++ ["que"] ; a = aagr Masc Pl} ; --- whatPl_IP = {s = \\c => prepCase c ++ ["que"] ; a = aagr Masc Pl} ; ---
when_IAdv = ss "quando" ; when_IAdv = ss "quando" ;
@@ -167,7 +167,7 @@ concrete StructuralPor of Structural = CatPor **
Masc Pl P2 ; Masc Pl P2 ;
lin lin
as_CAdv = X.mkCAdv "tão" conjThan ; ---- as_CAdv = X.mkCAdv "tão" conjThan ; ----
have_V2 = dirV2 (verboV (ter_1 "ter")) ; have_V2 = dirV2 (mkV (ter_1 "ter")) ;
that_Subj = {s = "que" ; m = Conjunct} ; that_Subj = {s = "que" ; m = Conjunct} ;
lin language_title_Utt = ss "português" ; lin language_title_Utt = ss "português" ;