Upload
monet
View
42
Download
16
Embed Size (px)
DESCRIPTION
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: - PowerPoint PPT Presentation
Citation preview
Paradigmas de Linguagens de Programação
BNF e Interpretador daLinguagem Imperativa 2
Augusto Sampaio e Paulo BorbaCentro de Informática
Universidade Federal de Pernambuco
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
BNF
• http://www.cin.ufpe.br/~in1007/linguagens/Imperativa2/imperativa2.html
• Novo comando: ChamadaProcedimento
• Nova declaração: DecProcedimento
Programa Exemplo 1
{ var a = 0 , proc incA () { a := a + 1 }; call incA(); call incA(); write(a)}
= 2
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
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
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)
Ambiente do Interpretador
O ambiente pode ser modificado por atribuições e por declarações
de variáveis!
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
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
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;