1 / 14

Linguagem OperOR operor.googlecode

Sobrecarga e Declaração de Operadores Rafael Fonseca (rjcf@cin.ufpe.br) Romeu Guimarães (rag@cin.ufpe.br). Linguagem OperOR http://operor.googlecode.com. Agenda. Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades Referências.

hisa
Télécharger la présentation

Linguagem OperOR operor.googlecode

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sobrecarga e Declaração de OperadoresRafael Fonseca (rjcf@cin.ufpe.br) Romeu Guimarães (rag@cin.ufpe.br) Linguagem OperOR http://operor.googlecode.com

  2. Agenda • Descrição da Linguagem • Funcionalidades • BNF • Limitações e Dificuldades • Desenvolvimento • Exemplos • Dificuldades • Referências

  3. Descrição da Linguagem • A linguagem OperOR é uma linguagem funcional baseada na linguagem Funcional 2. • Tem como objetivo principal permitir a criação de operadores N-ários, pré-fixos e infixos.

  4. Descrição da Linguagem – Funcionalidades • Declaração de novos operadores; • Sobrecarga de operadores existentes; • Aplicação parcial de operadores; * • Operadores de alta ordem. * * Funcionalidades adicionadas

  5. Aplicação Parcial - Compilação Ambiente de compilação _ + _ :Programa OK! _ + _ Se existe no ambiente, então tudo bem!

  6. Aplicação Parcial – Execução Ambiente de execução Operador Genérico _ + _ :Programa ? + ? INT + INT INT + BOL STR + STR Verifica qual a definição mais recente para determinados tipos que serão usados como parâmetro do operador.

  7. Descrição da Linguagem – BNF Programa  ::= ExpressaoExpressao ::=   Valor                | ExpUnaria                | ExpBinaria                | ExpDeclaracao                | Id                | Aplicacao                | IfThenElseValor ::= ValorConcreto | ValorAbstratoValorAbstrato::= ValorFuncaoValorConcreto ::= ValorInteiro | ValorBooleano | ValorStringTipo ::= TipoInteiro | TipoString | TipoBooleano | TipoFuncaoValorFuncao ::= "fn" ListaId "." ExpressaoExpUnaria ::= IdOperadorExpressao | ExpressaoExpBinaria ::=   ExpUnaria( IdOperadorExpUnaria | “(” ListExp “)” )*ExpDeclaracao ::= "let" DeclaracaoFuncional "in" Expressao

  8. Descrição da Linguagem – BNF DeclaracaoFuncional ::= DecVariavel                        | DecFuncao                        | DecOperador                        | DeclaracaoFuncional "," DeclaracaoFuncionalDecVariavel ::= "var" Id "=" ExpressaoDecFuncao ::= "fun" ListId "=" ExpressaoDecOperador ::= "op" ListIdOperador "on" ListId "=" ExpressaoListIdOperador ::= ( IdOperador "_:" Tipo [ IdOperador ]                        | "_:" Tipo IdOperador [ "_:" Tipo ] )+ListId ::= Id |  Id, ListIdAplicacao ::= Expressao "(" ListExp ")"ListExp ::= Expressao  |  Expressao "," ListExp

  9. Limitações e Dificuldades • Não é permitida a declaração de operadores recursivos; • Não é permitido o uso de operadores pós-fixos; • Na declaração de um operador não é possível a declaração de um operando sem tipo. Logo, não é possível declarar um operador identidade genérico.

  10. Limitações e Dificuldades • Para diferenciar a aplicação de um dado operador de outro é necessário o uso de parênteses. • Exemplos:

  11. Limitações e Dificuldades • Reconhecimento da aplicação de operadores. • Dificuldade na retirada da recursão de operadores.

  12. Exemplos

  13. Referências • http://www-cse.ucsd.edu/~goguen/sys/obj.html The OBJ Language Family • http://www.ldl.jaist.ac.jp/cafeobj/

  14. Sobrecarga e Declaração de OperadoresRafael Fonseca (rjcf@cin.ufpe.br) Romeu Guimarães (rag@cin.ufpe.br) Linguagem OperOR http://operor.googlecode.com

More Related