Computação |
Introdução
As fases de análise léxica e análise sintática compõem o início do processo de compilação. Juntas, transformam o código-fonte em uma estrutura compreensível pelo compilador, organizando o conteúdo em tokens e validando a estrutura gramatical do programa.
Análise Léxica
A análise léxica, também chamada de scanner, é responsável por ler o código-fonte caractere por caractere e agrupá-lo em unidades léxicas chamadas tokens.
O que são tokens? Tokens são categorias como:
• Palavra-chave: if, while, return
• Identificador: x, variavel1
• Constantes: 42, "texto"
• Operadores: +, -, ==
• Delimitadores: ;, {, }
Funções do analisador léxico:
I) Ignora espaços em branco e comentários
II) Reconhece padrões com base em expressões regulares
III) Classifica e envia tokens para a próxima fase (análise sintática)
Ferramentas: Ferramentas como Lex/Flex automatizam essa fase. A entrada é um conjunto de expressões regulares que descrevem os tokens, e a saída é um código C/C++ que realiza a varredura léxica.
Análise Sintática
A análise sintática, ou parser, verifica se a sequência de tokens produzida pela análise léxica está de acordo com a gramática da linguagem.
Árvore Sintática: A saída dessa fase é a árvore sintática (parse tree), que mostra a estrutura hierárquica do programa, revelando como os tokens se organizam em comandos, expressões, funções etc.