Linguagem de Expressões 2

Slides:



Advertisements
Apresentações semelhantes
Lógica de Predicados e Representação de Conhecimento
Advertisements

gerador de código intermediário
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Capítulo 9 A semântica da Lógica de Predicados
Algoritmo Exemplo: faça um algoritmo para tocar todas as músicas de um cd. Após o usuário apertar o play Algoritmo Para as músicas de 1 até última música.
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
Introdução a Programação Renata Freire
Prof. Heloise Manica Paris Teixeira
Introdução a Informática
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
YACC.
Análise Sintática Ascendente
Linguagem de Prog. e Programas
Análise Léxica Supondo o trecho de programa abaixo:
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Construção de Compiladores
Introdução ao -calculus
00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Laboratório de Programação de Computadores I
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
Algoritmos e Programação
Tecnologias de Linguagens para Banco de Dados
Aula Prática - Prolog Sistemas Inteligentes /~if684
DEFINIÇÃO DE TIPOS – LF3 PLP – Apresentação 2. Equipe Felype Santiago Maria Carolina Paola Rodrigues Rodrigo Cardoso.
Linguagem de Programação II Parte V
Flávio Melo Gabriel Fornari
UNIVERSIDADE ESTADUAL DE SANTA CRUZ
Gramáticas Livres de Contexto
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Esquemas e suas operações n Forma geral: Ident. Declarações ou Ident. = [Declarações | Predicado] Predicado ^ n Esquemas são estruturas que agrupam variáveis.
Teoria e Implementação de Linguagens Computacionais – IF688
Estudo dos Conceitos e Paradigmas de Programação
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Expressões e Instrução de Atribuição
Semântica de Linguagens de Programação
DI UFPE Semântica de Java Towards na Operational Semantics and Proof of Type Soundness for Java Sophia Drossopoulou e Susan Eisenbach Imperial College.
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.
Augusto Sampaio e Paulo Borba Centro de Informática
Augusto Sampaio e Paulo Borba Centro de Informática
BCC101 Matemática Discreta I
Lógica Estruturada Aplicada
Introdução a Perl Tema 3B Pablo Gamallo Otero
Paradigma funcional.
Algoritmos e Estrutura de Dados I Jean Carlo Mendes
Sistemas Operacionais
Analise Semântica aula-10-analise-semântica.pdf.
1 O  -Cálculo & Linguagens Funcionais Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco - Recife - Brasil.
Algoritmos Estruturados
Cálculo Lambda (l – Calculus)
Aula 1 – Profª Danielle Costa
Lambda Cálculo & Programação Funcional
Faculdade Pernambucana - FAPE Setembro/2007
A Linguagem Formal de Especificação VDM-SL
Semântica de Linguagens de Programação
1 IO em LF1 Paradigmas de Linguagens de Programação 2007 Diego Martins, Laís Xavier, Paulo Martinelli e Turah Xavier.
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Projeto II - PLP Prof. Augusto Sampaio
O Portal do Estudante de Computação
MATA56 Tipos, Verificação de Tipos Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave – nomes.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Análise Contextual Tem o objetivo de verificar se o programa está de acordo com as restrições contextuais da linguagem fonte.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
Derivada E Antiderivada
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Transcrição da apresentação:

Linguagem de Expressões 2

Linguagem de Expressões 2 - LE2 Estende LE1 com identificadores (variáveis) que possuem um valor (constante) Durante a interpretação e verificação de tipos surge a necessidade de contextos: mapeamento entre identificadores e valores mapeamento entre identificadores e tipos Na avaliação de uma expressão, a ocorrência de um identificador é substituída pelo valor associado ao identificador Um programa é uma expressão

Apresentação da Linguagem de Expressões 2 - LE2 http://www.cin.ufpe.br/~in1007

Explorando conceitos na LE2

Ligação, amarração ou binding Em LE2, surge a necessidade de armazenar os valores dos identificadores (variáveis) Em geral um binding é uma associação entre um identificador e uma entidade (constante, variável, função, procedimento, tipo, etc.) Um ambiente (environment) ou contexto é um conjunto de bindings Portanto, um contexto é um mapeamento de identificadores em entidades

Ligação, amarração ou binding Em LE2, o único tipo de binding possível é uma associação entre um identificador e um valor (constante) Uma expressão é interpretada (avaliada) em um dado contexto; todo identificador que aparece na expressão tem que ter um binding no contexto Uma mesma expressão ocorrendo em partes diferentes do programa pode produzir resultados distintos (quando os contextos forem diferentes) Outros tipos de binding vão aparecer à medida que estudarmos as outras linguagens.

Ligação, amarração ou binding As entidades que podem ser associadas a identificadores são denominadas ligáveis ou bindable As entidades bindable de Pascal são: valores primitivos e strings referências a variáveis funções e procedimentos tipos Mas valores do tipo registro ou arrays não são bindable ML é mais uniforme neste aspecto, pois todos os tipos de valores são bindable

Escopo Escopo é a porção do texto do programa na qual uma dada declaração (ou binding resultante) é visível Em uma linguagem monolítica (sem estrutura de bloco), o escopo de uma declaração é todo o programa, como em Cobol. Há a estrutura de blocos linear (ou flat) onde um programa é particionado em blocos (tipicamente procedures ou subrotinas), como em Fortran. Neste caso, variáveis declaradas no programa e os nomes das rotinas possuem escopo global; variáveis declaradas na subrotina possuem escopo local.

Escopo A estrutura de blocos aninhados (ou nested) é a mais geral e permite que um bloco seja introduzido dentro de qualquer outro bloco Neste caso, há vários níveis de escopo Surge o conceito de “buraco” no escopo de um identificador; isto ocorre quando em uma parte do texto do programa o identificador não é visível porque um outro (com mesmo nome) foi introduzido. LE2 permite estrutura de blocos

Declarações Uma declaração é uma construção do programa a partir da qual bindings são definidos Alguns tipos de declaração: definições declarações colaterais declarações seqüenciais declarações recursivas LE2 permite definições (declaração de constantes) e declarações colaterais

Semântica (Operacional) A avaliação (redução, simplificação) de um termo se dá através de sua redução a uma forma normal (ou canônica), através de Reescrita de Termos Composicionalidade: valor obtido a partir dos valores dos subcomponentes. Na forma como LE2 foi implementada, as expressões mais internas são avaliadas primeiro A forma canônica de uma expressão em LE2 é o valor resultante da avaliação Este valor é o significado (semântica) da expressão

Transparência Referencial Uma expressão pode ser sempre substituída pelo seu valor (ou por outra expressão que denote o mesmo valor). Isto é válido em LE2 porque as variáveis de LE2 são como em matemática (não mudam de valor) Ou seja, não há efeito colateral Porém, deve-se lembrar que o resultado da avaliação de uma expressão depende do contexto onde a expressão é avaliada.

Expressões Indefinidas Não podem ser reduzidas; não denotam um valor Exemplo: 1\0 Portanto, formas normais nem sempre existem É comum se introduzir um símbolo especial  (“bottom”) para representar um valor indefinido 1\0 = 

Exercício Modificar o interpretador de LE2 de forma que as declarações em um let sejam seqüenciais ao invés de colaterais.

Leitura Programming Language Concepts and Paradigms Capítulo 4 (exceto a Seções 4.3.3 e 4.4.2)