Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouNicolas Brasil Alterado mais de 10 anos atrás
1
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 _ + _ Programa _ + _ OK! Ambiente de compilação Se existe no ambiente, então tudo bem!
6
Aplicação Parcial – Execução ? + ? Programa _ + _ Ambiente de execução INT + INT INT + BOL STR + STR Operador Genérico 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 ::= Expressao Expressao ::= Valor | ExpUnaria | ExpBinaria | ExpDeclaracao | Id | Aplicacao | IfThenElse Valor ::= ValorConcreto | ValorAbstrato ValorAbstrato::= ValorFuncao ValorConcreto ::= ValorInteiro | ValorBooleano | ValorString Tipo ::= TipoInteiro | TipoString | TipoBooleano | TipoFuncao ValorFuncao ::= "fn" ListaId "." Expressao ExpUnaria ::= IdOperador Expressao | Expressao ExpBinaria ::= ExpUnaria ( IdOperador ExpUnaria | ( ListExp ) )* ExpDeclaracao ::= "let" DeclaracaoFuncional "in" Expressao
8
Descrição da Linguagem – BNF DeclaracaoFuncional ::= 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
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
Para diferenciar a aplicação de um dado operador de outro é necessário o uso de parênteses. Exemplos: 1 + 1 + 1Reconhecido como uma aplicação do operador ternário _:int + _:int + _:int (1 + 1) + 1Reconhecido como duas aplicações do operador binário _:int + _:int Limitações e Dificuldades
11
Reconhecimento da aplicação de operadores. Dificuldade na retirada da recursão de operadores. Limitações e Dificuldades
12
Exemplos
13
Referências http://www-cse.ucsd.edu/~goguen/sys/obj.html The OBJ Language Family http://www-cse.ucsd.edu/~goguen/sys/obj.html http://www.ldl.jaist.ac.jp/cafeobj/
14
Linguagem OperOR http://operor.googlecode.com
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.