Skip to content
/ dialogo Public

Uma linguagem para o diálogo entre humanos e computadores

License

Notifications You must be signed in to change notification settings

quipa/dialogo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dialogo

Uma linguagem para diálogo entre humanos e computadores.

Objetivo

Criar e usar sistemas interativos de informação de modo simples e fléxivel.

Requisitos

  • Humanos:
    • DEVE ser fácil de ler, escrever e compreender para pessoas com educação de ensino médio Brasileiro;
    • DEVE ser fácil de ler e compreender para pessoas com educação de ensino básico Brasileiro e auxílio de terceiros.
    • DEVE ser baseada em Português e ter uma sintaxe e semântica quase natural;
    • DEVE ser adaptável e interativa;
    • DEVE ser fácil de aprender e ensinar num curto espaço de tempo;
    • DEVE permitir criar, pesquisar, atualizar e apagar informações de modo dinâmico;
    • DEVE permitir armazenar informações num formato textual legível para humanos;
    • É RECOMENDÁVEL ser fácil de instalar e configurar;
  • Tecnológicos
    • DEVE ser bem definida e não-ambígua em termos computacionais;
    • DEVE ter poucas dependências obrigatórias;
    • NÃO DEVE deve depender de conexão de Internet para instalar, configurar e utilizar.
    • DEVE ter implementação aberta, de preferência com licença permissiva (BSD, MIT, Apache)
    • DEVE que suportar sistemas operativos desktop (Windows, GNU/Linux, Mac OS)
    • É RECOMENDÁVEL suportar sistemas operativos mobile e plataformas web;
    • É RECOMENDÁVEL ter uma interface gráfica adaptável que permita explorar a manipular informações;
    • É RECOMENDÁVEL integrar sistemas de informação externos (através de API, bindings e protocolos);

Histórico

Esta linguagem foi inspirada por experiências de ensino/aprendizado do Projeto Quipá durante a sua campanha Ação no Sertão de 2019 no Território Serra da Capivara, Piauí, Brasil. Durante esta campanha foram organizados cursos em colaboração com a Cáritas Diocesana de São Raimundo Nonato junto com comunidades rurais, técnicos e profissionais de extensão e estudantes de ensino técnico da Escola Família Agrícola da Serra da Capivara.

A linguagem está sendo concebida por Maxim Simões de Abreu Jaffe no âmbito do mestrado em Gestão dos Recursos Naturais da Universidade de Trás-os-Montes e Alto Douro, Portugal. Será utilizada futuramente para extensão rural e agroecológica em comunidades rurais e urbanas no Território Serra da Capivara, Piauí, Brasil.

Proposta

em construção

A linguagem tem uma sintaxe quase natural, com documentos compostos por frases que podem ser declarações, interrogações ou exclamações, cada uma permitindo um certo tipo de interação com o sistema de informação.

Cada frase é constituída por termos (palavras, símbolos, números, listas, texto literal, etc.).

# comentários começam e terminam com um jogo-da-velha/cardinal #

A Maria é uma agricultora.  # uma declaração altera informação      #
O José é um apicultor?      # uma interrogação pesquisa informação  #
O Pedro é um criador!       # uma exclamação verifica informação    #

A pontuação da linguagem é fixa. Mas a linguagem tem construções de frase dinâmicas que podem ser definidas pelo usuário.

Cada construção tem um procedimento associado, dependendo do tipo de frase. Por exemplo, a primeira frase acima usa um procedimento que declara que a entidade Maria é do tipo agricultora.

Cada construção é composta por um identificador principal, padrões e diversos identificadores chave. Por exemplo, as frases acima seguem a construção (uma entidade) é (um tipo), composto do identificador principal é um padrão de entidade e um padrão de tipo.

Uma frase é construída combinando termos em construções. A seguinte frase é composta por diversas construções:

[A Ana] é [uma apicultora].

# construções
A (uma palavra)   -> uma entidade
uma (uma palavra) -> um tipo
(uma entidade) é (um tipo)
#

Diversas construções podem ter o mesmo identificador principal, o que permite que o mesmo identificador tenha diversos procedimentos (diversos significados).

# (uma entidade) é (um tipo)?
  pesquisa se a entidade é de um certo tipo. #

A Maria é uma agricultora?

# (uma entidade) é (uma entidade).
  declara um sinónimo para a entidade. #

A Ana é a vendedora.

# (um tipo) é (um tipo)!
Uma agricultora é uma pessoa!  

A linguagem além de ter diversas construções padrão do tipo sujeito-verbo-objeto, tem também :

Frases são compostos por termos, incluindo palavras, símbolos, números e texto literal.

Símbolos geralmente são operadores de construções, por exemplo construções aritméticas. linguagem tem diversas construções padrão para operações Outro tipo de construção padrão são :

1 + 2. # adição         : (um número) + (um número)
3 + 4  # subtração      : (um número) +
3 * 4. # multiplicação  : (um número) * (um número)
5 / 6. # divisão        : (um número) / (um número)


As construções tem uma dada precedência:

As frases podem ser agrupadas em diversos tipos de grupos, que modificam como as frases são lidas (avaliadas).

O custo é

Frases

As frases são compostos com base em con

A sintaxe será predominantemente dinâmica, podendo ser redefinada em tempo real. A pontuação da linguagem tem regras fixas que alteram como a linguagem é lida (avaliada). As frases são declarações, interrogações, exclamações.

Exemplos

NOTA: Em construção

Paradigmas

A linguagem suportará os seguintes paradigmas:

  • Imperativo
  • Orientado à objetos
    • Herança múltipla (multiple inheritance)
    • Despacho múltiplo (multiple dispatch)
  • Funcional
    • Funções de primeira-classe (first-class functions)
  • Lógico
    • Procura encapsulada (encapsulated search)

Notas de Design

NOTA: Em construção

Inspiração

A linguagem é filosoficamente inspirada pela linguagem Logo (DiaLogo) concebida por Seymour Papert, Wally Feurzeig, Cynthia Solomon e a linguagem Smalltalk (literalmente significa conversa fiada) concebida por Alan Kay, Dan Ingalls e Adele Goldberg, ambas baseadas na filosofia do construcionismo.

Ela é baseada em conceitos de linguística cognitiva:

Outras linguagens de programação que influenciam a proposta:

Implementação

Atualmente o projeto está a considerar utilizar a plataforma Java por os seguintes motivos:

  • Portabilidade: a máquina virtual (JVM) e bibliotecas Java (APIs) permitem desenvolver software multiplataforma com poucas dependências.
  • Flexibilidade: plataforma pode ser programa através de diversas linguagens (Java, Groovy, Kotlin, Scale, etc.).

A primeira implementação será um interpretador composto das seguintes fases de análise:

  • Morfológica : identifica os morfemas;
  • Léxica : identifica os lexemas;
  • Sintática : identifica as estruturas sintáticas (sintagmas);
  • Semântica : avalia o significado (sememas) associados a cada estrutura sintática.

As fases morfológica, léxica e sintática definem a gramática estática da linguagem, enquanto que a fase semântica definem a gramática dinâmica (construções e formatos).

A análise semântica será baseada no algoritmo Top Down Operator Precedence (TDOP) associando ao identificador principal de cada construção e a cada formato uma precedência. Este algoritmo foi desenvolvido por Vaughan Pratt nos anos 70 e utilizado para implementar a linguagem de programação CGOL.

Teoricamente o interpretador poderia ser implementado por completo com este algoritmo, mas a sepração por fases facilitar a deteção de erros e desenvolvimento modular do interpretador.

Gramática estática

Segue a gramática estática da linguagem em formato EBNF. Ela está divida em três sub-gramáticas e um léxico.

As sub-gramáticas devem ser interpretada como gramáticas GASE (PEG), com alternativas | selecionadas da esquerda para a direita.

O léxico deve ser interpretado como uma gramática GLC (CFG), na qual cada palavra é associada com todos os significados possíveis.

NOTA: carateres latinos não são utilizados nos não-terminais da gramática porque o realce de sintaxe do Github não os reconhece.

Sub-gramática sintática


documento     = [ espacos ] , paragrafo ;
paragrafo     = { frase } ;

frase         = declaracao | interrogacao | exclamacao ;
declaracao    = periodo , '.' , espacos ;
interrogacao  = periodo , '?' , espacos ;
exclamacao    = periodo , '!' , espacos ;

periodo     = [ espacos ] , oracao
            | sequencia , { ',' , espacos , sequencia } ;

oracao      = sequencia | associacao | lista | dicionario ;

sequencia   = [ termo ] , { espacos , termo } ;
associacao  = termo , { ':' ,  espacos , termo } , sequencia ;
lista       = sequencia  , { ';' , espacos , sequencia  }
dicionario  = associacao , { ';' , espacos , associacao } ;

termo       = comentario | item | grupo | chave | tupla ;

grupo       = expressao | bloco | padrao ;
expressao   = '[' , corpo , ']' ;
bloco       = '{' , corpo , '}' ;
padrao      = '(' , periodo , [ espacos ] , ')' ;
corpo       = espacos , paragrafo , espacos | periodo , [ espacos ] ;

chave       = ':' , tupla ;

tupla       = ( item | grupo )
            , { ':' , [ item | grupo ] }
            , ( item | grupo ) ;

Sub-gramática léxica


espacos       = ESPACO , { ESPACO } ;

item        = literal | identificador | especial ;

literal       = nulo | booleano | texto | numero ;

texto         = TEXTO ;

numero        = real | racional | inteiro ;
real          = ('-' | '+') , NUMERO , ',' , NUMERO ;
racional      = ('-' | '+') , NUMERO , '/' , NUMERO ;
inteiro       = decimal | binario | octal | hexadecimal ;
decimal       = ('-' | '+') , NUMERO ;
binario       = '0b' , NUMERO ;
octal         = '0o' , NUMERO ;
hexadecimal   = '0x' , NUMERO ;

booleano      = 'verdadeiro' | 'falso' ;
nulo          = 'nulo' ;

identificador = palavra | operador | extenso ;

palavra       = PALAVRA , { ( "'" | '-' ) , PALAVRA } ;

operador      = SIMBOLO , { SIMBOLO } ;
extenso       = EXTENSO ;

especial      = MORFEMA , ( MORFEMA | PONTO - ':' ) , MORFEMA ;

comentario    = COMENTARIO ;

Sub-gramática morfológica


ESPACO    = ' ' | '\t' | '\n' ;

MORFEMA   = NUMERO | TEXTO | PALAVRA | SIMBOLO ;

NUMERO    = DIGITO , { DIGITO } ;
TEXTO     = "'" , { CURINGA - "'" | "\'" } , '"'
          | '"' , { CURINGA - '"' | '\"' } , '"'
          | '«' , { CURINGA - '»' | '' } , '»' ;

PALAVRA     = LETRA , { LETRA } ;

EXTENSO     = '`' , { CURINGA - '`' - '\n' | '\`' } ,
                  , ( CURINGA - '`' - ESPACO )
                  , { CURINGA - '`' - '\n' | '\`' } , '`' ;

COMENTARIO  = '//' , { CURINGA - '\n' }
            | '[/' , { COMENTARIO | CURINGA - '/' | '\/' } , '/]'
            | '{/' , { COMENTARIO | CURINGA - '/' | '\/' } , '/}'
            | '(/' , { COMENTARIO | CURINGA - '/' | '\/' } , '/)' ;

CURINGA   = ESPACO | CARATERE | SINAL ;

CARATERE  = LETRA | DIGITO | SIMBOLO ;

LETRA     = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k'
          | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v'
          | 'w' | 'x' | 'y' | 'z' |
          | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K'
          | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V'
          | 'W' | 'X' | 'Y' | 'Z'
          | 'ç' | 'Ç'
          | 'ã' | 'õ'
          | 'á' | 'é' | 'í' | 'ó' | 'ú'
          | 'à' | 'è' | 'ì' | 'ò' | 'ù'
          | 'â' | 'ê' | 'ô'
          | 'Ã' | 'Õ'
          | 'Á' | 'É' | 'Í' | 'Ó' | 'Ú'
          | 'À' | 'È' | 'Ì' | 'Ò' | 'Ù'
          | 'Â' | 'Ê' | 'Ô' ;
DIGITO    = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ;
SIMBOLO   = '+' | '-' | '*' | '/' | '=' | '<' | '>' | '%' | '|' | '&'
          | '$' | '@' | '_' | '~' | '^' | '#' | '\' ;

SINAL       = PONTO | DELIMITADOR ;
PONTO       = '.' | '?' | '!' | ':' | ';' | ',' ;
DELIMITADOR = '[' | ']' | '{' | '}' | '(' | ')'
            | '`' | "'" | '"' | '«' | '»' ;

Léxico de palavras reservadas

As seguintes palavras são reservadas e não podem ser redefinidas, mas podem ser utilizadas como identificadores, chaves (de:) ou palavras compostas (como, 1a pess. do sing. pres. indi. de comer).

adj. : adjetivo
adv. : advérbio
art. : artigo
conj. : conjunção
det. : determinante
prep. : preposição
pron. : pronome
quant. : quantificador
v. : verbo
n. m. : nome masculino
n. f. : nome feminindo

Palavras ambíguas tem várias construções associadas, cada associada a um significado.

Observações:

  • Lista tenta ser exaustiva para palavras de classe fechada (determinantes, pronomes, quantificador, preposições, conjunções, contrações), e indicativa para palavras de classe aberta (adjetivos e advérbios).
  • Consideram-se somente preposições essenciais aquelas que não tenham mais nenhum significado por si só (excluindo algumas preposições geralmente consideradas essenciais).
  • Palavras seguem a ortografia brasileira (pt-BR).
  • As palavras estão em caixa baixa, mas podem também ser escritas em caixa alta.
  • São excluídas:
    • Formas atónicas dos pronomes pessoais
    • Conjunções correlativas
    • Interjeições
    • Lista não inclui locuções adverbiais, prepositivas, conjuncionais (por agora)

NOTA: em construção

Quanto à categoria da palavra:


lexico    = classe aberta | classe fechada ;

classe aberta    = verbo | adjetivo | adverbio ;

verbo     = ser | estar | ter ;

(* verbos copulativos ou de ligacao *)
ser       = 'é' | 'são' ;
estar     = 'está'  | 'estão' ;
ficar     = 'fica'  | 'ficam' ;
parecer   = 'parece'    | 'parece' ;
permancer = 'permanece' | 'permanecem' ;
continuar = 'continua'  | 'continuam' ;

ter       = 'tem' ;

adjetivo  = adjetivo comparativo | adjetivo superlativo ;

adjetivo normal       = 'boa' | 'boas'  | 'bom' | 'bons'
                      | ''  | 'más'   | 'mau' | 'maus'
                      | 'grande'  | 'grandes'
                      | 'pequena' | 'pequenas'  | 'pequeno' | 'pequenos' ;

adjetivo comparativo  = 'melhor'  | 'melhores'
                      | 'pior'    | 'piores'
                      | 'menor'   | 'menores'
                      | 'maior'   | 'maiores' ;

adjetivo superlativo  = 'ótima'   | 'ótimas'  | 'ótimo'   | 'ótimos'
                      | 'péssima' | 'péssimas'| 'péssimo' | 'péssimos'
                      | 'máxima'  | 'máximas' | 'máximo'  | 'máximos'
                      | 'mínima'  | 'mínimas' | 'mínimo'  | 'mínimos' ;

adverbio  = adverbio de predicado
          | adverbio de afirmacao
          | adverbio de negacao
          | adverbio de interogacao
          | adverbio de quantidade
          | adverbio de intensidade
          | adverbio de duvida
          | adverbio de demonstracao
          | adverbio de inclusao e exclusao 
          | 'que' | 'mas' | 'embora' | 'pois' ;

adverbio de predicado = adverbio de tempo
                      | adverbio de lugar
                      | adverbio de modo ;

adverbio de afirmacao   = 'sim' | 'certo' ;
adverbio de negacao     = 'não' | 'nem' | 'nunca' | 'jamais' ;
adverbio de interogacao = 'como' | 'onde' | 'quando' | 'porque' ;
adverbio de tempo       = 'ainda'
                        | 'afinal'
                        | 'anteontem'| 'ontem'  | 'hoje' | 'amanhã'
                        | 'antes'    | 'agora'  | 'após' | 'depois' 
                        | 'breve'
                        | 'cedo'  | 'tarde'
                        | 'enfim' | 'então'
                        | '' | 'logo' 
                        | 'nunca' | 'jamais' | 'sempre'
                        | 'outrora'
                        | 'quando' ;
adverbio de lugar       = 'abaixo'  | 'acima' | 'debaixo' | 'embaixo'
                        | 'adiante' | 'diante' | 'afora'
                        | 'algures'
                        | 'aqui' | '' | 'ali' | 'acolá' | ''
                        | 'além' | 'aquém'
                        | 'atrás'   | 'através'
                        | 'antes' | 'depois'
                        | ''
                        | 'detrás'
                        | 'defronte'
                        | 'dentro'  | 'fora'
                        | 'junto'
                        | 'longe' | 'perto' 
                        | 'onde' ;
adverbio de quantidade  = adverbio de intensidade ;
adverbio de intensidade = 'apenas'
                        | 'bastante' | 'bem'
                        | 'demais'  | 'demasiado'
                        | 'mais'    | 'menos'
                        | 'muito' | 'pouco'
                        | 'tudo'  | 'nada'
                        | 'quão'  | 'quanto'  | 'quase'
                        | 'tão'   | 'tanto' ;
adverbio de modo        = 'assim'
                        | 'bem' | 'mal'
                        | 'melhor' | 'pior'
                        | 'como'
                        | 'contra'
                        | 'debalde' | 'depressa' | 'devagar'
                        | 'sobretudo' | 'também' ;
adverbio de duvida      = 'acaso' | 'porventura' | 'quiçá' | 'talvez' ;
adverbio de inclusao
          e exclusao = 'apenas' | 'até'
                     | 'exclusive' | 'inclusive'
                     | 'exceto'
                     | 'fora'
                     | 'menos'
                     | 'sequer' | '' | 'somente'
                     | 'também' ;
adverbio de demonstracao  = 'eis' ;

classe fechada  = determinante | pronome | preposicao | conjuncao | contracao ;

determinante      = determinante artigo
                  | determinante demonstrativo
                  | determinante possesivo
                  | determinante indefinido
                  | determinante relativo
                  | determinante interrogativo ;

determinante artigo = artigo definido | artigo indefinido ;
artigo definido     = 'a' | 'as' | 'o' | 'os' ;
artigo indefinido   = 'uma' | 'umas'  | 'um'  | 'uns' ;

determinante demonstrativo = 'esta'   | 'estas'   | 'este'   | 'estes'
                           | 'essa'   | 'essas'   | 'esse'   | 'esses'
                           | 'aquela' | 'aquelas' | 'aquele' | 'aqueles' ;

determinante possesivo  = 'minha' | 'minhas' | 'meu'   | 'meus'
                        | 'tua'   | 'tuas'   | 'teu'   | 'teus'
                        | 'sua'   | 'suas'   | 'seu'   | 'seus'
                        | 'nossa' | 'nossas' | 'nosso' | 'nossos'
                        | 'vossa' | 'vossas' | 'vosso' | 'vossos' ;

determinante indefinido = 'certa' | 'certas'  | 'certo' | 'certos'
                        | 'outra' | 'outras'  | 'outro' | 'outros' ;
                          
determinante relativo   = 'cujo' | 'cuja' | 'cujos' | 'cujas' ;

determinante interrogativao = 'que' | 'qual'  | 'quais' ;

pronome = pronome pessoal
        | pronome demonstrativo
        | pronome possesivo
        | pronome indefinido
        | pronome relativo
        | pronome interrogativo ;

pronome pessoal = 'eu'  | 'tu'  | 'ela' | 'ele' | 'nós' | 'elas' | 'eles'
                | 'mim' | 'ti'  | 'si'
                | 'a' | 'as' | 'o' | 'os'
                | 'comigo'  | 'contigo' | 'consigo' | 'conosco' | 'convosco' ;

pronome demonstrativo = 'esta'  | 'estas'   | 'este'  | 'estes'
                      | 'essa'  | 'essas'   | 'esse'  | 'esses'
                      | 'aquela'| 'aquelas' | 'aquele'| 'aqueles' ;

pronome possesivo     = 'minha' | 'minhas'  | 'meu'   | 'meus'
                      | 'tua'   | 'tuas'    | 'teu'   | 'teus'
                      | 'sua'   | 'suas'    | 'seu'   | 'seus'
                      | 'nossa' | 'nossas'  | 'nosso' | 'nossos'
                      | 'vossa' | 'vossas'  | 'vosso' | 'vossos' ;

pronome indefinido    = 'certa' | 'certas'  | 'certo' | 'certos'
                      | 'outra' | 'outras'  | 'outro' | 'outros' ;
                      (* faltam vários consultar gramática *)

pronome relativo      = 'cuja'  | 'cujas'   | 'cujo'  | 'cujas' ;

pronome interrogativo = 'que' | 'qual' | 'quais'

quantificador = quantificador universal
              | quantificador existencial
              | quantificador numeral
              | quantificador interrogativo
              | quantificador relativo ;

quantificador universal   = 'toda'    | 'todas'   | 'todo'    | 'todos'
                          | 'nenhuma' | 'nenhumas'| 'nenhum'  | 'nenhuns'
                          | 'ambos'   | 'cada'    | 'qualquer' ;

quantificador existencial = 'alguma'  | 'algumas' | 'algum'   | 'alguns'
                          | 'algo'    | 'alguém' ;

(* por concluir *)
quantificador numeral = ;
quantificador interrogativo = 'quanto' ;
quantificador relativo      = ;

preposicao  = preposicao essencial | presposicao acidental ;
preposicao essencial  = 'ante'
                      | 'com'   
                      | 'de'    | 'desde'
                      | 'em'    | 'entre'   | 
                      | 'para'  | 'perante'
                      | 'sem'   | 'sob'
                      | 'trás' ;
preposicao acidental  = 'a'     | 'após'      | 'até'
                      | 'como'  | 'conforme'  | 'contra'
                      | 'durante'
                      | 'exceto'
                      | 'fora'
                      | 'mais'
                      | 'menos'
                      | 'por'
                      | 'que'
                      | 'salvo'
                      | 'senão'
                      | 'sobre'
                      | 'mediante' ;
                    
conjuncao = conjuncao coordenativa
          | conjuncao subordinativa ;

conjuncao coordenativa  = conjuncao copulativa
                        | conjuncao disjuntiva
                        | conjuncao conclusiva
                        | conjuncao adversativa
                        | conjuncao explicativa ;

conjuncao copulativa  = 'e' | 'nem' | 'também' ;
conjuncao disjuntiva  = 'ou' ;
conjuncao conclusiva  = 'assim' | 'logo'| 'pois' | 'portanto' ;
conjuncao adversativa = 'contudo' | 'mas' | 'porém' | 'todavia' ;
conjuncao explicativa = 'pois' | 'porquanto' | 'porque' | 'que' ;

conjuncao subordinativa = conjuncao completiva
                        | conjuncao causal
                        | conjuncao final
                        | conjuncao temporal
                        | conjuncao concessiva
                        | conjuncao condicional
                        | conjuncao comparativa
                        | conjuncao consecutiva ;

conjuncao completiva    = 'que' ;
conjuncao causal        = 'como' | 'pois' | 'porquanto' | 'porque' | 'que' ;
conjuncao final         = 'que' ;
conjuncao temporal      = 'apenas' | 'mal' | 'quanto' | 'enquanto' ;
conjuncao concessiva    = 'conquanto' | 'embora' | 'que' ;
conjuncao condicional   = 'se' | 'senão' | 'caso' ;
conjuncao comparativa   = 'como' | 'conforme' ;
conjuncao consecutiva   = 'que' ; (* quando *)

(*  a + pron. dem.  *)
(*  a + adv.  *)
(*  de + art. *)
(*  de + pron. pess. *)
(*  de + pron. dem.  *)
(*  de + pron. indef. *)
(*  de + adv. ou de + prep. *)
(*  em + art. *)
(*  em + pron. pess. *)
(*  em + pron. dem.  *)
(*  em + pron. indef. *)
(*  por + pron. pess.  *)

contracao = 'à'   | 'às'  | 'ao'  | 'aos'
          | 'àquela' | 'àquelas'| 'àquele' | 'àqueles'
          | 'aonde' | 'Aonde'
          | 'da'    | 'das'   | 'do'  | 'dos'
          | 'duma'  | 'dumas' | 'dum' | 'duns'
          | 'dela'    | 'delas'   | 'dele'    | 'deles'
          | 'desta'   | 'destas'  | 'deste'   | 'destes'
          | 'dessa'   | 'dessas'  | 'desse'   | 'desses'
          | 'daquela' | 'daquelas'| 'daquele' | 'daqueles'
          | 'daquilo'
          | 'doutra'  | 'doutras' | 'doutro'  | 'doutros'
          | 'daqui' | 'daí' | 'dali' | 'daquém' | 'dalém' | 'dentre'
          | 'dantes' | 'dacolá' | 'donde'
          | 'na'  | 'nas' | 'no'  | 'nos'
          | 'numa'  | 'numas' | 'num'   | 'nuns'
          | 'nela'    | 'nelas'   | 'nele'    | 'neles'
          | 'neste'   | 'nesta'   | 'nestes'  | 'nestas'
          | 'nesse'   | 'nessa'   | 'nesses'  | 'nessas'
          | 'naquele' | 'naquela' | 'naqueles'| 'naquelas'
          | 'naquilo'
          | 'noutro'  | 'noutra'  | 'noutros' | 'noutras'
          | 'pelo'    | 'pela'    | 'pelos'   | 'pelas' ;

(* 
diversa   = 'como'  verb.
          | 'qual'  (* conj. *)
          | 'quais' (* conj. *)
          | 'se'            (* pron.    *)
          | 'caso'          (* n.m, v.  *)
          | 'exceto'       (* adj., adv.   *)
          | 'mediante'      (* adj. *)
          | 'conforme'      (* adj. 2 g. | adv. | conj. | prep. *)
          | 'consoante'     (* adj. 2 g. | n. f. | prep. *)
          | ? a ser definidos num arquivo separado ? ;
*)

About

Uma linguagem para o diálogo entre humanos e computadores

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published