#! /usr/bin/gawk -f # Last edited on 2004-12-30 22:35:23 by stolfi # deduct-clises - DEDUZ ENCLISES E MESOCLISES BEGIN { # CONSTANTES DE FORMATO PADRAO # VERBOS v1a = ".+[áêíôaeiou]"; # Conjugacoes com final (vogal+s): terminadas em (á,ê,í,ô,a,e,i,o,u) # (dás,lês,possuís,repôs,partias,partistes,partis,partimos,pus) + (o,a,os,as) = # (dá-,lê-,possuí-,repô-,partia-,partiste-,parti-,partimo-,pu-) + (lo,la,los,las) v1b = ".+[ée][m]"; # Conjugacoes com final (éns,ens): terminadas em (ém,em) # (tens,reténs) + (o,a,os,as) = (tem-,retém-) + (lo,la,los,las) v1c = ".+[á]"; # Conjugacoes com final (az): terminadas em (á) # (faz) + (o,a,os,as) = (fá-) + (lo,la,los,las) v1d = ".+[ê]"; # Conjugacoes com final (ez): terminadas em (ê) # (fez) + (o,a,os,as) = (fê-) + (lo,la,los,las) v1e = ".+[iu]"; # Conjugacoes com final (iz,uz): terminadas em (i,u) # (fiz,conduz) + (o,a,os,as) = (fi-,condu-) + (lo,la,los,las) v1f = ".+[á]"; # Conjugacoes com final (ar): terminadas em (á) # (dar) + (o,a,os,as) = (dá-) + (lo,la,los,las) v1g = ".+[ê]"; # Conjugacoes com final (er): terminadas em (ê) # (ler) + (o,a,os,as) = (lê-) + (lo,la,los,las) v1h = ".+[íi]"; # Conjugacoes com final (ir): terminadas em (í,i) # (possuir,partir) + (o,a,os,as) = (possuí-,parti-) + (lo,la,los,las) v1i = ".+[p][ô]"; # Conjugacoes com final (or): terminadas em (pô) # (repor) + (o,a,os,as) = (repô-) + (lo,la,los,las) v1j = "[p][ô]"; # Conjugacoes com palavra pôr: (pô) # (pôr) + (o,a,os,as) = (pô-) + (lo,la,los,las) v1 = "(" v1a "|" v1b "|" \ v1c "|" v1d "|" v1e "|" \ v1f "|" v1g "|" v1h "|" v1i "|" v1j ")"; # Conjugacoes com final s: terminadas em (á,ê,í,ô,a,e,i,o,u,ém,em) # Conjugacoes com final z: terminadas em (á,ê,i,u) # Conjugacoes com final r: terminadas em (á,ê,í,i,pô) v2 = ".+([aeéê][m]|[ã][o]|[õ][e])"; # Conjugacoes nasais: terminadas em (am,em,ém,êm,ão,õe) # (davam,fazem,retém,têm,dão,põe) + (o,a,os,as) = # (davam-,fazem-,retém-,têm-,dão-,põe-) + (no,na,nos,nas) v3 = ".+[oaeiuáêí]"; # Conjugacoes nao nasais ou com finais r,s,z: terminadas em (o,a,e,i,u,á,ê,í) # (parto,dava,partiste,parti,partiu,dá,dê,possuí) + (o,a,os,as) v4 = ".+mo"; # Conjugacoes com final (mos): terminadas em (mo) # (vimos) + nos = vimo-nos v5 = ".+([^s]|[^o][s]|[^m][o][s])"; # Conjugacoes nao terminadas em (mos) # (dê,vistes,feitos) + nos v6a = ".+[á]"; # Conjugacoes com final (ar)+futuros do indicativo: terminadas em (á) # (cantarei) + (o,a,os,as) = (cantá-) + (lo,la,los,las) + (-ei) v6b = ".+[ê]"; # Conjugacoes com final (er)+futuros do indicativo: terminadas em (ê) # (venderei) + (o,a,os,as) = (vendê-) + (lo,la,los,las) + (-ei) v6c = ".+[ô]"; # Conjugacoes com final (or)+futuros do indicativo: terminadas em (ô) # (reporei) + (o,a,os,as) = (repô-) + (lo,la,los,las) + (-ei) v6d = ".+[íi]"; # Conjugacoes com final (ir)+futuros do indicativo: terminadas em (í,i) # (construirei,pedirei) + (o,a,os,as) = # (construí-,pedi-) + (lo,la,los,las) + (-ei) v6 = ".+[áêôíi]"; # Conjugacoes nos futuros do indicativo: terminadas em (á,ê,ô,í,i) v7 = ".+[aeio]r"; # Conjugacoes nos futuros do indicativo: terminadas em (ar,er,ir,or) # (levarei,proverei,direi,porei) + (te) = # (levar-,prover-,dir-,por-) + (te) + (-ei) v8 = "[^ ]+"; # Todas as conjugacoes : todas as terminacoes # (levei,levamos) + (te) = (levei-,levamos-) + (te) # PRONOMES OBLIQUOS ATONOS p1 = "l[ao][s]?"; # Diretos em 3a pessoa do singular (o,a,os,as): (lo,la,los,las) # (fez,cantarei) + (o,a,os,as) = (fê-[lo,la,los,las],cantá-[lo,la,los,las]-ei) p2 = "n[ao][s]?"; # Diretos em 3a pessoa do singular (o,a,os,as): (no,na,nos,nas) # (davam) + (o,a,os,as) = (davam-) + (no,na,nos,nas) p3 = "[ao][s]?"; # Diretos em 3a pessoa do singular (o,a,os,as) # (partiu) + (o,a,os,as) p4 = "nos"; # Únicos da 1a pessoa do plural (nos) - (vimos) + (nos) = (vimo-nos) p5 = "(vos|[mts]e|lhe[s]?)"; # Diretos ou indiretos exceto (o,a,os,as,nos) = (vos,me,te,se,lhe,lhes) p6 = "(lh|[mt])[ao][s]?"; # Contracoes de indireto + direto = (lha,lhas,lho,lhos,ma,mas,mo,mos,ta,tas,to,tos) p7 = "(" p5 "|" p6 ")"; # Todos exceto (o,a,os,as,nos) = # (vos,me,te,se,lhe,lhes,lha,lhas,lho,lhos,ma,mas,mo,mos,ta,tas,to,tos) p8 = "(" p4 "|" p5 "|" p6 ")"; # Todos exceto (o,a,os,as) = # (nos,vos,me,te,se,lhe,lhes,lha,lhas,lho,lhos,ma,mas,mo,mos,ta,tas,to,tos) # DESINENCIAS VERBAIS DOS FUTUROS (DO PRESENTE OU DO PRETÉRIDO) DO INDICATIVO dfpr = "(ei[s]?|[á][s]?|emos|[ã]o)"; # Do futuro do presente = (ei,ás,á,emos,eis,ão) dfpt = "(ia[ms]?|[í]amos|[í]eis)"; # Do futuro do presente = (ia,ias,ia,íamos,íeis,iam) d = "(" dfpr "|" dfpt ")"; # Todas = (ei,ás,á,emos,eis,ão,ia,ias,ia,íamos,íeis,iam) } ($0 ~ "^" v1 "[-]" p1 "$") { # Entrada: - saida: - en vb - cp # Extrai o verbo modificado (sem o r,s,z) para restaura-lo: verbomod = gensub(/^(.+)[-]l([ao][s]?)$/,"\\1","g"); # Extrai o pronome retirando o "l" inicial (lo,la,los,las) pronome = gensub(/^(.+)[-]l([ao][s]?)$/,"\\2","g"); if (verbomod ~ "^" v1a "$") { # Conjugacao terminada em (á,ê,í,ô,a,e,i,o,u) # acrescenta o "s" = (ás,ês,ís,ôs,as,es,is,os,us) verbo = verbomod "s"; printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } if (verbomod ~ "^" v1b "$") { # Conjugacao terminada em (ém,em) # retira m acrescenta ns = (éns,ens) verbo = gensub(/^(.+)m$/,"\\1ns","g",verbomod); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } if (verbomod ~ "^" v1c "$") { # Conjugacao terminada em (á) # retira á acrescenta az = (az) verbo = gensub(/^(.+)[á]$/,"\\1az","g",verbomod); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } if (verbomod ~ "^" v1d "$") { # Conjugacao terminada em (ê) # retira ê acrescenta ez = (ez) verbo = gensub(/^(.+)[ê]$/,"\\1ez","g",verbomod); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } if (verbomod ~ "^" v1e "$") { # Conjugacao terminada em (i,u) # acrescenta z = (iz,uz) verbo = verbomod "z"; printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } if (verbomod ~ "^" v1f "$") { # Conjugacao terminada em (á) # retira á acrescenta ar = (ar) verbo = gensub(/^(.+)[á]$/,"\\1ar","g",verbomod); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } if (verbomod ~ "^" v1g "$") { # Conjugacao terminada em (ê) # retira ê acrescenta er = (er) verbo = gensub(/^(.+)[ê]$/,"\\1er","g",verbomod); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } if (verbomod ~ "^" v1h "$") { # Conjugacao terminada em (í,i) # retira (í,i) acrescenta ir = (ir) verbo = gensub(/^(.+)[íi]$/,"\\1ir","g",verbomod); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } if (verbomod ~ "^" v1i "$") { # Conjugacao terminada em (pô) # retira ô acrescenta or = (por) verbo = gensub(/^(.+)[ô]$/,"\\1or","g",verbomod); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } if (verbomod ~ "^" v1j "$") { # Conjugacao que é a palavra "pô" # acrescenta r = "pôr" verbo = verbomod "r"; printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } } ($0 ~ "^" v2 "[-]" p2 "$") { # entrada: - saida: - en vb - cp # Extrai o verbo com terminacao nasal verbo = gensub(/^(.+)[-]n([ao][s]?)$/,"\\1","g"); # Extrai o pronome retirando o "n" inicial (no,na,nos,nas) pronome = gensub(/^(.+)[-]n([ao][s]?)$/,"\\2","g"); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } ($0 ~ "^" v3 "[-]" p3 "$") { # entrada: - saida: - en vb - cp # Extrai o verbo com terminacao nao nasal,r,s,z verbo = gensub(/^(.+)[-]([ao][s]?)$/,"\\1","g"); # Extrai o pronome (o,a,o,as) pronome = gensub(/^(.+)[-]([ao][s]?)$/,"\\2","g"); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } ($0 ~ "^" v4 "[-]" p4 "$") { # entrada: - saida: - en vb - cp # Extrai o verbo modificado acrescentando s (mo->mos) verbo = gensub(/^(.+)[-](nos)$/,"\\1s","g"); # Extrai o pronome (nos) pronome = gensub(/^(.+)[-](nos)$/,"\\2","g"); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } ($0 ~ "^" v5 "[-]" p4 "$") { # entrada: - saida: - en vb - cp # Extrai o verbo verbo = gensub(/^(.+)[-](nos)$/,"\\1","g"); # Extrai o pronome (nos) pronome = gensub(/^(.+)[-](nos)$/,"\\2","g"); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } ($0 ~ "^" v8 "[-]" p7 "$") { # entrada: - saida: - en vb - cp # Extrai o verbo verbo = gensub(/^(.+)[-]([^-]+)$/,"\\1","g"); # Extrai o pronome (todos exceto nos) pronome = gensub(/^(.+)[-]([^-]+)$/,"\\2","g"); printf("%s %s %s %s %s %s\n", $0, "en", verbo, "vb", "-" pronome, "cp"); } ($0 ~ "^" v6 "[-]" p1 "[-]" d "$") { # entrada: -- saida: -- me vbfdf - cp # Extrai o verbo modificado (sem r) para restaura-lo verbomod = gensub(/^(.+)[-]l([ao][s]?)[-]([^-]+)$/,"\\1","g"); # Extrai o pronome retirando o "l" inicial (lo,la,los,las) pronome = gensub(/^(.+)[-]l([ao][s]?)[-]([^-]+)$/,"\\2","g"); # Extrai a desinencia desinencia = gensub(/^(.+)[-]l([ao][s]?)[-]([^-]+)$/,"\\3","g"); if (verbomod ~ "^" v6a "$") { # Conjugacao terminada em (á) # retira á acrescenta ar e concatena com desinencia verbo = gensub(/^(.+)[á]$/,"\\1ar","g",verbomod) desinencia printf("%s %s %s %s %s %s\n", $0, "me", verbo, "vbfdf", "-" pronome, "cp"); } if (verbomod ~ "^" v6b "$") { # Conjugacao terminada em (á) # retira ê acrescenta er e concatena com desinencia verbo = gensub(/^(.+)[ê]$/,"\\1er","g",verbomod) desinencia printf("%s %s %s %s %s %s\n", $0, "me", verbo, "vbfdf", "-" pronome, "cp"); } if (verbomod ~ "^" v6c "$") { # Conjugacao terminada em (á) # retira ô acrescenta or e concatena com desinencia verbo = gensub(/^(.+)[ô]$/,"\\1or","g",verbomod) desinencia printf("%s %s %s %s %s %s\n", $0, "me", verbo, "vbfdf", "-" pronome, "cp"); } if (verbomod ~ "^" v6d "$") { # Conjugacao terminada em (á) # retira (í,i) acrescenta ir e concatena com desinencia verbo = gensub(/^(.+)[íi]$/,"\\1ir","g",verbomod) desinencia printf("%s %s %s %s %s %s\n", $0, "me", verbo, "vbfdf", "-" pronome, "cp"); } } ($0 ~ "^" v7 "[-]" p8 "[-]" d "$") { # entrada: -- saida: -- me vbfdf - cp # Extrai o verbo concatenado com desinencia verbo = gensub(/^(.+)[-]([^-]+)[-]([^-]+)$/,"\\1\\3","g"); # Extrai o pronome pronome = gensub(/^(.+)[-]([^-]+)[-]([^-]+)$/,"\\2","g"); printf("%s %s %s %s %s %s\n", $0, "me", verbo, "vbfdf", "-" pronome, "cp"); }