Como construir um compilador utilizando ferramentas Java

Tamanho: px
Começar a partir da página:

Download "Como construir um compilador utilizando ferramentas Java"

Transcrição

1 Como construir um compilador utilizando ferramentas Java p. 1/3 Como construir um compilador utilizando ferramentas Java Aula 11 Tabela de Símbolos Prof. Márcio Delamaro

2 Como construir um compilador utilizando ferramentas Java p. 2/3 Para que serve Guardar informação para cada nome que aparece no programa class firstclass extends secondclass {... } firstclass está sendo declarada como uma classe. firstclass y;

3 Como construir um compilador utilizando ferramentas Java p. 3/3 Para que serve int a, b, c; c = a * b; c = "abc"; firstclass y; c = y.atributo1;

4 Como construir um compilador utilizando ferramentas Java p. 4/3 O que armazenar? classes: nome, qual é a superclasse, quais são as variáveis dessa classe, quais são as classes aninhadas, quais são os métodos e construtores;

5 Como construir um compilador utilizando ferramentas Java p. 4/3 O que armazenar? classes: nome, qual é a superclasse, quais são as variáveis dessa classe, quais são as classes aninhadas, quais são os métodos e construtores; variáveis: nome, tipo, dimensão, se são locais ou não;

6 Como construir um compilador utilizando ferramentas Java p. 4/3 O que armazenar? classes: nome, qual é a superclasse, quais são as variáveis dessa classe, quais são as classes aninhadas, quais são os métodos e construtores; variáveis: nome, tipo, dimensão, se são locais ou não; métodos: nome, parâmetros, variáveis locais, tipo de retorno.

7 Como construir um compilador utilizando ferramentas Java p. 5/3 Como a tabela é usada: Ao declarar classe class firstclass extends secondclass... firstclass já foi declarada?

8 Como construir um compilador utilizando ferramentas Java p. 5/3 Como a tabela é usada: Ao declarar classe class firstclass extends secondclass... firstclass já foi declarada? secondclass é uma classe válida?

9 Como construir um compilador utilizando ferramentas Java p. 5/3 Como a tabela é usada: Ao declarar classe class firstclass extends secondclass... firstclass já foi declarada? secondclass é uma classe válida? secondclass pode ser usada como superclasse?

10 Como construir um compilador utilizando ferramentas Java p. 6/3 Ao declarar variável firstclass y; firstclass é um tipo ou classe válido?

11 Como construir um compilador utilizando ferramentas Java p. 6/3 Ao declarar variável firstclass y; firstclass é um tipo ou classe válido? y pode ser declarada nesse ponto?

12 Como construir um compilador utilizando ferramentas Java p. 7/3 Ao declarar método fisrtclass m(int k, secondclass s) firstclass é um tipo ou classe válido?

13 Como construir um compilador utilizando ferramentas Java p. 7/3 Ao declarar método fisrtclass m(int k, secondclass s) firstclass é um tipo ou classe válido? m pode ser declarado nesse ponto?

14 Como construir um compilador utilizando ferramentas Java p. 7/3 Ao declarar método fisrtclass m(int k, secondclass s) firstclass é um tipo ou classe válido? m pode ser declarado nesse ponto? seus parâmetros são legais?

15 Como construir um compilador utilizando ferramentas Java p. 8/3 Comandos x[i+9] = y.m(10, b) x é um array?

16 Como construir um compilador utilizando ferramentas Java p. 8/3 Comandos x[i+9] = y.m(10, b) x é um array? índice é do tipo correto?

17 Como construir um compilador utilizando ferramentas Java p. 8/3 Comandos x[i+9] = y.m(10, b) x é um array? índice é do tipo correto? classe de y possui o método m?

18 Como construir um compilador utilizando ferramentas Java p. 8/3 Comandos x[i+9] = y.m(10, b) x é um array? índice é do tipo correto? classe de y possui o método m? argumentos combinam com parâmetros formais?

19 Como construir um compilador utilizando ferramentas Java p. 8/3 Comandos x[i+9] = y.m(10, b) x é um array? índice é do tipo correto? classe de y possui o método m? argumentos combinam com parâmetros formais? dois lados da atribuição possuem tipos compatíveis?

20 Como construir um compilador utilizando ferramentas Java p. 9/3 Controle de escopo class classa { class classb { } int i; string m(classa x) { if ( x == null ) { int j; } } } class classc { }

21 Como construir um compilador utilizando ferramentas Java p. 10/3 Controle de escopo A classe classa pode ser utilizada em qualquer ponto dentro de si própria, incluindo em classb e dentro de classc.

22 Como construir um compilador utilizando ferramentas Java p. 10/3 Controle de escopo A classe classa pode ser utilizada em qualquer ponto dentro de si própria, incluindo em classb e dentro de classc. A classe classb não pode ser utilizada dentro de classc.

23 Como construir um compilador utilizando ferramentas Java p. 10/3 Controle de escopo A classe classa pode ser utilizada em qualquer ponto dentro de si própria, incluindo em classb e dentro de classc. A classe classb não pode ser utilizada dentro de classc. A variável i pode ser utilizada dentro de classa (excluindo classb), mas não dentro de classc.

24 Como construir um compilador utilizando ferramentas Java p. 10/3 Controle de escopo A classe classa pode ser utilizada em qualquer ponto dentro de si própria, incluindo em classb e dentro de classc. A classe classb não pode ser utilizada dentro de classc. A variável i pode ser utilizada dentro de classa (excluindo classb), mas não dentro de classc. A variável x é local a m.

25 Como construir um compilador utilizando ferramentas Java p. 10/3 Controle de escopo A classe classa pode ser utilizada em qualquer ponto dentro de si própria, incluindo em classb e dentro de classc. A classe classb não pode ser utilizada dentro de classc. A variável i pode ser utilizada dentro de classa (excluindo classb), mas não dentro de classc. A variável x é local a m. j é local ao comando if.

26 Como construir um compilador utilizando ferramentas Java p. 11/3 A tabela para X ++ class firstclass { } class secondclass { } class thirdclass { } firstclass secondclass thirdclass

27 Como construir um compilador utilizando ferramentas Java p. 12/3 A tabela de símbolose a árvore sintática Assim como no programa que exibe a árvore sintática, temos um programa que analisa a árvore e vai montando a tabela de símbolos. Esse programa, ao analisar o nó número 2, deve inserir na tabela o identificador firstclass, ao analisar o nó 6, deve incluir secondclass e, ao analisar o nó 10, deve inserir thirdclass. (1)ListNode (2)ClassDeclNode (5)ListNode (3)Token: firstclass (4)ClassBodyNode (6)ClassDeclNode (9)ListNode (7)Token: secondclass (8)ClassBodyNode (10)ClassDeclNode (11)Token: thirdclass (12)ClassBodyNode

28 Como construir um compilador utilizando ferramentas Java p. 13/3 O conteúdo de uma classe Cada entrada de Symtable deve descrever uma classe.

29 Como construir um compilador utilizando ferramentas Java p. 13/3 O conteúdo de uma classe Cada entrada de Symtable deve descrever uma classe. Nome da classe, nome da superclasse.

30 Como construir um compilador utilizando ferramentas Java p. 13/3 O conteúdo de uma classe Cada entrada de Symtable deve descrever uma classe. Nome da classe, nome da superclasse. Variáveis, construtores, métodos e classes aninhadas.

31 Como construir um compilador utilizando ferramentas Java p. 13/3 O conteúdo de uma classe Cada entrada de Symtable deve descrever uma classe. Nome da classe, nome da superclasse. Variáveis, construtores, métodos e classes aninhadas. A cada entrada associa-se uma outra Symtable

32 Como construir um compilador utilizando ferramentas Java p. 14/3 Por exemplo class secondclass { class sec2 { class sec3 { } } int secvar1, secvar2[]; firstclass secvar3; thirdclass [][] secmeth1(); }

33 Como construir um compilador utilizando ferramentas Java p. 15/3 Resulta na tabela 0 firstclass Symtable para firstclass sec2 secvar1 sec3 Symtable para sec3 1 2 secondclass thirdclass Symtable secvar2 secvar3 secmeth1 para thirdclass

34 Como construir um compilador utilizando ferramentas Java p. 15/3 Resulta na tabela 0 firstclass Symtable para firstclass sec2 secvar1 sec3 Symtable para sec3 1 2 secondclass thirdclass Symtable secvar2 secvar3 secmeth1 para thirdclass Escopo: variável em sec2 pode usar sec2, sec3, secondclass, firstclass ou thirdclass; não pode usar classe aninhada a firstclass. secondclass não pode utilizar sec3.

35 Como construir um compilador utilizando ferramentas Java p. 16/3 Símbolo locais O comportamento e escopo de classes, métodos, construtores e variáveis de classe são, de certa forma, estáticos.

36 Como construir um compilador utilizando ferramentas Java p. 16/3 Símbolo locais O comportamento e escopo de classes, métodos, construtores e variáveis de classe são, de certa forma, estáticos. As variáveis locais dos métodos têm comportamento volátil.

37 Como construir um compilador utilizando ferramentas Java p. 16/3 Símbolo locais O comportamento e escopo de classes, métodos, construtores e variáveis de classe são, de certa forma, estáticos. As variáveis locais dos métodos têm comportamento volátil. Só podem ser usadas dentro do método em que foram definidas ou, ainda, dentro do bloco onde foram definidas.

38 Como construir um compilador utilizando ferramentas Java p. 16/3 Símbolo locais O comportamento e escopo de classes, métodos, construtores e variáveis de classe são, de certa forma, estáticos. As variáveis locais dos métodos têm comportamento volátil. Só podem ser usadas dentro do método em que foram definidas ou, ainda, dentro do bloco onde foram definidas. Ao iniciar a análise de um método ou um bloco, o analisador deve marcar quais as variáveis que foram definidas até aquele ponto.

39 Como construir um compilador utilizando ferramentas Java p. 16/3 Símbolo locais O comportamento e escopo de classes, métodos, construtores e variáveis de classe são, de certa forma, estáticos. As variáveis locais dos métodos têm comportamento volátil. Só podem ser usadas dentro do método em que foram definidas ou, ainda, dentro do bloco onde foram definidas. Ao iniciar a análise de um método ou um bloco, o analisador deve marcar quais as variáveis que foram definidas até aquele ponto. Ao terminar a análise desse bloco o analisador deve tirar da tabela aquelas variáveis declaradas dentro do bloco.

40 Como construir um compilador utilizando ferramentas Java p. 17/3 Por exemplo thirdclass[][] secmeth1() { int i,j; { string s; } } MethodDeclNode Token: thirdclass 2 MethodBodyNode BlockNode ListNode VarDeclNode ListNode Token: int ListNode BlockNode VarNode ListNode ListNode Token: i 0 VarNode VarDeclNode Token: j 0 Token: string ListNode VarNode Token: s 0

41 Como construir um compilador utilizando ferramentas Java p. 18/3 Por exemplo thirdclass[][] secmeth1() { int i,j; { string s; } } i = j + s; MethodDeclNode Token: thirdclass 2 MethodBodyNode BlockNode ListNode VarDeclNode ListNode Token: int ListNode BlockNode ListNode VarNode ListNode ListNode AtribNode Token: i 0 VarNode VarDeclNode Token: j 0 Token: string ListNode VarNode Token: s 0

42 Como construir um compilador utilizando ferramentas Java p. 19/3 Gera a tabela sec2 sec2 secvar1 secvar1 secvar2 secvar2 secvar3 (a) secvar3 (b) secmeth1 secmeth1 i j sec2 secvar1 secvar2 secvar3 (c) secmeth1 i j s

43 Como construir um compilador utilizando ferramentas Java p. 20/3 Observações cada entrada da Symtable pode representar tipos diferentes de identificadores.

44 Como construir um compilador utilizando ferramentas Java p. 20/3 Observações cada entrada da Symtable pode representar tipos diferentes de identificadores. Descritor de uma classe, de um construtor, de um método ou de uma variável.

45 Como construir um compilador utilizando ferramentas Java p. 20/3 Observações cada entrada da Symtable pode representar tipos diferentes de identificadores. Descritor de uma classe, de um construtor, de um método ou de uma variável. Para cada um desses descritores, o tipo de informação que se armazena é diferente.

46 Como construir um compilador utilizando ferramentas Java p. 21/3 Implementação: Symtable Pacote symtable

47 Como construir um compilador utilizando ferramentas Java p. 21/3 Implementação: Symtable Pacote symtable Lista ligada

48 Como construir um compilador utilizando ferramentas Java p. 21/3 Implementação: Symtable Pacote symtable Lista ligada Política de pilha

49 Como construir um compilador utilizando ferramentas Java p. 21/3 Implementação: Symtable Pacote symtable Lista ligada Política de pilha Variáveis: top, scptr, levelup

50 Como construir um compilador utilizando ferramentas Java p. 21/3 Implementação: Symtable Pacote symtable Lista ligada Política de pilha Variáveis: top, scptr, levelup Dois construtores

51 Como construir um compilador utilizando ferramentas Java p. 21/3 Implementação: Symtable Pacote symtable Lista ligada Política de pilha Variáveis: top, scptr, levelup Dois construtores Add, beginscope, endscope

52 Como construir um compilador utilizando ferramentas Java p. 22/3 Variáveis top aponta para a cabeça da lista. scptr é um número inteiro que controla o aninhamento de blocos. Inicialmente seu valor é 0 e a cada novo bloco esse valor é incrementado. Cada variável guarda o valor de scptr quando inserida na tabela, assim é possível saber a qual bloco ela pertence. levelup aponta para uma entrada em outra Symtable. Ela possibilita identificar a qual classe essa tabela pertence.

53 Como construir um compilador utilizando ferramentas Java p. 23/3 Visão Symtable (1) EntryTable EntryTable (3) (2) Symtable (1) EntryTable EntryTable EntryTable

54 Como construir um compilador utilizando ferramentas Java p. 24/3 Construtores Um cria uma tabela vazia. Outro, cria uma tabela vazia, que aponta para a entrada que a possui. public Symtable(EntryClass up) { top = null; scptr = 0; levelup = up; }

55 Como construir um compilador utilizando ferramentas Java p. 25/3 EntryTable Todo elementa da Symtable é do tipo EntryTable. É uma classe abstrata.

56 Como construir um compilador utilizando ferramentas Java p. 25/3 EntryTable Todo elementa da Symtable é do tipo EntryTable. É uma classe abstrata. package symtable; // classe geral para as possíveis entradas na tabela de símbolo abstract public class EntryTable { public String name; // nome do símbolo (var., método ou classe) public EntryTable next; // apontador para próximo dentro da tabela public int scope; // número do aninhamento corrente public Symtable mytable; // aponta para a tabela da qual ela é parte }

57 Como construir um compilador utilizando ferramentas Java p. 26/3 EntryClass public class EntryClass extends EntryTable { public Symtable nested; // tabela p/ declaração de elementos aninhados public EntryClass parent; // entrada correspondente à superclasse public EntryClass(String n, Symtable t) { name = n; // nome da classe declarada nested = new Symtable(this); // tabela onde inserir variáveis, // métodos ou classes parent = null; // sua superclasse } }

58 Como construir um compilador utilizando ferramentas Java p. 27/3 Entryvar public class EntryVar extends EntryTable { public EntryTable type; // apontador para o tipo da variável public int dim; // número de dimensões da variável public int localcount; // numeração seqüencial para locais // cria uma entrada para var. de classe public EntryVar(String n, EntryTable p, int d) { name = n; // nome da variável type = p; // apontador para a classe dim = d; // número de dimensões localcount = -1; // número seqüencial é sempre -1 (não local) } // cria uma entrada para var.local public EntryVar(String n, EntryTable p, int d, int k) { this(n, p, d); localcount = k; // inclui também o número seqüencial } }

59 Como construir um compilador utilizando ferramentas Java p. 28/3 EntryMethod public class EntryMethod extends EntryTable { public EntryTable type; // tipo de retorno do método public int dim; // número de dimensões do retorno public EntryRec param; // tipo dos parâmetros public int totallocals; // número de variáveis locais public int totalstack; // tamanho da pilha necessária public boolean fake; // true, se é um falso construtor public boolean hassuper; // true, se método possui chamada super // cria elemento para inserir na tabela public EntryMethod(String n, EntryTable p, int d, EntryRec r) { name = n; type = p; dim = d; param = r; totallocals = 0; totalstack = 0; fake = false; hassuper = false; }

60 Como construir um compilador utilizando ferramentas Java p. 29/3 EntryMethod public EntryMethod(String n, EntryTable p, boolean b) { name = n; type = p; dim = 0; param = null; totallocals = 0; totalstack = 0; fake = b; hassuper = false; } }

61 Como construir um compilador utilizando ferramentas Java p. 30/3 EntryRec public class EntryRec extends EntryTable { public EntryTable type; // tipo de um objeto public int dim; // dimensão public EntryRec next; // apontador para o resto da lista public int cont; // número de elementos a partir daquele elemento // cria elemento public EntryRec(EntryTable p, int d, int c) { type = p; cont = c; dim = d; next = null; } // cria elemento e põe no início da lista public EntryRec(EntryTable p, int d, int c, EntryRec t) { this(p, d, c); next = t; } }

62 Como construir um compilador utilizando ferramentas Java p. 31/3 EntrySimple package symtable; // entrada utilizada para declarar os tipos // básicos da linguagem public class EntrySimple extends EntryTable { public EntrySimple(String n) { name = n; } }

63 Como construir um compilador utilizando ferramentas Java p. 32/3 Outros métodos Essas classes possuem diversos métodos que auxiliam na manipulação da tabela de símbolos. Em particular, métodos de busca de símbolos. Eles serão estudados durante a análise semântica. Fica registrado que eles respeitam a estrutura do programa, implementando a política de escopos definida pela linguagem X ++.

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/8 Como construir um compilador utilizando ferramentas Java Aula 12 Análise Semântica Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 10 Exibição da árvore sintática Prof. Márcio Delamaro delamaro@icmc.usp.br

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/4 Como construir um compilador utilizando ferramentas Java Aula 9 Construção da árvore sintática Prof. Márcio Delamaro delamaro@icmc.usp.br

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/3 Como construir um compilador utilizando ferramentas Java Aula 3 A linguagem X ++ Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir

Leia mais

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

Leia mais

Compiladores Análise Semântica

Compiladores Análise Semântica Compiladores Análise Semântica Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Árvores Sintáticas Abstratas (ASTs) A árvore de análise sintática tem muita informação redundante Separadores,

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um

Leia mais

Compiladores Análise Semântica

Compiladores Análise Semântica Compiladores Análise Semântica Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Árvores Sintáticas Abstratas (ASTs) A árvore de análise sintática tem muita informação redundante Separadores,

Leia mais

CAP. VI ANÁLISE SEMÂNTICA

CAP. VI ANÁLISE SEMÂNTICA CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve

Leia mais

Análise Semântica e Tratamento de Erros Dependentes de Contexto

Análise Semântica e Tratamento de Erros Dependentes de Contexto Análise Semântica e Tratamento de Erros Dependentes de Contexto O componente Semântico de uma LP Tarefas da Análise Semântica Implementação da Tabelas de Símbolos Ações Semânticas em Compiladores Dirigidos

Leia mais

Análise Semântica e Representação Intermédia

Análise Semântica e Representação Intermédia Análise Semântica e Representação Intermédia Compiladores Cristina C. Vieira 1 Descritores O que contêm? Informação utilizada para geração de código e análise semântica Descritores locais - nome, tipo,

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa

Leia mais

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONSTRUÇÃO DE COMPILADORES CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2017/02 PROFESSOR: EDUARDO FERREIRA DOS SANTOS

Leia mais

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise

Leia mais

Linguagem Algorítmica OO. Linguagem Algorítmica

Linguagem Algorítmica OO. Linguagem Algorítmica UFSC-CTC-INE INE5384 - Estruturas de Dados Linguagem Algorítmica OO Prof. Ronaldo S. Mello 2002/2 Linguagem Algorítmica Independente de linguagem de programação OO Utilizada para: Exemplificar os algoritmos

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa é transferido

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Análise Semântica: Verificação de Tipos

Análise Semântica: Verificação de Tipos Análise Semântica: Verificação de Tipos Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores

Leia mais

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla. Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado

Leia mais

Compiladores - JACC. Fabio Mascarenhas

Compiladores - JACC. Fabio Mascarenhas Compiladores - JACC Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp JACC Gerador de analisadores sintáticos LALR que gera código Java Sintaxe baseada na sintaxe do YACC (e de muitos outros

Leia mais

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C ompiladores Análise Léxica Bruno Lopes Bruno Lopes ompiladores 1 / 31 Front-end Lida com a linguagem de entrada Teste de pertinência: código fonte linguagem fonte? Programa está bem formado? Sintaticamente?

Leia mais

Listas Lineares Ordenadas

Listas Lineares Ordenadas Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre

Leia mais

Compiladores. Análise Léxica

Compiladores. Análise Léxica Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa

Leia mais

Compiladores Análise de Tipos

Compiladores Análise de Tipos Compiladores Análise de Tipos Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem

Leia mais

Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica

Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica Geração de Código para uma Máquina Hipotética a Pilha Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica É composta de 3 Regiões MEPA

Leia mais

Algoritmos II prof. Daniel Oliveira

Algoritmos II prof. Daniel Oliveira Algoritmos II prof. Daniel Oliveira Revisar conceitos abordados na disciplina anterior Abordar conceitos vistos com a linguagem C# Variáveis e listas Expressões Estruturas de controle do tipo condicional

Leia mais

Lição 7 Array em Java

Lição 7 Array em Java Lição 7 Array em Java Introdução à Programação I 1 Objetivos Ao final desta lição, o estudante será capaz de: Declarar e criar arrays Acessar elementos de um array Determinar o número de elementos em um

Leia mais

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático Java Básico Objetivo: Os assuntos apresentados no decorrer do curso Java Básico incluem os conceitos gerais desta linguagem assim como a definição e utilização de seus recursos diversos, tais como: tipos

Leia mais

Linguagens de Programação Conceitos e Técnicas. Amarrações

Linguagens de Programação Conceitos e Técnicas. Amarrações Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador

Leia mais

Compiladores. Análise Semântica

Compiladores. Análise Semântica Compiladores Análise Semântica Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Análise léxica Análise semântica Síntese Análise sintática Análise Gramáticas Estruturas internas Arquivo

Leia mais

Folha 4.2 Análise sintática ascendente

Folha 4.2 Análise sintática ascendente Folha 4.2 Análise sintática ascendente 1. Considere a gramática G = (S, T, P, S) que representa o cabeçalho de métodos na linguagem Java (sem os modificadores de acesso), onde T = {S, Type, Param, Exception,

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 4 Análise Léxica Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir

Leia mais

Variáveis primitivas e Controle de fluxo

Variáveis primitivas e Controle de fluxo Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/

Leia mais

Construção de um compilador para a linguagem Panda

Construção de um compilador para a linguagem Panda Construção de Compiladores I UFOP DECOM 2014 1 Atividades Práticas Construção de um compilador para a linguagem Panda Etapa 1 Sumário José Romildo Malaquias Resumo Nesta série de atividades vamos implementar

Leia mais

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços

Leia mais

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Compiladores Análise Semântica

Compiladores Análise Semântica Compiladores Análise Semântica Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Semântica Muitos erros no programa não podem ser detectados sintaticamente, pois precisam de contexto

Leia mais

Compilação da linguagem Panda

Compilação da linguagem Panda Construção de Compiladores I [BCC328] Atividades Práticas Compilação da linguagem Panda Departamento de Computação Universidade Federal de Ouro Preto Prof. José Romildo Malaquias 22 de abril de 2015 Resumo

Leia mais

Linguagens de Programação Conceitos e Técnicas. Amarrações Prof. Tiago Alves de Oliveira

Linguagens de Programação Conceitos e Técnicas. Amarrações Prof. Tiago Alves de Oliveira Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Tiago Alves de Oliveira Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável

Leia mais

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@gmail.com

Leia mais

Programação II. Aula 3

Programação II. Aula 3 Programação II Aula 3 Algoritmo Algoritmo: REVISÃO qualquer procedimento bem definido que toma algum valor como entrada e produz algum valor como saída. Técnica de refinamentos sucessivos: dividir um processo

Leia mais

Orientação a Objetos AULA 09

Orientação a Objetos AULA 09 Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este

Leia mais

Arrays. Declaração e criação de arrays

Arrays. Declaração e criação de arrays Arrays Os arrays são estruturas de dados que consistem em itens de dados relacionados do mesmo tipo. São entidades estáticas no sentido de que, uma vez criadas, mantém o mesmo tamanho, embora uma referência

Leia mais

Programação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida

Programação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida Programação Orientada a Objetos II JAVA Décima Aula Prof. Rogério Albuquerque de Almeida 1 Programação Orientada a Objeto II Introdução à Estruturas de Dados Alocação Dinâmica Listas, pilhas e filas Construção

Leia mais

Genéricos. Profa. Thienne Johnson EACH/USP

Genéricos. Profa. Thienne Johnson EACH/USP Genéricos Profa. Thienne Johnson EACH/USP Java, como programar, 6ª edição Deitel & Deitel Capítulo 18 Material complementar http://wps.prenhall.com/br_deitel_comoprogra_6/ Todas as classes em Java herdam,

Leia mais

Diagramas Sintáticos

Diagramas Sintáticos Diagramas Sintáticos Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Classe pública com método main Cada classe X pública é declarada num ficheiro

Leia mais

Array em Java. Figura 1 - Exemplo de um array de inteiros

Array em Java. Figura 1 - Exemplo de um array de inteiros Array em Java 1. Objetivos Nesta lição, abordaremos Array em Java. Primeiro, definiremos o que é array e, então, discutiremos como declará-los e usá-los. Ao final desta lição, o estudante será capaz de:

Leia mais

Compiladores Análise de Tipos

Compiladores Análise de Tipos Compiladores Análise de Tipos Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem

Leia mais

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CLASSES E OBJETOS PARA PROGRAMAÇÃO ORIENTADA A OBJETOS Classes são estruturas das linguagens de POO criadas para conter os dados que

Leia mais

Lembrando análise semântica. Compiladores. Implementação de esquemas de tradução L-atribuídos. Exemplo de implementação top-down (1)

Lembrando análise semântica. Compiladores. Implementação de esquemas de tradução L-atribuídos. Exemplo de implementação top-down (1) Lembrando análise semântica Compiladores Geração de código intermediário (1) Parser Bottom-up: squema S-atribuído sem problema Apenas atributos sintetizados squema L-atribuído: ok, mas deve-se usar variáveis

Leia mais

ALOCAÇÃO DINÂMICA DE MEMÓRIA

ALOCAÇÃO DINÂMICA DE MEMÓRIA INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador

Leia mais

Exceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares

Exceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Exceções AULA 13 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Exceções Objetivo Depois desta aula você será capaz

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Breakout Componentes do Breakout Bola Raquete Tijolos Paredes Score Nem todos vão precisar de classes próprias

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/3 Como construir um compilador utilizando ferramentas Java Aula 7 Análise Sintática no JavaCC Prof. Márcio Delamaro delamaro@icmc.usp.br Como

Leia mais

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti. Sintaxe e Semântica George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução O problema de descrever a sintaxe Métodos formais para descrever a sintaxe Gramáticas de atributos Descrevendo

Leia mais

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Classes o Objetos. Classes, objetos, métodos e variáveis de instância Classes o Objetos Um recurso comum de cada aplicativo feito até agora é que todas as instruções que realizavam tarefas localizavam-se no método main. Se você tornar parte de uma equipe de desenvolvimento

Leia mais

Compiladores - JFlex. Fabio Mascarenhas

Compiladores - JFlex. Fabio Mascarenhas Compiladores - JFlex Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp JFlex Um gerador de analisadores léxicos que gera analisadores escritos em Java A sintaxe das especificações é inspirada

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Sintaxe e semântica Aula 4 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Sintaxe A sintaxe de uma linguagem de programação é a forma

Leia mais

Análise Semântica e Representação Intermédia

Análise Semântica e Representação Intermédia Análise Semântica e Representação Intermédia Compiladores, Aula Nº 22 João M. P. Cardoso 1 Representação do fluxo de controlo Nós de enunciados Nó if Árvore de expressão para a condição Nó para o corpo

Leia mais

Compiladores - JFlex. Fabio Mascarenhas Monday, April 15, 13

Compiladores - JFlex. Fabio Mascarenhas Monday, April 15, 13 Compiladores - JFlex Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp JFlex Um gerador de analisadores léxicos que gera analisadores escritos em Java A sintaxe das especificações é inspirada

Leia mais

Compiladores Análise de Tipos

Compiladores Análise de Tipos Compiladores Análise de Tipos Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

Programação Estruturada e Orientada a Objetos

Programação Estruturada e Orientada a Objetos INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos

Leia mais

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-6 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 6 Análise Sintática Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir

Leia mais

Tipos Abstratos de Dados. Estrutura de Dados

Tipos Abstratos de Dados. Estrutura de Dados Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:

Leia mais

Programação de Computadores IV

Programação de Computadores IV Programação de Computadores IV Introdução ao C - Variáveis Slides de Bruno Augusto Dorta Marques 1 Roteiro da aula Introdução a linguagem C Organização do código-fonte Método main Variável Tipos básicos

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou

Leia mais

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Revisões de PG (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Compilar e executar programas em Java Ficheiro fonte (Prog.java) Ficheiro

Leia mais

Folha 4.1 Análise sintática descendente

Folha 4.1 Análise sintática descendente 1. Dada a seguinte gramática G = (Σ, T, P, S), onde : Σ = { S, A, B } T = { a, b, c } S a b A c A A a S b S c B B a B b S b) Verifique que G é do tipo LL(1). c) Construa a tabela sintática predicativa

Leia mais

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO REVISÃO POO INTRODUÇÃO À LINGUAGEM JAVA CRIANDO CLASSES EM JAVA Convenção de Nomes em Java Classes iniciam com letras maiúsculas Métodos, atributos e variáveis locais iniciam com minúsculas. Declaração

Leia mais

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){ UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------

Leia mais

Pseudolinguagem. BC0501 Linguagens de Programação t2 Aula 11. Prof. Alysson Ferrari ufabc.edu.br

Pseudolinguagem. BC0501 Linguagens de Programação t2 Aula 11. Prof. Alysson Ferrari ufabc.edu.br BC0501 Linguagens de Programação - 2008t2 Aula 11 Pseudolinguagem Prof. Alysson Ferrari alysson.ferrari @ ufabc.edu.br http://fma.if.usp.br/~alysson baseado em material elaborado por: Marcelo Zanchetta

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores e Blocos de Inicialização

Leia mais

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Quinta aula

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Quinta aula Prof. Rogério Albuquerque de Almeida Programação Orientada a Objetos II Java Quinta aula 1 Prof. Rogério Albuquerque de Almeida Programação Orientada a Objeto II Arrays Declarar e criar arrays Acessar

Leia mais

Compiladores Geração de Código

Compiladores Geração de Código Compiladores Geração de Código Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica

Leia mais

Declaração de Construtores em Java

Declaração de Construtores em Java Programando com Java Artigo http://mballem.wordpress.com/ Declaração de Construtores em Java Para que serve e como usar um Construtor em Java Autor Marcio Ballem: é formado em Sistemas de Informação e

Leia mais

Projeto de Linguagem. Linguagens de Programação

Projeto de Linguagem. Linguagens de Programação Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem

Leia mais

Erros de Tipo em Pascal Simplifificado

Erros de Tipo em Pascal Simplifificado Checagem de Tipos Erros de Tipos em Pascal Simplificado não capturados pela gramática Tarefas de um Type Checker e Conversões de Tipos Sistema de Tipos Checagem Estática X Dinâmica Linguagens Fortemente

Leia mais

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores

Leia mais

AULA 6 - ARRAYS. Array de 10 elementos

AULA 6 - ARRAYS. Array de 10 elementos 1 AULA 6 - ARRAYS Arrays são objetos que armazenam diversas variáveis do mesmo tipo. Eles podem conter variáveis de referência primitivas ou de objeto, mas o array propriamente dito sempre será um objeto

Leia mais

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever

Leia mais

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Análise Semântica Disciplina: Compiladores Equipe: Luiz Carlos dos Anjos Filho José Ferreira Júnior Compiladores Um compilador

Leia mais

Compiladores. Árvore de derivação anotada. Geração de TAC para as principais construções. tradução em código TAC de expressões

Compiladores. Árvore de derivação anotada. Geração de TAC para as principais construções. tradução em código TAC de expressões Compiladores Geração de código intermediário (2) Geração de TAC para as principais construções xpressões xpressões booleanas tradução em código TAC de expressões S := 1 + 2 1 * 2 ( 1 ) : A := X + Y * Z

Leia mais

Interfaces POO. Prof. Marcio Delamaro

Interfaces POO. Prof. Marcio Delamaro Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso

Leia mais

Nomes, Amarração, Verificação de Tipos, e Escopo

Nomes, Amarração, Verificação de Tipos, e Escopo 5 Nomes, Amarração, Verificação de Tipos, e Escopo Concepts of Programming Languages, 5/e Robert W. Sebesta Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave

Leia mais

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 2 A tecnologia Java Uma ideia base da linguagem JAVA é a de que, um programa em JAVA deve poder ser executado em qualquer tipo de computador sem ter que ser alterado ou compilado novamente. Em Java o código

Leia mais