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

Slides:



Advertisements
Apresentações semelhantes
Tipos Explícitos e Tipos Polimórficos para LF1
Advertisements

C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
gerador de código intermediário
Cleanroom - Software Engineering
Contratos de Operação.
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
2002 LCG/UFRJ. All rights reserved. 1 Tópicos em C++ Claudio Esperança Paulo Roma Cavalcanti.
JavaCC e JJTree Geração de compiladores implementados em Java
Sobrecarga de Operadores
Rafael Pinto Frederico Corrêa
Universidade Federal do Espírito Santo
Análise Léxica Supondo o trecho de programa abaixo:
Sobrecarga e Declaração de Operadores Rafael Fonseca e Romeu Guimarães.
JAVA: Conceitos Iniciais
Implementar Listas em Linguagem Funcional II
Introdução a Computação e Cálculo Numérico
Informática Teórica Engenharia da Computação
Aula prática - análise contextual
Definição de tipos - LF3Definição de tipos - LF3 PLP - Apresentação 1.
DEFINIÇÃO DE TIPOS – LF3 PLP – Apresentação 2. Equipe Felype Santiago Maria Carolina Paola Rodrigues Rodrigo Cardoso.
XML Extended Markup Language
Compiladores, Aula Nº 9 João M. P. Cardoso
Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat
Estudo dos Conceitos e Paradigmas de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Expressões e Instrução de Atribuição
Semântica de Linguagens de Programação
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Paradigma Funcional Apresentação de LF1.
Augusto Sampaio e Paulo Borba Centro de Informática
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
Classes, Objetos, Atributos e Métodos JAVA
Projeto de PLP Resultado Final Guilherme Oliveira Everton Marques
1 PLP – Varargs Adauto Trigueiro de A. Filho Emanoel Barreiros Helaine Lins.
Capítulo II Gramáticas e Linguagens
Haskell :: Funções como valores George Darmiton da Cunha Cavalcanti Monitores: Bruno Barros cin.ufpe.br) Glerter Sabiá (gas2.
Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino
Filas  São utilizadas em aplicações onde são impostos critérios para a inserção e retirada de elementos cuja ordem não depende da ordem natural dos valores.
Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos.
Projeto Arte, Ciência e Tecnologia
Cálculo Lambda (l – Calculus)
Programação Funcional
Lambda Cálculo & Programação Funcional
Linguagem Orientada a Agentes Allan Lima, Bruno Edson, Nancy Lyra.
Teste de Software 14: Geração de teste baseado em modelos: MBT
Metaprogramação Estática André Knabben Pricilla Padaratz.
Construtores e Destrutores
Recursividade Profs. De Prog2 e Lab2.
Linguagem C.
Semântica de Linguagens de Programação
1 Diego Machado Dias Rodrigo Cézar Luna dos Santos Weslley Silva Torres.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)
PLP – Paradigma de Linguagens de Programação
Técnicas de IO em LF1/LF2 Diego Martins, Laís Xavier, Paulo Martinelli e Turah Xavier.
JAVA – Fila ATAI.
Concorrência em LF1 Paradigmas de Linguagens de Programação 20 de junho de 2006 Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim.
Linguagem Funcional 2 Equipe: Gustavo Cabral Leonardo Maici Professor: Augusto
JavaCC.
Sintaxe de uma Linguagem
Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino
Projeto II - PLP Prof. Augusto Sampaio
Padrão Visitor Paulo Mauricio Gonçalves Jr Rodrigo Teixeira Ramos Paradigmas de Linguagens de Programação Prof. Augusto Sampaio Julho de 2003.
1 CIn / UFPE Algoritmos de Parsing Gustavo Carvalho Março 2011.
Implementar Listas em Linguagem Funcional II Projeto I - PLP Prof. Augusto Sampaio Equipe :Ana Paula Cavalcanti (apcc2) Clélio Feitosa (cfs) Zildomar C.
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
1 CIn / UFPE Introdução a Parsing Gustavo Carvalho Abril 2015.
Mobilidade para Linguagem Orientada a Objetos 1
Transcrição da apresentação:

Linguagem OperOR

Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades Referê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 Operador Gené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 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

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

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: 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

Reconhecimento da aplicação de operadores. Dificuldade na retirada da recursão de operadores. Limitações e Dificuldades

Exemplos

Referências The OBJ Language Family

Linguagem OperOR