linguagem operor . agenda descrição da linguagem funcionalidades bnf limitações e dificuldades...
TRANSCRIPT
![Page 1: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/1.jpg)
Linguagem OperORhttp://operor.googlecode.com
![Page 2: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/7.jpg)
Descrição da Linguagem – BNF
![Page 8: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/12.jpg)
Exemplos
![Page 13: Linguagem OperOR . Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062512/552fc117497959413d8c8620/html5/thumbnails/14.jpg)
Linguagem OperORhttp://operor.googlecode.com