1 / 13

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

Técnicas de IO em LF1/LF2 Diego Martins, Laís Xavier, Paulo Martinelli e Turah Xavier. Roteiro. Escopo Objetivos da 1ª parte Alterações na BNF Alterações nas classes Funcionando! Referências. Escopo.

brandi
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Técnicas de IO em LF1/LF2Diego 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. Alterações na BNF (3/3) EspecTipoComposto ::= EspecTipoPrimitivo | EspecTipoIO EspecTipoPrimitivo ::= "int" | "boolean" | “string“ EspecTipoIO ::= "IO" EspecTipoPrimitivo | "IO" "(" ")"

  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_functional_programming • http://citeseer.ist.psu.edu/peytonjones93imperative.html • http://myweb.lsbu.ac.uk/~abdallae/units/fp/iomonads.pdf • http://www.cs.nott.ac.uk/~wss/Teaching/FunIO.pdf

More Related