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

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

Projeto de PLP Resultado Final Guilherme Oliveira Everton Marques

Apresentações semelhantes


Apresentação em tema: "Projeto de PLP Resultado Final Guilherme Oliveira Everton Marques"— Transcrição da apresentação:

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

2 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

3 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)

4 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

5 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

6 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];

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

8 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.

9 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.

10 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]]

11 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

12 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

13 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

14 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

15 Demonstração


Carregar ppt "Projeto de PLP Resultado Final Guilherme Oliveira Everton Marques"

Apresentações semelhantes


Anúncios Google