180 likes | 323 Views
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
E N D
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 • 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
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
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”
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
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
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)
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
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
JavasSintaxe • Definição da sintaxe • Subconjunto de Java • página 6 • Relação de subclasse derivada do programa: página 6
JavasAmbiente • 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
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
Javase • Incorpora informações de tempo de compilação • Sintaxe: página 16 • Tradução de Javas para Javase
JavasTipos 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ção C{( , t)} = t’ • Páginas 18, 20 e 21
JavaseTipos • 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 Javasbem-tipado é bem-tipado também e tem o mesmo tipo
Javar • Incorpora termos que surgem em tempo de execução • Endereços • Null • Comandos como expressões • Sintaxe: página 25
JavarTipos • Necessários apenas para prova da consistência do sistema de tipo
Semântica Operacional • Estrutura geral: página 26 • Definições: páginas 28-32