Augusto Sampaio e Paulo Borba Centro de Informática

Slides:



Advertisements
Apresentações semelhantes
gerador de código intermediário
Advertisements

V – Geração de código Chamada de funções Organização de memória Passagem de parâmetros Representação de código intermédio Bibliografia aconselhada: –Aho,
Parte I Capítulo 5 Reutilizando código e escrevendo funções.
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Universidade Federal do Pará Serviço Público Federal Centro de Ciências Exatas e Naturais Departamento de Informática Abril/2001.
Prof. Heloise Manica Paris Teixeira
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Universidade Federal do Espírito Santo
Curso de Programação em C++
PROGRAMAÇÃO ou LINGUAGEM C?
Centro Integrado de Tecnologia da Informação
Revisão da Linguagem C.
APRESENTAÇÃO: DAVID ANDERSON CARDOSO DANTAS CURSO DE C AULA 04: Funções Maceió, Maio de 2010.
Implementar Listas em Linguagem Funcional II
Introdução a Computação e Cálculo Numérico
Departamento de Estatística e Informática
Análise léxica e sintática
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
Definição de tipos - LF3Definição de tipos - LF3 PLP - Apresentação 1.
DEFINIÇÃO DE TIPOS – LF3 PLP – Apresentação 2. Equipe Felype Santiago Maria Carolina Paola Rodrigues Rodrigo Cardoso.
Compiladores, Aula Nº 9 João M. P. Cardoso
Professor: Juliano Lucas Gonçalves
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Teoria e Implementação de Linguagens Computacionais – IF688
Estudo dos Conceitos e Paradigmas de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática.
Análises léxica e sintática
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Paradigma Funcional Apresentação de LF1.
Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal.
Linguagem de Expressões 2
Centro de Informática – UFPE
Augusto Sampaio e Paulo Borba Centro de Informática
Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz
Introdução à linguagem C
23/08/2004 Centro de Informática - UFPE Projeto 2 de PLP Equipe: Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas) Linguagem Imperativa 2 com.
Geração de Código Intermediário
Técnicas de Desenvolvimento de Programas
Orientação a Objetos e Java Graduação em Ciência da Computação
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Analise sintática aula-07-analise-sintática.pdf.
Paradigma funcional.
1 Linguagem Imperativa 2 com Design by Contract Alunos: Bruno Moreno José Elias Queiroga Yuri Malheiros Samara Martins Prof.: Augusto Sampaio.
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Análises léxica e sintática
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
PROGRAMAÇÃO ou LINGUAGEM C?
Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Algoritmos e estrutura de dados Prof. Luiz Gonzaga da Silveira Jr
Aula prática 3 Aprofundando em Funções Parâmetros de uma função Uso do return Execução Variáveis Global, local e estática Monitoria de Introdução à.
Linguagem Orientada a Agentes Allan Lima, Bruno Edson, Nancy Lyra.
AST no ANTLR Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza
Aula Prática 3 Funções Monitoria Introdução à Programação.
Semântica de Linguagens de Programação
1 Diego Machado Dias Rodrigo Cézar Luna dos Santos Weslley Silva Torres.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Comandos Não-Determinísticos e Atribuição Simultânea PLP – Projeto 2 Julho/2003 Prof. Augusto Sampaio Cibele da Rosa Christ [crc2] Gleifer Vaz Alves [gva]
Introdução à Programação
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino
Projeto II - PLP Prof. Augusto Sampaio
Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Transcrição da apresentação:

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: 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 proc incA () { a := a + 1 }; call incA(); write(a) { var a = 0 , proc incA () { a := a + 1 }; call incA(); write(a) } = 2

Programa Exemplo 2 = Ola Ola Ola { 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}; 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;