A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 4©João M. P. Cardoso 1 Anatomia de um Compilador Compiladores, Aula Nº 4 João M. P. Cardoso.

Apresentações semelhantes


Apresentação em tema: "Aula 4©João M. P. Cardoso 1 Anatomia de um Compilador Compiladores, Aula Nº 4 João M. P. Cardoso."— Transcrição da apresentação:

1 Aula 4©João M. P. Cardoso 1 Anatomia de um Compilador Compiladores, Aula Nº 4 João M. P. Cardoso

2 Aula 4©João M. P. Cardoso 2 Viagem Do texto que representa o programa até ao código máquina Duas fases: Análise Reconhecimento dos enunciados no código fonte e armazenamento em estruturas internas Síntese Geração do código assembly a partir das estruturas internas

3 Aula 4©João M. P. Cardoso 3 Análise Lexical Lexical Analyzer (Scanner) Cadeia de Tokens Programa (cadeia de caracteres)

4 Aula 4©João M. P. Cardoso 4 Análise Lexical /* uma expressão simples */ y = b*x +c; // atribui a y ID(y) EQ ID(b) TIMES ID(x) PLUS ID(c) SEMICOLON EOF Lexical Analyzer (Scanner)

5 Aula 4©João M. P. Cardoso 5 Análise Lexical /* exemplo Int sum(int A[], int N) { Int i, 5sum = 0; For(i=0; i<N; i++) { sum = sum + A[i]; } return sum; } Tratamento de erros Não é uma palavra reservada nem um identificador Falta terminar comentário */

6 Aula 4©João M. P. Cardoso 6 Análise Sintáctica Syntax Analyzer (Parser) Árvore sintáctica Syntax Analyzer (Parser) Lexical Analyzer (Scanner) Cadeia de Tokens Programa (cadeia de caracteres)

7 Aula 4©João M. P. Cardoso 7 Análise Sintáctica b x * = y y = b*x + c + c Árvore Sintáctica (concreta)

8 Aula 4©João M. P. Cardoso 8 Análise Sintáctica bx y = + * c Árvore Sintáctica (abstracta): AST y = b*x + c

9 Aula 4©João M. P. Cardoso 9 Análise Sintáctica Tratamento de erros Int sum(int A[], int N)) { Int i, sum = 0; For(i=0; i<N; i++) { sum = sum + A[i] } retur sum; } Falta ‘;’ Não é palavra reservada Chaveta a mais Parêntesis a mais

10 Aula 4©João M. P. Cardoso 10 Análise Semântica Semantic Analyzer Syntax Analyzer (Parser) Árvore sintáctica Syntax Analyzer (Parser) Lexical Analyzer (Scanner) Cadeia de Tokens Programa (cadeia de caracteres) Representação intermédia tmp1 = b*x; tmp2 = tmp1 + c;

11 Aula 4©João M. P. Cardoso 11 Análise Semântica Tratamento de erros boolean sum(int A[], N) { Int i, sum; For(i=0; i<N; i++) { sum1 = sum + A[i]; } return sum; } Tipo não definido Não foi atribuído valor inicial a sum Tipo da variável retornada não confere com a declaração do cabeçalho da função Variável não declarada

12 Aula 4©João M. P. Cardoso 12 Optimização de código Code Optimizer Representação intermédia optimizada Representação intermédia Semantic Analyzer Syntax Analyzer (Parser) Árvore sintáctica Syntax Analyzer (Parser) Lexical Analyzer (Scanner) Cadeia de Tokens Programa (cadeia de caracteres)

13 Aula 4©João M. P. Cardoso 13 Geração de código assembly Code Generator Código Assembly Code Generator Code Optimizer Representação intermédia optimizada Representação intermédia Semantic Analyzer Syntax Analyzer (Parser) Árvore sintáctica Syntax Analyzer (Parser) Lexical Analyzer (Scanner) Cadeia de Tokens Programa (cadeia de caracteres) mult $t4, $t1,$t2; Add $t4, $t4, $t3;

14 Aula 4©João M. P. Cardoso 14 TPC Apresente os resultados de cada etapa de compilação para a expressão: y = a*x*x+b*x+c;


Carregar ppt "Aula 4©João M. P. Cardoso 1 Anatomia de um Compilador Compiladores, Aula Nº 4 João M. P. Cardoso."

Apresentações semelhantes


Anúncios Google