Lista de Operadores
Operadores lógicos
Equals
O operador relacional Equals verifica a igualdade entre dois valores. Sua forma de uso é value1 == value2. Exemplo:
operations {  if (<x> == <y>) {    print "O valor das variáveis é idêntico!"  }}Greater
O operador relacional Greater verifica se um valor é maior que outro. Sua forma de uso é value1 > value2. Exemplo:
operations {  if (<x> > 10) {    print "O valor da variável é superior a 10"  }}Greater Equals
O operador relacional Greater Equals verifica se um valor é maior ou igual a outro. Sua forma de uso é value1 >= value2. Exemplo:
operations {  if (<y> >= 10) {    print "A variável tem valor igual ou superior a 10"  }}Less Equals
O operador relacional Less Equals verifica se um valor é se um valor é menor ou igual a outro. Sua forma de uso é value1 ⇐ value2. Exemplo:
operations {  if (<x> ⇐ 10) {    print "O valor da variável é igual ou inferior a 10"  }}Less
O operador relacional Less verifica se um valor é se um valor é menor que outro. Sua forma de uso é value1 < value2. Exemplo:
operations {  if (<x> < 10) {    print "O valor da variável é inferior a 10"  }}Not Equals
O operador relacional Not Equals verifica a desigualdade entre dois valores. Sua forma de uso é value1 ~= value2. Exemplo:
operations {  if (<x> ~= 0) {    print "O valor da variável é diferente de 0"  }}Conectivos lógicos
AND
O conectivo conjuntivo AND é usado para concatenar condições de modo a uni-las por meio de E-lógico. Sua forma de uso é cond1 AND cond2. Exemplo:
operations {  if (<x> > 10 AND <y> > 0) {    print "A variável <x> é maior que 10 e a variável <y> é maior que 0"  }}NOT
A negação NOT é usada para inverter o conteúdo lógico de uma expressão, representando o NÃO-lógico. Sua forma de uso é NOT value. Exemplo:
operations {  if(NOT <ehPessoaFisica> OR NOT(<y> > 0)) {    print "A variável <ehPessoaFisica> não é verdadeira ou a variável <y> não é maior que 0."  }}Nota: O NOT via de regra, é usado com a condição entre parênteses. Só não precisamos usar os parênteses quando usamos com uma variável boolean
OR
O conectivo disjuntivo OR é usado para concatenar condições de modo a uni-las por meio de OU-lógico. Sua forma de uso é cond1 OR cond2. Exemplo:
operations {  if (<x> > 10 OR <y> > 0) {    print "A variável <x> é maior que 10 e/ou a variável <y> é maior que 0"  }}XOR
O conectivo disjuntivo XOR é usado para concatenar condições de modo a uni-las por meio de OU-lógico com exclusividade. Sua forma de uso é cond1 XOR cond2. Exemplo:
operations {  if (<x> > 10 XOR <y> > 0) {    print "A variável <x> é maior que 10 ou a variável <y> é maior que 0"  }}Operadores aritméticos
Div
A operador matemático div realiza a divisão entre dois valores, sua forma de uso é value1 / value2. Se ambos os valores forem inteiros, realiza uma divisão inteira, e se pelo menos um dos valores forem reais (Real ou Currency), realiza a divisão fracionária. Exemplo:
declarations {  -<exemplo01> : Integer,  -<exemplo02> : Real}operations {  <exemplo01> = 11 / 2, // resultado: 5  <exemplo02> = 11.0 / 2, // resultado: 5,50
  print "11/2 devolve " & <exemplo01> & " e 11.0/2 devolve " & <exemplo02>}Mod
A operador matemático mod obtém o resto da divisão inteira entre dois valores inteiros, sua forma de uso é value1 % value2. Exemplo:
declarations {  -<varResultado> : Integer}operations {  <varResultado> = 11 % 2, // resultado: 1
  print "11 % 2 devolve " & <varResultado>}Mul
A operador matemático mul realiza a multiplicação entre dois valores, sua forma de uso é value1 * value2. Exemplo: 11.4*2 devolve 22.8
declarations {  -<varResultado> : Real}operations {  <varResultado> = 11.4 * 2, // resultado: 22.8
  print "11.4 * 2 devolve " & <varResultado>}Pow
A operador matemático pow realiza a potenciação entre dois valores, sua forma de uso é value1 ^ value2. Exemplo:
declarations {  -<varResultado> : Integer}operations {  <varResultado> = 10 ^ 2, // resultado: 100
  print "10 ^ 2 devolve " & <varResultado>}Sub
A operador matemático sub realiza a subtração entre dois valores, sua forma de uso é value1 - value2. Exemplo: 10-2 devolve 8
declarations {  -<varResultado> : Integer}operations {  <varResultado> = 10 - 2, // resultado: 8
  print "10 - 2 devolve " & <varResultado>}Sum
A operador matemático sum realiza a soma entre dois valores, sua forma de uso é value1 + value2. Exemplo:
declarations {  -<varResultado> : Integer}operations {  <varResultado> = 10 + 2, // resultado: 10
  print "10 + 2 devolve " & <varResultado>}Operadores para texto
Concatenation (&)
A operador matemático strcat realiza a concatenação entre dois valores em uma String. Sua notação é value1 & value2. No exemplo usaremos a variável <varString> para receber um valor e usá-la no print concatenada com a string "Casa número ".
declarations {  -<varString> : String}operations {  <varString> = 2,
  print "Casa número " & <varString> // devolve: Casa número 2}Operadores de inclusão
In
O operador de inclusão IN é usado para testar condições em que um elemento pertença a um determinado vetor ou lista não-atômica.
No exemplo abaixo declaramos uma lista não-atômica e um vetor de string. Nas operações, temos uma sequência de “if” com o operador IN avaliando se um determinado item da lista foi selecionado pelo usuário. Se um item foi selecionado, usamos o tube add para adicionar uma string no vetor oculto.
Ao final, usamos o “if” com o operador IN para avaliar se um determinado item se encontra no vetor, caso positivo ele fará um print com um texto relacionado ao item.
declarations {  +<pedidos> : List ("Danos materiais", "Danos morais", "Justiça gratuita") {    atomic = false    name = "Pedidos"  },  -|vetorPedidos| : Vector[String]}operations {  if ("Danos materiais" IN <pedidos>) {    |vetorPedidos|.add("Pedido de danos materiais")  },  if ("Danos morais" IN <pedidos>) {    |vetorPedidos|.add("Pedido de danos morais")  },  if ("Justiça gratuita" IN <pedidos>) {    |vetorPedidos|.add("Pedido de justiça gratuita")  },
  if ("Pedido de danos materiais" IN |vetorPedidos|) {    print "Pedido de indenização por danos materiais\b"  },  if ("Pedido de danos morais" IN |vetorPedidos|) {    print "Pedido de indenização por danos morais\b"  },  if ("Pedido de justiça gratuita" IN |vetorPedidos|) {    print "Pedido de concessão do benefício da justiça gratuita\b"  }}Exists
O operador existencial EXISTS é usado para testar condições em que um elemento pertença a um determinado vetor segundo um critério de existência. Sua forma de uso é EXISTS <elem> IN |vect| : condition.
No exemplo abaixo declaramos um vetor de estrutura. Nas operações temos dois “if” com o operador EXISTS avaliando se existe ao menos um elemento do vetor com a condição determinada.
declarations {  +|strPartesAutoras| : Vector[Struct] {    name = "Parte autora"    fields {      +[nome] : String  {        name = "Nome"      },      +[tipo] : List ("Pessoa Física", "Pessoa Jurídica") {        atomic = true        name = "Tipo de pessoa"      }    }  }}operations {  if (EXISTS <autora> IN |strPartesAutoras| : "Pessoa Física" == <autora.tipo>) {    print "Texto usado se existir ao menos uma autora no vetor |strPartesAutoras| que seja Pessoa Física.\b"  },  if (EXISTS <autora> IN |strPartesAutoras| : "Pessoa Jurídica" == <autora.tipo>) {    print "Texto usado se existir ao menos uma autora no vetor |strPartesAutoras|que seja Pessoa Jurídica.\b"  }}Forall
O operador universal FORALL é usado para testar condições em que um elemento pertença a um determinado vetor segundo um critério de universalidade. Sua forma de uso é FORALL <elem> IN |vect| : condition.
No exemplo abaixo declaramos um vetor de estrutura. Nas operações temos dois “if” com o operador FORALL avaliando se todos elementos do vetor possuem a condição determinada.
declarations {  +|strPartesAutoras| : Vector[Struct] {    name = "Parte autora"    fields {      +[nome] : String  {        name = "Nome"      },      +[tipo] : List ("Pessoa Física", "Pessoa Jurídica") {        atomic = true        name = "Tipo de pessoa"      }    }  }}operations {  if (FORALL <autora> IN |strPartesAutoras| : "Pessoa Física" == <autora.tipo>) {    print "Texto usado se todas autoras são Pessoa Física."  },  if (FORALL <autora> IN |strPartesAutoras| : "Pessoa Jurídica" == <autora.tipo>) {    print "Texto usado se todas autoras são Pessoa Jurídica."  }} 
 