Implementação de um Compilador

Análise léxica

Para implementar este analisador, vamos considerar que este tem sempre associado a si um token atual.

Para o início e fim, existirão dois tokens especiais: NONE e EOF.

Cada token tem a si associado o seu tipo, sendo que tokens do mesmo tipo partilham as mesmas propriedades léxicas; e, quando aplicável, um atributo (textual) que complete a sua definição.

Análise sintáctica

Analisa sequências válidas de tokens.

Estratégia

  1. Identificar as regras da linguagem.

  2. Associar os métodos booleanos ao reconhecimento de cada regra.

  3. Garantir que o token atual é o esperado para o início dessa regra.

  4. Reconhecimento de regras têm três comportamento possíveis:

    1. Sucesso: Todos os tokens associados à regra são consumidos.

    2. Falha no primeiro token: Não é consumido nenhum token.

    3. Falha a meio do reconhecimento: A sequência de tokens é rejeitada.

As estruturas (regras) importantes no esboço apresentado são a instrução distância. Como esta instrução se aplica a dois pontos, temos também a regra ponto (que por sua vez se aplica a um par de números).

Análise Semântica

A existência de variáveis possibilita a existência de erros semânticos resultantes da utilização de variáveis não definidas.

As variáveis, são um recurso programático que permite o armazenamento de valores recorrendo a nomes (designados identificadores).

A estrutura de dados adequada para lidar com variáveis é o array associativo.

Síntese: interpretação do código

Vamos considerar que todas as instruções têm um valor numérico, e que o efeito de uma instruções é a escrita desse valor.

Last updated