Escolar Documentos
Profissional Documentos
Cultura Documentos
Compiladores
Professora Tatiane Fernandes
1. Analisador Léxico
1.1. A análise léxica é a primeira fase de um compilador também
conhecido como leitura(scanning). O analisador léxico lê o
código-fonte e agrupa em sequência caracteres de acordo com o
padrão correspondente de um token, é essa abordagem é conhecida
como lexema. Também é chamado de instância de um token.
formato do token: <nome-token, valor-atributo>.
O analisador léxico divide essa sintaxe em uma série de tokens que
são as menores unidades com significado no programa-fonte. Um
token pode ser pensado como sendo similar a uma palavra, vale
ressaltar que nesse processo é removido qualquer espaço extra ou
comentário escrito no código-fonte.
A imagem abaixo, demonstra o início do fluxo de compilação, que
seria desde o agrupamento de código fonte em lexema, análise léxica
e geração de token e sua etapa posterior análise sintaxe.
Exemplo 1.2 retirado do livro.
position = initial + rate * 60
Tabela de símbolos:
Lexema Tipo IDs
position Variável 1
= Operador
initial Variável 2
+ Operador
rate Variável 3
* Operador
60 Número
2. Analisador Sintático
2.1. A análise sintática é a etapa do compilador que ocorre após a análise
léxica. O objetivo da análise sintática é determinar a estrutura sintática
do código-fonte que está sendo compilado. Para isso, a análise
sintática utiliza o fluxo de tokens produzido pela análise léxica para
validar as informações ou tokens.
Uma representação comum é uma árvore de sintaxe(As árvores na
ciência da computação são normalmente desenhadas de cabeça para
baixo, com a raiz no topo) onde cada nó em seu interior representa
uma operação, e os filhos do nó representam os argumentos da
operação, logo abaixo temos uma imagem que representa a árvore
sintaxe do exemplo 1.2
3. Analisador Semântico
3.1. A análise semântica utiliza a árvore de sintaxe e as informações na
tabela de símbolos para verificar a consistência semântica do
programa fonte com a definição da linguagem. Essa etapa de análise
do código fonte, reúne informações sobre os tipos dos dados e as
salva na tabela de símbolos ou na árvore de sintaxe, para uso
subsequente na geração de código intermediário.
Uma das responsabilidades do analisador semântico é verificar se os
operadores estão com os operandos especificados.
As especificações de linguagem podem permitir conversões de tipos
chamadas coerções.