semântica de java
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 PresentationTRANSCRIPT
DI
UFPE
Semântica de Java
Towards na Operational Semantics and Proof of Type Soundness for Java
Sophia Drossopoulou e Susan Eisenbach
Imperial College
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
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
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”
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
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
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)
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
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
DI
UFPE
Javas
Sintaxe
Definição da sintaxe
Subconjunto de Java
página 6
Relação de subclasse derivada do programa: página 6
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
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
DI
UFPE
Javase
Incorpora informações de tempo de compilação
Sintaxe: página 16
Tradução de Javas para Javase
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
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
DI
UFPE
Javar
Incorpora termos que surgem em tempo de execução
Endereços
Null
Comandos como expressões
Sintaxe: página 25
DI
UFPE
Javar
Tipos
Necessários apenas para prova da consistência do
sistema de tipo
DI
UFPE
Semântica Operacional
Estrutura geral: página 26
Definições: páginas 28-32