semântica de java

18
DI UFPE Semântica de Java Towards na Operational Semantics and Proof of Type Soundness for Java Sophia Drossopoulou e Susan Eisenbach Imperial College

Upload: etana

Post on 07-Jan-2016

36 views

Category:

Documents


1 download

DESCRIPTION

Semântica de Java. Towards na Operational Semantics and Proof of Type Soundness for Java Sophia Drossopoulou e Susan Eisenbach Imperial College. Introdução. Por que uma semântica para Java? Introdução de características novas Combinação de características - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Semântica de Java

DI

UFPE

Semântica de Java

Towards na Operational Semantics and Proof of Type Soundness for Java

Sophia Drossopoulou e Susan Eisenbach

Imperial College

Page 2: Semântica de Java

DI

UFPE

Introdução Por que uma semântica para Java?

Introdução de características novas Combinação de características Semântica de uma linguagem de programação real Qualquer questão pode ser respondida pelo LRM.

No entanto... Algumas regras são mais restritivas do que o

necessário A justificativa para algumas decisões de projeto

não é obvia

Page 3: Semântica de Java

DI

UFPE

Subconjunto Considerado Tipos primitivos Classes e herança Variáveis e métodos de instância Interfaces “Dynamic binding” Criação de objetos Arrays Exceções

Page 4: Semântica de Java

DI

UFPE

Abordagem Programas em Java usam informações de tipo em tempo de

execução Invocação de método: attr.meth Compilação

Três passos Resolução de “overloading”

Execução Cinco passos Resolução de “dynamic binding”

Page 5: Semântica de Java

DI

UFPE

Abordagem Compilação

Primeiro passo Identificação da classe ou interface a ser pesquisada Tipo declarado de attr

Segundo passo: determinação da assinatura de meth Localização dos métodos aplicáveis e acessíveis O mais específico é escolhido

Terceiro passo Verificação da adequabilidade do método Associação de informações colhidas durante a compilação

Page 6: Semântica de Java

DI

UFPE

Abordagem Execução: cinco passos

Primeiro passo Determinação da referência alvo Valor da expressão attr

Segundo passo: avaliação de argumentos Terceiro passo: verificação de que tudo continua

consistente em tempo de ligação Quarto passo

Determinação do método a ser invocado “Dynamic method lookup”

Quinto passo: execução propriamente dita

Page 7: Semântica de Java

DI

UFPE

Um Exemplo class Phil { class FrPhil extends Phil {

Truth like; Food like;

Phil think(Phil y){ ... } Phil think(Phil y){like = oyster; ...}

Book think(FrPhil y) { ...} }

}

Phil aPhil; FrPhil pascal = new FrPhil;

... aPhil.like

... aPhil.think(pascal) ... aPhil.think(aPhil)

... pascal.like

... pascal.think(pascal) ... pascal.think(aPhil)

Page 8: Semântica de Java

DI

UFPE

Abordagem

Definição de três linguagens

Javas : subconjunto de Java

Javase : enriquecimento da linguagem com informação

de tempo de compilação

Javar : linguagem contendo os termos de tempo de

execução

Page 9: Semântica de Java

DI

UFPE

Abordagem Semântica operacional

Relação de transição ternária

Configurações, programas, configurações Configuração

Tuplas de termos-Javar e estados Termos: parte do programa original que ainda precisa ser

executado Estado: mapeamento

Endereços para objetos Variáveis para valores primitivos ou endereços

Page 10: Semântica de Java

DI

UFPE

Javas

Sintaxe

Definição da sintaxe

Subconjunto de Java

página 6

Relação de subclasse derivada do programa: página 6

Page 11: Semântica de Java

DI

UFPE

Javas

Ambiente Definição: página 7

Hierarquias de interface e classe e informações de tipo Relacionados com programas mais a frente

Um ambiente determina várias relações e informações Página 8

Relação de subclasse Relação de subinterface Relação de implementação entre uma classe e uma

interface

Page 12: Semântica de Java

DI

UFPE

Javas

Página 9: tipos de variáveis e de métodos válidos

Página 10: Relação de “widening” (subtipo)

Ambientes e declarações bem-formadas: página 13

Restrições de Java sobre declarações

|- ‘ : ‘ é bem formado sob

Relações de subclasse e subinterface de ‘ são

acíclicas

Declarações de ‘ são bem-formadas

Page 13: Semântica de Java

DI

UFPE

Javase

Incorpora informações de tempo de compilação

Sintaxe: página 16

Tradução de Javas para Javase

Page 14: Semântica de Java

DI

UFPE

Javas

Tipos e Tradução Regras de tipo

Fase de verificação de tipos de um compilador Termos

|- t : T Programas

|- p (formação) |- p (formação e completude)

TraduçãoC{( , t)} = t’

Páginas 18, 20 e 21

Page 15: Semântica de Java

DI

UFPE

Javase

Tipos

Necessários apenas para prova da consistência do sistema de tipos

Quatro casos a considerar: página 23

Um termo Javase resultante de um termo Javas

bem-tipado é bem-tipado também e tem o mesmo tipo

Page 16: Semântica de Java

DI

UFPE

Javar

Incorpora termos que surgem em tempo de execução

Endereços

Null

Comandos como expressões

Sintaxe: página 25

Page 17: Semântica de Java

DI

UFPE

Javar

Tipos

Necessários apenas para prova da consistência do

sistema de tipo

Page 18: Semântica de Java

DI

UFPE

Semântica Operacional

Estrutura geral: página 26

Definições: páginas 28-32