First commit

This commit is contained in:
mguinhos committed 2026-10-06 22:12:02 +00:00
commit 3d68783535
25 files changed
+1751

No files matched your search

+19
View File
@@ -0,0 +1,19 @@
#ifndef MICROPASCAL_LEXER_LEXER_H
#define MICROPASCAL_LEXER_LEXER_H
#include "micropascal-lexer/token.h"
typedef struct Lexer {
const char* fonte;
size_t tamanho;
size_t posicao;
int linha;
int coluna;
int houve_erro;
} Lexer;
void lexerInicializar(Lexer* lexer, const char* fonte);
Token lexerProximoToken(Lexer* lexer);
void tokenLiberar(Token* token);
#endif
+60
View File
@@ -0,0 +1,60 @@
#ifndef MICROPASCAL_LEXER_TOKEN_H
#define MICROPASCAL_LEXER_TOKEN_H
#include <stddef.h>
typedef enum TokenKind {
TOKEN_EOF,
TOKEN_IDENTIFICADOR,
TOKEN_INTEIRO_LITERAL,
TOKEN_REAL_LITERAL,
TOKEN_CHAR_LITERAL,
TOKEN_MENOR,
TOKEN_MAIOR,
TOKEN_MENOR_IGUAL,
TOKEN_MAIOR_IGUAL,
TOKEN_IGUAL,
TOKEN_DIFERENTE,
TOKEN_MAIS,
TOKEN_MENOS,
TOKEN_MULTIPLICACAO,
TOKEN_DIVISAO,
TOKEN_DIV,
TOKEN_AND,
TOKEN_OR,
TOKEN_NOT,
TOKEN_ATRIBUICAO,
TOKEN_ABRE_PARENTESES,
TOKEN_FECHA_PARENTESES,
TOKEN_VIRGULA,
TOKEN_PONTO_VIRGULA,
TOKEN_PONTO,
TOKEN_DOIS_PONTOS,
TOKEN_PROGRAM,
TOKEN_IF,
TOKEN_THEN,
TOKEN_ELSE,
TOKEN_WHILE,
TOKEN_DO,
TOKEN_REPEAT,
TOKEN_UNTIL,
TOKEN_INTEGER,
TOKEN_REAL,
TOKEN_CHAR,
TOKEN_BEGIN,
TOKEN_END,
TOKEN_WRITE,
TOKEN_VAR,
TOKEN_ERRO
} TokenKind;
typedef struct Token {
TokenKind kind;
char* lexema;
int linha;
int coluna;
} Token;
const char* tokenKindNome(TokenKind kind);
#endif