Você está na página 1de 17

Compiladores

Compiladores

Capitulo 1
A compilação e composta por duas fases: síntese e análise.
A análise e composta por 3 fases: análise linear, análise hierárquica e semântica.

Compiladores 1
Interface Retaguarda
Retaguarda inclui as fases de analise, gerencia da tabela e código intermediário .
Interface Vanguarda
Vanguarda incluem fase e otimização e geração de código além de ter o tratamento de erros
A análise semântica verifica potenciais erros semânticos no programa alvo
Compiladores são programas que transformam um código fonte em uma linguagem de
programação em um programa executável. O processo de compilação envolve várias etapas,
como análise léxica, análise sintática, análise semântica, geração de código e otimização.
A análise léxica é a primeira etapa do processo de compilação. Ela consiste em analisar o código
fonte e identificar os tokens, ou seja, as unidades léxicas que compõem o código, como palavras-
chave, identificadores, operadores e símbolos.

O analisador léxico percorre o código fonte caractere por caractere e forma os tokens de acordo
com as regras da linguagem de programação. Se o código fonte contém erros léxicos, o
analisador léxico gera mensagens de erro indicando a linha e a coluna onde o erro ocorreu.

Após a análise léxica, os tokens são passados para a análise sintática, que verifica se a estrutura
do código fonte está correta e se ele segue as regras gramaticais da linguagem de programação.
A análise sintática constrói uma árvore de análise sintática (AST), que representa a estrutura do
código fonte e é usada na etapa seguinte do processo de compilação, a análise semântica.

Compiladores 2
A análise sintática é a segunda etapa do processo de compilação. Ela consiste em verificar se a
estrutura do código fonte está correta e se ele segue as regras gramaticais da linguagem de
programação. A análise sintática constrói uma árvore de análise sintática (AST), que representa a
estrutura do código fonte e é usada na etapa seguinte do processo de compilação, a análise
semântica.

Capitulo 2

2.2 Definição da síntese

1. Um conjunto de tokens, denominados símbolos terminais

2. Um conjunto de não-terminais

3. Um conjunto de produções. Cada produção é definida por um não-terminal (lado


esquerdo), seguido de uma seta, sucedida por uma sequência de tokens e/ou
não-terminais (lado direito)

4. Designação de um dos não-terminais como símbolo de partida

Dígitos , símbolos e palavras em negritos são terminais.

Não-terminais são grafados em itálico.

Os demais símbolos são tokens.

Compiladores 3
Compiladores 4
Compiladores 5
2.3 Definições traduzidas pela sintaxe

Compiladores 6
Uma definição traduzida pela sintaxe usa a gramatica livre de contexto

Ela associa, a cada símbolo da gramática, um conjunto de atributos e, a cada produção, um


conjunto de regras semânticas para computar os valores dos atributos associados aos símbolos
presentes na produção.

Um atributo é dito sintetizado se seu valor depende apenas dos valores dos
atributos dos nós filhos de seu nó na árvore gramatical

Os atributos sintetizados podem ser computados por meio de uma travessia por
profundidade(DFS).

Um esquema de tradução é uma gramática livre de contexto na qual fragmentos de


programas, denominados ações semânticas, são inseridos nos lados direitos das produções.

Compiladores 7
Um esquema de tradução é uma gramatica livre de contexto, na qual fragmentos de
programa, denominados ações semânticas , são inseridos no lado direitos das produções.

2.4 Analise gramatical


A análise gramatical é o processo de se determinar se uma cadeia de tokens pode ser gerada por
uma gramática.

Há duas classes principais de analisadores gramaticais


Analisadores top-down a construção parte da raiz da árvore gramatical para suas folhas.

Analisadores bottom-up partem das folhas em direção à raiz.


Geradores de analisadores gramaticais tendem a usar métodos bottom-up.

Compiladores 8
Compiladores 9
Uma análise gramatical descendente recursiva é um método top-down de análise sintática na
qual são executadas procedimentos recursivos para processar a entrada.

Compiladores 10
2.5 Um tradutor para expressões simples
Se uma gramatica tiver uma ou mais produções à esquerda, e preciso modificar a gramatica
antes de fazer o analisador gramatical preditivo.

Compiladores 11
Quando não há associação de atributos aos não-terminais, um tradutor dirigido pela sintaxe
pode ser construído a partir da extensão de um analisador gramatical preditivo

2.6 Analise léxica

Compiladores 12
O analisador léxico e o gramatical formam um par produto-consumidor.

Em geral o buffer armazena um único token.

As fases de análise coletam informações que são usadas nas fases de síntese para a geração
do programa alvo

Compiladores 13
2.7 Incorporando uma tabela de símbolos
As fases de análise coletam informações que são usadas nas fases de síntese para a geração
do programa alvo

2.8 Máquinas de pilha abstratas

A interface de vanguarda do compilador produz uma representação intermediária do


programa fonte, que será usada pela interface de retaguarda para produzir o programa alvo.

Uma possível forma para a representação intermediária é a máquina de pilha abstrata

Compiladores 14
Compiladores 15
Compiladores 16
Compiladores 17

Você também pode gostar