Title: Paradigmas de Linguagens de Programa
1Paradigmas de Linguagens de ProgramaçãoBNF e
Interpretador daLinguagem Imperativa 2
- Augusto Sampaio e Paulo Borba
- Centro de Informática
- Universidade Federal de Pernambuco
2Visã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
3BNF
- http//www.cin.ufpe.br/in1007/linguagens/Imperati
va2/imperativa2.html - Novo comando ChamadaProcedimento
- Nova declaração DecProcedimento
4Programa Exemplo 1
var a 0 , proc incA () a
a 1 call incA() call incA()
write(a)
2
5Programa 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
6Programa 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
7Ambiente 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)
8Ambiente do Interpretador
O ambiente pode ser modificado por atribuições e
por declarações de variáveis!
9Projeto e Implementação do Interpretador
- http//www.cin.ufpe.br/in1007/linguagens/Imperati
va2/imperativa2.html - A execução de comandos retorna um contexto
derivado do que é recebido como argumento - Modelo de projeto
- Partes do código
10Caracterí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
11Exercí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