Micro C Compiler - MCC
Loading...
Searching...
No Matches
scanner.c File Reference

implementação do analisador léxico para a linguagem Micro C. More...

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "scanner.h"

Functions

static char prox_char ()
 lê o próximo caractere do arquivo de entrada.
 
static char ignora_espacos_e_comentarios ()
 avança no arquivo até encontrar um caractere que não seja espaço ou comentário.
 
int inicializar_scanner (const char *nome_arquivo)
 inicializa o analisador léxico com o arquivo de entrada.
 
Token proximo_token ()
 gera o próximo token do arquivo fonte.
 

Variables

FILE * arquivo_fonte
 ponteiro para o arquivo de entrada do código fonte.
 
int linha_atual = 1
 contador da linha atual no arquivo fonte.
 

Detailed Description

implementação do analisador léxico para a linguagem Micro C.

este arquivo contém as funções para ler o arquivo fonte, ignorar espaços e comentários, e gerar tokens a partir de um arquivo de entrada. o analisador léxico é a primeira etapa do compilador, convertendo o código em uma sequência de tokens.

Function Documentation

◆ ignora_espacos_e_comentarios()

static char ignora_espacos_e_comentarios ( )
static

avança no arquivo até encontrar um caractere que não seja espaço ou comentário.

*

Esta função lida com os caracteres irrelevantes (whitespace) e os dois tipos de comentarios suportados (// e / * * /), utilizando lookahead para desambiguacao.

Returns
O primeiro caractere de um potencial lexema ou EOF.

◆ inicializar_scanner()

int inicializar_scanner ( const char *  nome_arquivo)

inicializa o analisador léxico com o arquivo de entrada.

*

Parameters
nome_arquivoO caminho para o arquivo fonte a ser aberto.
Returns
0 em caso de sucesso, -1 em caso de falha ao abrir.

◆ prox_char()

static char prox_char ( )
static

lê o próximo caractere do arquivo de entrada.

*

Returns
O proximo caractere lido.

◆ proximo_token()

Token proximo_token ( )

gera o próximo token do arquivo fonte.

*

Esta é a funcao principal do analisador lexico. Ela utiliza a logica do automato finito deterministico (DFA) para reconhecer identificadores, numeros, literais (string/char) e operadores, lidando com lookahead.

Returns
A struct Token que representa o proximo elemento lexico (ou END_OF_FILE/UNDEF).

Processa ASSIGN (=) ou EQ (==).

Processa NEQ (!=) ou NOT (!).

Processa LT (<) ou LEQ (<=).

Processa GT (>) ou GEQ (>=).

Processa MINUS (-) ou um número negativo (INTEGERCONST).

Processa operadores aritméticos simples (+, *, /, %).

Processa pontuações e delimitadores.

Caso default: Caractere inválido ou não reconhecido.

Variable Documentation

◆ arquivo_fonte

FILE * arquivo_fonte

ponteiro para o arquivo de entrada do código fonte.

arquivo de entrada do arquivo fonte.

ponteiro para o arquivo aberto que contém o código Micro C a ser analisado.

◆ linha_atual

int linha_atual = 1

contador da linha atual no arquivo fonte.

rastreia a linha atual para relatar erros com precisão, inicializado em 1.