1 / 11

Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Imperativa 2

Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Imperativa 2. Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de Pernambuco. Visão Geral. Estende a linguagem imperativa 1 com declarações e chamadas de procedimentos:

monet
Download Presentation

Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Imperativa 2

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. Paradigmas de Linguagens de ProgramaçãoBNF e Interpretador daLinguagem Imperativa 2 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de Pernambuco

  2. Visão Geral • Estende a linguagem imperativa 1 com declarações e chamadas de procedimentos: • procedimentos podem ser recursivos e parametrizados • procedimentos não são valores • procedimentos podem ser declarados em qualquer parte do programa • Um programa é um comando

  3. BNF • http://www.cin.ufpe.br/~in1007/linguagens/Imperativa2/imperativa2.html • Novo comando: ChamadaProcedimento • Nova declaração: DecProcedimento

  4. Programa Exemplo 1 { var a = 0 , proc incA () { a := a + 1 }; call incA(); call incA(); write(a) } = 2

  5. Programa Exemplo 2 { var b = 3, proc escreveRecursivo (int a) { if (not (a == 0)) then { var x = 0; x := a - 1; write("Ola"); call escreveRecursivo(x) } else skip }; call escreveRecursivo(b) } = Ola Ola Ola

  6. Programa Exemplo 3 { var x = 0, proc p (int y) {x := x + y}; { var x = 1; call p(3); write(x) }; call p(4); write(x) } = 4 4

  7. Ambiente do Interpretador • O ambiente inclui quatro componentes: • uma pilha de mapeamentos de identificadores em valores (memória principal) • duas listas de valores (entrada e saída) • uma pilha de mapeamentos de identificadores em procedimentos (declarações)

  8. Ambiente do Interpretador O ambiente pode ser modificado por atribuições e por declarações de variáveis!

  9. Projeto e Implementação do Interpretador • http://www.cin.ufpe.br/~in1007/linguagens/Imperativa2/imperativa2.html • A execução de comandos retorna um contexto derivado do que é recebido como argumento • Modelo de projeto • Partes do código

  10. Características do Interpretador • Escopo dinâmico para variáveis e procedimentos • Passagem de parâmetros por valor • Avaliação de argumentos da esquerda para à direita

  11. Exercícios • Estenda a Linguagem Imperativa 2 com os seguintes recursos: • procedimentos com parâmetros opcionais proc Id(ListaIdValor) = Comando • procedimentos que retornam valores proc Id(ListaId) return Id = Comando call Id(ListaExpressao) return Id;

More Related