14
Linguagem OperOR http://operor.googlecode.com

Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Embed Size (px)

Citation preview

Page 1: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Linguagem OperORhttp://operor.googlecode.com

Page 2: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

AgendaDescrição da Linguagem

FuncionalidadesBNFLimitações e Dificuldades

DesenvolvimentoExemplosDificuldadesReferências

Page 3: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

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.

Page 4: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

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

Page 5: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Aplicação Parcial - Compilação

_ + _

Programa_ + _

OK!

Ambiente de

compilação

Se existe no ambiente, então tudo bem!

Page 6: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Aplicação Parcial – Execução

? + ?

Programa _ + _

Ambiente de

execução

INT + INT

INT + BOL

STR + STR

OperadorGenérico

Verifica qual a definição mais recente para determinados tipos que serão usados como parâmetro do operador.

Page 7: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Descrição da Linguagem – BNF

Page 8: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Descrição da Linguagem – BNFDeclaracaoFuncional ::= DecVariavel                        | DecFuncao                        | DecOperador                        | DeclaracaoFuncional "," DeclaracaoFuncional

DecVariavel ::= "var" Id "=" Expressao

DecFuncao ::= "fun" ListId "=" Expressao

DecOperador ::= "op" ListIdOperador "on" ListId "=" Expressao

ListIdOperador ::= ( IdOperador "_:" Tipo [ IdOperador ]                        | "_:" Tipo IdOperador [ "_:" Tipo ] )+

ListId ::= Id |  Id, ListId

Aplicacao ::= Expressao "(" ListExp ")"

ListExp ::= Expressao  |  Expressao "," ListExp

Page 9: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

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.

Page 10: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Para diferenciar a aplicação de um dado operador de outro é necessário o uso de parênteses.

Exemplos:1 + 1 + 1 Reconhecido como uma aplicação do operador ternário _:int + _:int + _:int

(1 + 1) + 1 Reconhecido como duas aplicações do operador binário _:int + _:int

Limitações e Dificuldades

Page 11: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Reconhecimento da aplicação de operadores.

Dificuldade na retirada da recursão de operadores.

Limitações e Dificuldades

Page 12: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Exemplos

Page 13: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Referênciashttp://www-cse.ucsd.edu/~goguen/sys/obj.ht

ml The OBJ Language Family

http://www.ldl.jaist.ac.jp/cafeobj/

Page 14: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades

Linguagem OperORhttp://operor.googlecode.com