Linguagem de Expresses 2 Linguagem de Expresses 2

  • Slides: 15
Download presentation
Linguagem de Expressões 2

Linguagem de Expressões 2

Linguagem de Expressões 2 LE 2 n n Estende LE 1 com identificadores (variáveis)

Linguagem de Expressões 2 LE 2 n n Estende LE 1 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 n n 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 LE 2 http: //www. cin. ufpe. br/~in 1007

Apresentação da Linguagem de Expressões 2 LE 2 http: //www. cin. ufpe. br/~in 1007

Explorando conceitos na LE 2

Explorando conceitos na LE 2

Ligação, amarração ou binding n n Em LE 2, surge a necessidade de armazenar

Ligação, amarração ou binding n n Em LE 2, 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 n n Em LE 2, o único tipo de binding

Ligação, amarração ou binding n n Em LE 2, 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 n n As entidades que podem ser associadas a identificadores

Ligação, amarração ou binding n n As entidades que podem ser associadas a identificadores são denominadas ligáveis ou bindable As entidades bindable de Pascal são: • • n n 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 n n n Escopo é a porção do texto do programa na qual

Escopo n n n 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 n A estrutura de blocos aninhados (ou nested) é a mais geral e

Escopo n 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. n LE 2 permite estrutura de blocos

Declarações n n Uma declaração é uma construção do programa a partir da qual

Declarações n n Uma declaração é uma construção do programa a partir da qual bindings são definidos Alguns tipos de declaração: • • n definições declarações colaterais declarações seqüenciais declarações recursivas LE 2 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

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 n Composicionalidade: valor obtido a partir dos valores dos subcomponentes. n Na forma como LE 2 foi implementada, as expressões mais internas são avaliadas primeiro n A forma canônica de uma expressão em LE 2 é o valor resultante da avaliação n Este valor é o significado (semântica) da expressão

Transparência Referencial n n Uma expressão pode ser sempre substituída pelo seu valor (ou

Transparência Referencial n n 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 LE 2 porque as variáveis de LE 2 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 Não podem ser reduzidas; não denotam um valor Exemplo: 1� n

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

Exercício n Modificar o interpretador de LE 2 de forma que as declarações em

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

Leitura n Programming Language Concepts and Paradigms • Capítulo 4 (exceto a Seções 4.

Leitura n Programming Language Concepts and Paradigms • Capítulo 4 (exceto a Seções 4. 3. 3 e 4. 4. 2)