Skip to content

Semana 3 - Analisador Léxico Inicial

Na terceira semana, realizamos a implementação inicial do analisador léxico do compilador.

Adicionamos os tokens conforme a linguagem definida, incluindo: - Palavras-chave, - Números, - Identificadores, - Símbolos.

Essa etapa foi essencial para identificar e categorizar os elementos básicos do código-fonte, garantindo que o compilador reconheça corretamente os componentes da linguagem alvo.

O trabalho foi baseado no conteúdo apresentado durante a aula prática, com foco na criação do arquivo scanner.l.

Arquivo inicial "scanner.l"

%{
#include <stdio.h>
%}

/* Definições de padrões de token e ações */
%%

if          { printf("KW_IF\n"); }
while       { printf("KW_WHILE\n"); }

"//".*     { /* Ignorar comentários de linha */ }

"/*"([^*]|\*+[^*/])*\*+\/    { /* Ignorar comentários de bloco */ }

[a-zA-Z_][a-zA-Z0-9_]*  { printf("IDENT(%s)\n", yytext); }

[0-9]+(\.[0-9]+)?  { printf("NUMBER(%s)\n", yytext); }

[+\-*/=]   { printf("OPERATOR(%s)\n", yytext); }

[ \t\n]+  { /* Não faz nada */ }

.  { printf("UNKNOWN(%s)\n", yytext); }

%%

/* Função auxiliar do Flex (quando termina o arquivo de entrada) */
int yywrap(void) {
    return 1;
}

/* Função principal: executa o analisador léxico */
int main(void) {
    yylex();
    return 0;
}