A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Linguagem OperOR Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades."— Transcrição da apresentação:

1 Linguagem OperOR

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: Reconhecido 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 The OBJ Language Family

14 Linguagem OperOR


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

Apresentações semelhantes


Anúncios Google