Uma linguagem de
programação para o ambiente
Virtuosi
Aron Borges
[email protected]
ORIENTADOR:
Alcides Calsavara
[email protected]
Introdução

Monitoria




Virtuosi

Proximidade da Sintaxe

Aron Borges
Programação Imperativa;
Ensino;
Rigor do paradigma O.O;
Java e não Eiffel.
Implementação do Compilador e Semântica
Formal
2
Exemplo

Código escrito em C++:
int x = 3;
int y = 11;
if(x > y) {
...
}

Código escrito em Aram:
Inteiro x = Inteiro.make(3);
Inteiro y = Inteiro.make(11);
if(x.maior(y)) {
...
}
Aron Borges
Implementação do Compilador e Semântica
Formal
3
Os qualificadores associação
e composição

Exemplo de Associação:
class Person {
association Vehicle car;
}

Exemplo de Composição:
class Person {
composition String name;
}
Aron Borges
Implementação do Compilador e Semântica
Formal
4
Qualificadores das Operações e
Lista de Exportação
class Boolean {
constructor make() exports { all } {
...
}
method void flip() exports { none } {
...
}
action equals(Boolean b) exports { A, B } {
...
}
}
Aron Borges
Implementação do Compilador e Semântica
Formal
5
Ações

Uma ação é um tipo especial de operação que
define um desvio condicional de uma sentença;

Ela é o único tipo de operação que pode ser
chamada em uma avaliação de expressão.
Aron Borges
Implementação do Compilador e Semântica
Formal
6
Exemplo de Ação
class Boolean {
...
action default() exports { all } {
...
execute;
}
action equals(Boolean b) exports { all } {
...
skip;
}
}
...
Boolean a = Boolean.make(true);
Boolean b = Boolean.make(false);
if(a) { ... }
if(a.equals(b)) { ... }
...
Aron Borges
Implementação do Compilador e Semântica
Formal
7
Classes da biblioteca padrão

Boolean;
Integer;
Character;
String;

DataBlock



Aron Borges
Implementação do Compilador e Semântica
Formal
8
DataBlock

Chamadas de Sistema:
…
datablock dados;
datablock copia;
System.createDataBlock(dados, 32);
System.createDataBlock(copia, 32);
System.storeInteger(dados, 1);
System.cloneDataBlock(copia, dados);
…

Abstração da linguagem, encapsulando as chamadas de
sistema:
…
datablock dados = datablock.make(32);
datablock copia = datablock.make(32);
dados.storeInteger(1);
copia = dados.clone();
…
Aron Borges
Implementação do Compilador e Semântica
Formal
9
Componentes e Pacotes do Compilador
Aron Borges
Implementação do Compilador e Semântica
Formal
10
Exemplo de código fonte
class Pessoa {
}
class Veiculo {
composition Integer posicao;
association Pessoa motorista;
constructor instanciar(Pessoa p)
exports { all } {
motorista = p;
posicao = Integer.make(0);
}
}
Aron Borges
Implementação do Compilador e Semântica
Formal
11
Analise Léxica e Sintática
Aron Borges
Implementação do Compilador e Semântica
Formal
12
Árvore Gramatical Resultante
(Saída do ANTLR)
( CLASS [Pessoa,<an identifier>] CLASS_ELEMENTS )
( CLASS [Veiculo,<an identifier>] ( CLASS_ELEMENTS
( VARIABLE ( RELATIONSHIP COMPOSITION ) ( TYPE [Integer,<an identifier>] )
[posicao,<an identifier>] )
( VARIABLE ( RELATIONSHIP ASSOCIATION ) ( TYPE [Pessoa,<an identifier>] )
[motorista,<an identifier>] )
( CONSTRUCTOR ( FEATURE [instanciar,<an identifier>]
( FORMAL_PARAMETERS ( FORMAL_PARAMETER ( TYPE [Pessoa,<an
identifier>] ) [p,<an identifier>] ) )
( EXPORTS ( EXPORT_LIST EXPORT_ALL ) )
( [{,<STATEMENT_LIST>]
[motorista,<an identifier>] ( [=,<PREROGATIVE>] [p,<an identifier>] )
[posicao,<an identifier>] ( [=,<PREROGATIVE>]
( [(,<INVOCATION_CALL>] [Integer,<an identifier>] [make,<an identifier>]
( ACTUAL_LIST ( ACTUAL_PARAMETER [0,<CARDINAL_LITERAL>] ) ) ) )
)))
Aron Borges
Implementação do Compilador e Semântica
Formal
13
Geração do Código Intermediário
Aron Borges
Implementação do Compilador e Semântica
Formal
14
Código Intermediário Resultante
Aron Borges
Implementação do Compilador e Semântica
Formal
15
Validação do Código
Aron Borges
Implementação do Compilador e Semântica
Formal
16
Geração de Código Objeto
Aron Borges
Implementação do Compilador e Semântica
Formal
17
Código Objeto Resultante
Aron Borges
Implementação do Compilador e Semântica
Formal
18
Download

ppt - PUCPR