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

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

Técnicas de IO em LF1/LF2 Diego Martins, Laís Xavier, Paulo Martinelli e Turah Xavier.

Apresentações semelhantes


Apresentação em tema: "Técnicas de IO em LF1/LF2 Diego Martins, Laís Xavier, Paulo Martinelli e Turah Xavier."— Transcrição da apresentação:

1 Técnicas de IO em LF1/LF2 Diego Martins, Laís Xavier, Paulo Martinelli e Turah Xavier

2 Roteiro Escopo Objetivos da 1ª parte Alterações na BNF Alterações nas classes Funcionando! Referências

3 Escopo Inserção de componentes e tipos básicos para suporte de Monads nas linguagens funcionais LF1 e LF2. Dar suporte a funções de entrada e saída como: getChar, putChar, getString. Dar suporte a funções de entrada e saída para manipulações de arquivos.

4 Objetivos na 1ª parte Inserção da definição de tipos nas declarações das funções. Inserção de um tipo IO, que encapsula outros tipos primitivos como int, string, boolean (Monads) Criação de um "prelude" similar ao de haskell para que o parser reconheça as chamadas de funções padrão tais como: getChar, getInt, getBoolean, getString. *em LF1

5 Alterações na BNF (1/3) ExpUnaria ::= ExpMenos | ExpNot | ExpLength | ExpDeclaracao | ExpCondicional | Aplicacao | ExpPrimaria | ExpAcaoPatternBound

6 Alterações na BNF (2/3) ExpAcaoPatternBound ::= "do" ListaPatternBound "\n" Expressao ListaPatternBound ::= ExpPatternBound | ExpPatternBound "," ListaPatternBound ExpPatternBound ::= Id "<-" Expressao DeclFuncao ::= "fun" Id ":" ListaTiposParam "\n" Id ListaId "=" Expressao ListaTiposParam ::= EspecTipoComposto | EspecTipoComposto " " ListaTiposParam

7 EspecTipoComposto ::= EspecTipoPrimitivo | EspecTipoIO EspecTipoPrimitivo ::= "int" | "boolean" | “string“ EspecTipoIO ::= "IO" EspecTipoPrimitivo | "IO" "(" ")" Alterações na BNF (3/3)

8 Declaração de Função Antes: DecFuncao ::= "fun" ListId "=" Expressao Ex: fun soma x y = x + y Depois: DeclFuncao ::= "fun" Id ":" ListaTiposParam "\n" Id ListaId "=" Expressao Ex: fun soma : int int int soma x y = x + y

9 Alterações nas classes - BNF Classes modificadas –Tipo Introdução do tipo IO na enumeração –DecFuncao Introdução do objeto EspecTipoFuncao Modificação da função checaTipo (aridade e tipos de parâmetros) Modificação da função getTipo (retirando checagem automática de tipos) –Aplicacao Modificação da função checkArgumentTypes (utilizada pelo checaTipo)

10 Alterações nas classes - BNF Classes criadas –EspecTipoBooleano –EspecTipoComposto –EspecTipoFuncao –EspecTipoInteiro –EspecTipoIO –EspecTipoPrimitivo –EspecTipoString –EspecTipoVoid –ExpPatternBound –ExpAcaoPatternBound ExpAcaoPatternBound ::= "do" ListaPatternBound "\n" Expressao ListaPatternBound ::= ExpPatternBound | ExpPatternBound "," ListaPatternBound –ValorIO

11 Alterações nas classes – “Prelude” As classes ContextoCompilacao e AmbienteExecucaoFuncional foram alteradas para que as funções de getN sejam reconhecidas em tempo de compilação e execução.

12 Funcionando!

13 Referências http://www.haskell.org/tutorial/io.html http://en.wikipedia.org/wiki/Monads_in_functiona l_programminghttp://en.wikipedia.org/wiki/Monads_in_functiona l_programming http://citeseer.ist.psu.edu/peytonjones93imperati ve.htmlhttp://citeseer.ist.psu.edu/peytonjones93imperati ve.html http://myweb.lsbu.ac.uk/~abdallae/units/fp/iomon ads.pdfhttp://myweb.lsbu.ac.uk/~abdallae/units/fp/iomon ads.pdf http://www.cs.nott.ac.uk/~wss/Teaching/FunIO.p dfhttp://www.cs.nott.ac.uk/~wss/Teaching/FunIO.p df


Carregar ppt "Técnicas de IO em LF1/LF2 Diego Martins, Laís Xavier, Paulo Martinelli e Turah Xavier."

Apresentações semelhantes


Anúncios Google