CONJUGUE(1)

๐Ÿฆ‹ NOME ๐Ÿฆ‹

okay bestie, so conjugue(1) โ€” it's a conjugador de verbos da lรญngua portuguesa ๐Ÿ’– a Portuguese verb conjugator, from the br.ispell fam. and yes it ate.


โœจ SINOPSE โœจ

conjugue [-v VARIรVEL=valor] ...

that's it. that's the whole vibe. ๐ŸŽ€


๐Ÿ’… DESCRIร‡รƒO ๐Ÿ’…

so conjugue reads a verb database โ€” a banco de verbos โ€” that's got paradigms in it plus lists of verbs that conjugate according to each paradigm. and then it lets you conjugate verbs either through an interactive interface or as a plain one-shot command you type right at the shell prompt. lowkey elegant.

you can pass parameters to conjugue through the -v option of awk, which lets you predefine the value of a variable. the variables in question are, and I'm listing every single one, no skipping:

  • BANCO โ€” full path of the verb database (default /usr/lib/brazilian-conjugate/verbos). the whole thing. the mothership. ๐Ÿ—‚๏ธ
  • NOVOS โ€” full path of the file where conjugue appends new verbs that aren't in the database yet (default $HOME/.conjugue-novos). yes, it appends, it's giving journal energy. ๐Ÿ“
  • FORMATO โ€” output format. the output is the conjugation (the forms) of the verb(s) you wanna conjugate. the possibilities are: c (short, used for generating word lists), n (normal, the original format, a little cryptic), ci (used for listing verbs for br.ispell), aa (used for generating the verbal affix rules for br.ispell), l (long, a little less cryptic than the n), and ll (very long, similar to what grammars usually use). and also b (used for generating the list of paradigms or of the verbs in the base dictionary formats). default format is l. ๐Ÿ’ซ
not me listing c, n, ci, aa, l, ll, b in that exact order โ€” but I did, because that's the order, and we respect the order.
  • CMD โ€” execute that command. in this case conjugue runs the given command and bails. otherwise, conjugue will show you a prompt for entering interactive commands. the available commands are: ? to show a summary of the commands, a to list the abbreviations, n to display some notes, f to quit, and T to conjugate all the verbs in the database. and to conjugate one specific verb, you just enter that verb at the command prompt (or point it out on the command line as the initial value of CMD). ๐Ÿซถ

๐ŸŒˆ EXEMPLOS ๐ŸŒˆ

  1. Conjugate the verb "amar" with the output in the very long format:
$ conjugue -v FORMATO=ll -v CMD=amar
  1. Enter interactive mode and display the conjugations in the very long format:
$ conjugue -v FORMATO=ll
  1. Conjugate all the verbs of the specified database, generating a list of stems for br.ispell:
$ conjugue -v BANCO=verbos -v FORMATO=ci -v CMD=T

๐Ÿ“š BANCO DE VERBOS ๐Ÿ“š

the banco de verbos (verb database) contains the conjugation of the paradigms and, for each one of them, a list of verbs that conjugate according to that paradigm. each paradigm can also contain info for the heuristic that deduces which paradigm to use in cases where the database doesn't have that info. here's a description of the verb database format โ€” and I'm giving you the grammar exactly, character for character, because this is the part where you do not get to be cute:

S == [a-zรกรฉรญรณรบร รจรฌรฒรนรงรฃรตรผ]+
V == Sr
L == [S(,S)*]
F == L(:L)*
T == FN|IP|PI|II|EI|MI|TI|FI|PS|IS|FS|IA|IN
P == paradigma:V[:S]<lf>(T:F<lf>)*<lf>
A == abundante:V:L<lf>
B == [[P(V0*]|[A]]*

the database can contain, at any position, lines starting with the # character or blank lines, which are ignored. ๐Ÿšฎ (we love a comment.)

semantically speaking, the grammar symbols mean:

  • S โ€” non-null string
  • V โ€” verb
  • L โ€” list of strings
  • F โ€” inflection in a tense or mood
  • T โ€” name of tense or mood
  • P โ€” paradigm
  • A โ€” abundant participle
  • B โ€” database

the term <lf> is a line break. the list of verbs that follows a given paradigm is the list of verbs that conjugate according to that paradigm. the string optionally given as the last component on the P line is the ending that will heuristically be used to decide when to use that paradigm (in the case of verbs that don't specify a paradigm). ๐Ÿ‘‘


๐Ÿงš REGRAS DE TRANSFORMAร‡รƒO DE RADICAIS ๐Ÿงš

some irregular verbs have their stem changed throughout the conjugation. because of that, the program has to deduce, from the paradigm, a stem-change rule, which will be applied to all the verbs that follow that paradigm. for example, in the verb "seguir" the vowel "e" of the stem gets swapped for "i" in some cases ("eu sigo").

the way this has been handled is merely by knowing the types of stem changes in advance, and hardcoding them. so far it's been possible to encode all the stem modification rules through variations of a single rule, namely, the substitution of the last vowel of the stem, or of the last vowel of the stem after discarding its last letter.

the normaliza function in the script contains a vowel transformation table that covers all the transformations known so far. in the event that conjugue shows the message "vogal nรฃo normalizada" when it starts up, you'll need to add a new vowel substitution rule to the normaliza function, and its inverse to the desnormaliza function. the script documents how to add new rules. ๐Ÿ’œ


๐ŸŒธ FORMAS ENCLรTICAS ๐ŸŒธ

enclisis in some cases causes an orthographic change to the verb, like for example "amรกโ€la" (amar + ela). starting from version 1.1, conjugue has specific support for generating some of these forms, but that's only active when the output format is ci. for more details, please check the conjugue source. ๐Ÿ”


๐Ÿ—‚๏ธ ARQUIVOS ๐Ÿ—‚๏ธ

  • /usr/lib/brazilian-conjugate/verbos โ€” banco de verbos.
  • $HOME/.conjugue-novos โ€” file for appending verbs that aren't in the database.

๐Ÿ’€ BUGS ๐Ÿ’€

okay so listen. there are problems. we're being honest about them:

  • The file where new verbs keep getting appended is not read by conjugue on startup. like, it's just... there. vibes only. ๐Ÿ™ˆ
  • The occurrence of the same verb more than once in the database causes the program to malfunction.
  • This man page contains accented characters, which on some systems maybe won't be displayed. to view it correctly, use an ISO font and, if groff is available, try the command
$ groff -Tlatin1 -man conjugue.1|more

๐Ÿ‘€ VER TAMBร‰M ๐Ÿ‘€


๐Ÿ‘‘ AUTOR ๐Ÿ‘‘

Ricardo Ueda Karpischek <ueda@ime.usp.br>


and that's the whole page bestie ๐Ÿซถ this came to you from br.ispell, dated 18 de outubro de 1999, and it's still iconic. periodt. ๐Ÿ’–โœจ๐ŸŽ€

๐Ÿ“ฆ where this page comes from