Frank Coelho de Alcantara -2020
Cabe ao Analisador Léxico percorrer cada símbolo usado na linguagem de programação e validar conjuntos destes símbolos, strings. A cada string válida na linguagem, damos o nome de lexema.
Cada lexema será representado na memória por meio de um token.
Um token é uma estrutura de dados que contém as informações básicas do lexema.
Cabe a equipe de desenvolvimento da linguagem definir o formato do Token.
No mínimo, o token deve conter a classe do lexema (palavra chave, identificador, inteiro, float, operador, etc.) e o valor do lexema ( for, +, etc.).
Não é raro encontrar o registro da linha e da coluna onde o token se encontra no código.
O Analisador Léxico precisa saber o que é palavra chave, e quais os lexemas são válidos.
E também irá precisar armazenar os tokens em uma estrutura de dados.
Tradicionalmente, estes dois tipos de dados são armazenados em uma estrutura chamada de Tabela de Símbolos.
Uma estrutura de dados que permeia todo o processo de troca de informações entre os módulos do processo de compilação.
Deve ser uma estrutura de dados muito eficiente para escrita, busca e leitura.
Neste momento a análise assintótica se torna relevante.
Uma solução é usar uma hash table cuja informação armazenada está em estruturas específicas.
Lexema | Token |
int | Keyword |
maior | Identifier |
( | Operator |
int | Keyword |
x | Identifier |
, | Operator |
int | Keyword |
Y | Identifier |
) | Operator |
{ | Operator |
If | Keyword |