1 / 18

Semântica de Java

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

etana
Download Presentation

Semântica de Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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”

  5. 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

  6. 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

  7. 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)

  8. 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

  9. 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

  10. JavasSintaxe • Definição da sintaxe • Subconjunto de Java • página 6 • Relação de subclasse derivada do programa: página 6

  11. 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

  12. 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

  13. Javase • Incorpora informações de tempo de compilação • Sintaxe: página 16 • Tradução de Javas para Javase

  14. 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

  15. 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

  16. Javar • Incorpora termos que surgem em tempo de execução • Endereços • Null • Comandos como expressões • Sintaxe: página 25

  17. JavarTipos • Necessários apenas para prova da consistência do sistema de tipo

  18. Semântica Operacional • Estrutura geral: página 26 • Definições: páginas 28-32

More Related