Upload
internet
View
105
Download
1
Embed Size (px)
Citation preview
Linguagem OperORhttp://operor.googlecode.com
AgendaDescrição da Linguagem
FuncionalidadesBNFLimitações e Dificuldades
DesenvolvimentoExemplosDificuldadesReferências
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.
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
Aplicação Parcial - Compilação
_ + _
Programa_ + _
OK!
Ambiente de
compilação
Se existe no ambiente, então tudo bem!
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.
Descrição da Linguagem – BNF
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
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.
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
Reconhecimento da aplicação de operadores.
Dificuldade na retirada da recursão de operadores.
Limitações e Dificuldades
Exemplos
Referênciashttp://www-cse.ucsd.edu/~goguen/sys/obj.ht
ml The OBJ Language Family
http://www.ldl.jaist.ac.jp/cafeobj/
Linguagem OperORhttp://operor.googlecode.com