Looplex Knowledge Base

Grammar

O tube grammar flexiona palavras em gênero (feminino ou masculino) e número (singular ou plural) de acordo com a variável com a qual estão associadas. Para que seja feita a flexão de número, a variável deve ser do tipo Integer ou um vetor, fazendo com que a palavra seja flexionada conforme o número da variável Integer ou o número de elementos do vetor. Para que seja feita a flexão de gênero, a variável deve ser do tipo List ou Struct. Nesse último, deverá conter um campo do tipo List com opção de lista que permita a flexão de gênero (o alias do campo deve ser obrigatoriamente "genero" ou "gender"). É importante mencionar que o tube grammar não funciona se a palavra a ser flexionada não constar no dicionário gramatical Looplex. Caso deseje incluir novas opções ao dicionário, entre em contato com nossa equipe de Suporte, enviando os termos a serem incorporados.

Formato:

<varGen>.grammar(string)
<varNum>.grammar(string)
|vector|.grammar(string)

Parâmetros:

  • varGen: variável que permita flexão de gênero. Pode ser do tipo List ou Struct contendo necessariamente um campo do tipo List. A lista que permite a flexão de gênero deve obrigatoriamente conter uma opção que designe a flexão feminina. As opções de lista reconhecidas pelo tube são: "Feminino", "feminino", "FEMININO", "Female", "female", "FEMALE", "F" ou "f".
  • varNum: variável do tipo Integer que permita flexão de número.
  • vector: vetor de qualquer tipo, permitindo flexão de número. Adicionalmente, quando for vetor do tipo Struct, é possível fazer também flexão de gênero.
  • string: palavra ou palavras a serem flexionadas em número e/ou gênero. Pode ser uma variável do tipo String informada pelo usuário ou um texto fixo inserido diretamente no sistema. Nesse caso específico, deverá estar no masculino singular.

Retorno:

A palavra ou palavras com a devida flexão de gênero e/ou número.

Exemplo:

  1. Grammar flexionando gênero com List. É possível fazer a flexão de gênero a partir de uma variável do tipo List. Considere que se deseja flexionar o gênero do patrono de uma empresa a partir da variável <genero>, do tipo List.
declarations {
+<genero> : List ("Feminino", "Masculino") {
name = "Gênero"
request = "Indique o gênero da pessoa"
help = "A indicação de gênero é importante para que sejam feitas as flexões gramaticais corretas."
atomic = true
}
}
operations {
print "Por fim, requer que futuras intimações e publicações sejam realizadas exclusivamente em nome " & <genero>.grammar("do patrono") & " da Reclamada."
}
  1. Grammar flexionando gênero com Struct. O tube também consegue fazer a flexão de gênero a partir de structs. Considere uma struct de qualificação do procurador de uma empresa, contendo o campo [genero] e o campo [cargo], uma lista atômica com as opções de cargo do procurador dentro da empresa. Serão feitas as flexões de "seu" e de [cargo] a partir da variável <procurador>.
declarations {
+<procurador> : struct[Procurador] {
name = "Procurador"
fields {
+[nome] : String {
name = "Nome do procurador"
request = "Informe o nome do procurador"
},
+[genero] : List ("Feminino", "Masculino") {
name = "Gênero"
request = "Indique o gênero do procurador"
help = "A indicação de gênero é importante para que sejam feitas as flexões gramaticais corretas."
atomic = true
},
+[cargo] : List ("Administrador", "Conselheiro", "Diretor") {
name = "Cargo"
request = "Indique o cargo do procurador na empresa"
atomic = true
}
}
}
}
operations {
print "Representando a empresa, " & <procurador>.grammar("seu") & " " & <procurador>.grammar(<procurador.cargo>) & ", " & <procurador.nome> & "."
}
  1. Grammar flexionando número com Integer. É possível, ainda, utilizá-lo a partir de uma variável ou campo do tipo Integer. Considere a struct <dadosDaCompra> com o campo [numeroDeProdutos] designando o número de produtos adquiridos.
declarations {
+<dadosDaCompra> : struct[DadosDaCompra] {
name = "Dados da compra"
fields {
+[numeroDeProdutos] : Integer {
name = "Número de produtos adquiridos"
request = "Informe o número de produtos adquiridos"
}
}
}
}
operations {
print "Foi realizada a compra de " & <dadosDaCompra.numeroDeProdutos> & " " & <dadosDaCompra.numeroDeProdutos>.grammar("produto") & "."
}
  1. Grammar flexionando gênero e número com vetor. Algumas flexões são utilizadas com muita frequência para termos repetidos no código, como "o Autor". Para esses casos, é possível atribuir o retorno do tube a uma variável oculta do tipo String, como <printOAutor>, e utilizá-la repetidas vezes no texto. Considere, assim, o vetor do tipo Struct |autores|, contendo o campo [genero] descrito anteriormente. Ao flexionar a expressão "o Autor", é possível obter as variações: "o Autor", "os Autores", "a Autora" ou "as Autoras".
declarations {
struct[Autores] {
name = "Autores"
fields {
+[genero] : List ("Feminino", "Masculino") {
name = "Gênero"
request = "Indique o gênero do autor"
help = "A indicação de gênero é importante para que sejam feitas as flexões gramaticais corretas."
atomic = true
}
}
},
+|autores| : Vector[Autores],
-<printOAutor> : String
}
operations {
<printOAutor> = |autores|.grammar("o Autor"),
print "Importante destacar que, caso " & <printOAutor> & " " & |autores|.grammar("tenha") & " ganho de causa, esta Requerida será obrigada a cumprir uma sentença injusta, acarretando enriquecimento sem causa d" & <printOAutor> & "."
}

Dica: PrintIf em substituição ao grammar. Como dito no início, algumas palavras não constam no dicionário gramatical Looplex. Para esses casos, enquanto estiver em análise eventual pedido de inclusão de termo, é possível utilizar o tube printIf para realizar a flexão gramatical.

Edit this page on GitHub