Projeto de PLP Resultado Final Guilherme Oliveira Everton Marques

Slides:



Advertisements
Apresentações semelhantes
Programação Funcional
Advertisements

Introdução à Programação: uma Abordagem Funcional Programação I Eng. de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi 2010/1.
Tipos Explícitos e Tipos Polimórficos para LF1
Python: Listas Claudio Esperança.
Introdução a Algoritmos
Complexidade de Algoritmos
Álgebra Relacional Marcelo Mendes Manaus
I - Noções dum compilador
Seminários de Compiladores
Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II
Animador para a Linguagem Funcional 2 Carlos Eduardo Lima Lucas Roberto Bechert Schmitz Leonardo Lucena.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Construção de Compiladores
Sobrecarga e Declaração de Operadores Rafael Fonseca e Romeu Guimarães.
Linguagem OperOR Agenda Descrição da Linguagem Funcionalidades BNF Limitações e Dificuldades Desenvolvimento Exemplos Dificuldades.
DESENVOLVIMENTO DE COMÉRCIO ELETRÔNICO
INF 1771 – Inteligência Artificial
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Aula Prática - Prolog Sistemas Inteligentes /~if684
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
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 - Prolog Sistemas Inteligentes /~if684
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
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.
Representação de Algoritmos
O Fluxo de Implementação
Gramáticas Livres de Contexto
Branch & Merge Claudio Leite.
Resenha do Artigo Implementing lazy functional languages on stock hardware: the Spineless Tagless G-Machine (Parte I) (Simon L. Peyton Jones} Monique L.
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
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.
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
Linguagem de Programação JAVA
1 PLP – Varargs Adauto Trigueiro de A. Filho Emanoel Barreiros Helaine Lins.
DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.
Estrutura de decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições.
Paradigma funcional.
Sistemas Operacionais II O Shell Bash. Objetivos Conhecer a sintaxe dos comandos; Trabalhar com funções; Trabalhar com variáveis; Expressões aritméticas;
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Sistema de Transformação para a linguagem OO1 Adeline Sousa Gustavo Santos.
Análise Sintática Prof. Alexandre Monteiro
Tradução Dirigida por Sintaxe
Algoritmos e Estrutura de Dados I
Estado Final Único para NFAs e DFAs
AST no ANTLR Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza
Base de Conhecimento em Teste de Software Gestão de Defeitos
Linguagens Formais - aula 02
Linguagem de Transformação para a linguagem OO1 Adeline Sousa Gustavo Santos.
PLP – Paradigma de Linguagens de Programação
Estudo de Caso: Raiz Quadrada Programming from Specifications Carroll Morgan Prentice-Hall, 1994 [Capítulo 7] Equipe: Alysson Barros Cleber Ribeiro.
Linguagem Funcional 2 Equipe: Gustavo Cabral Leonardo Maici Professor: Augusto
Projeto II - PLP Prof. Augusto Sampaio
Lógicas Combinatoriais e Implementações Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.
Padrão Visitor Paulo Mauricio Gonçalves Jr Rodrigo Teixeira Ramos Paradigmas de Linguagens de Programação Prof. Augusto Sampaio Julho de 2003.
Laço ou loop e repetição
Implementar Listas em Linguagem Funcional II Projeto I - PLP Prof. Augusto Sampaio Equipe :Ana Paula Cavalcanti (apcc2) Clélio Feitosa (cfs) Zildomar C.
Rede de Laboratórios de Produtividade de Software.
Raniere ferreira do prado
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Conteúdo de Laços de Repetição para os alunos do 7º ano EVL.
Linguagem Funcional 2.
Programação Funcional
Transcrição da apresentação:

Projeto de PLP Resultado Final Guilherme Oliveira Everton Marques Ricardo Cavalcanti Resultado Final

Objetivos Corrigir algumas falhas remanescentes da Linguagem Funcional 2 Listas Cons: e : L Concatenação: L1^^L2 Operações: head(L) e tail(L) Compreensão de Lista [exp | qualificador,...,qualificador], exp é uma expressão qualificador é uma condição ou um gerador da forma x  lista

Resultados Anteriores Bugs conhecidos das linguagens LF1 e LF2 foram corrigidos e alguns trechos de código foram reescritos para melhorar a compreenção. Listas (Criação da LF3) Cons: e : L Concatenação: L1^^L2 Operações: head(L) e tail(L)

Resultados da 2ª iteração Corrigindo bug do seguinte tipo: let var suc = fn x . x+1, var pred = fn x . x-1,var id = fn x . x in suc(pred(2)) == id(2) Correção feita no parser

Resultados da 2ª iteração Inclusão das expressões binárias maiorQue(>),menorQue(<), multi (*). O checaTipo delas exige que as duas expressões sejam inteiras quando avaliadas. Criadas para ajudar na utilização de compreensão de lista

Resultados da 2ª iteração Inclusão de “..” como um operador binário que recebe duas Expressões e retorna uma lista. O checaTipo dele exige que as duas expressões sejam inteiras quando avaliadas. Exemplo: 1..5 vai resultar [1,2,3,4,5];

Resultados da 2ª iteração Compreensão de Lista [exp g, ..., g f], exp é uma expressão g é um gerador da forma x  lista f é um filtro Nova Expressão CompreensaoLista que é criada a partir de uma Expressão, uma lista de geradores e um filtro (expressão booleana). Um gerador é composto de um id e uma lista.

Resultados da 2ª iteração Durante a execução o id utilizado no gerador vai virar uma variável no ambiente.  As variáveis dos geradores podem ser utilizadas na expressão inicial,  e no filtro. A expressão inicial serve pra gerar a lista em si, o gerador diz de onde cada variável vem, e o filtro diz se a variável deve ser inclusa.

Resultados da 2ª iteração O checaTipo da CompreensaoLista verifica se o tipo interno da lista utilizada no gerador é igual ao tipo do id usado no gerador, baseado na expressão utilizada na lista.Verifica se a expressão é bem formada, e se o filtro é booleano. Pra avaliar a compreensão da lista, as possíveis combinações (múltiplos geradores) é gerada RECURSIVAMENTE, incrementando o ambiente e inserindo as constantes no ambiente.

Resultados da 2ª iteração Exemplo: [ [x,y] for x in [1,2,3] for y in [4,5,6] ] Resultado: [[1,4],[1,5],[1,6],[2,4],[2,5],[2,6],[3,4],[3,5],[3,6]]

BNF da LF3 Programa ::= Expressao Expressao ::= Valor | ExpUnaria | ExpBinaria | ExpDeclaracao | Id | Aplicacao | IfThenElse Valor ::= ValorConcreto | ValorAbstrato ValorAbstrato ::= ValorFuncao ValorConcreto ::= ValorInteiro | ValorBooleano | ValorString ValorFuncao ::= "fn" Id Id "." Expressao

BNF da LF3 ExpUnaria ::= "-" Expressao | "not" Expressao | "length" Expressao | "head(" Expressao ")" | "tail(" Expressao ")" | ExpCompreensaoLista ExpCompreensaoLista ::= Expressao Gerador | Expressao Gerador Filtro Gerador ::= “for” Id “in” Expressao | “for” Id “in” Expressao “,” Gerador Filtro ::= “if” Expressao

BNF da LF3 ExpBinaria ::= Expressao "+" Expressao | Expressao "-" Expressao | Expressao "*" Expressao | Expressao "and" Expressao | Expressao "or" Expressao | Expressao ">" Expressao | Expressao ">" Expressao | Expressao "==" Expressao | Expressao "++" Expressao | Expressao ":" Expressao | Expressao "^^" Expressao | Expressao ".." Expressao ExpDeclaracao ::= "let" DeclaracaoFuncional "in" Expressao

BNF da LF3 DeclaracaoFuncional ::= DecVariavel | DecFuncao | DeclaracaoFuncional "," DeclaracaoFuncional DecVariavel ::= "var" Id "=" Expressao DecFuncao ::= "fun" ListId "=" Expressao ListId ::= Id | Id, ListId Aplicacao:= Expressao"(" ListExp ")" ListExp ::= Expressao | Expressao, ListExp

Demonstração