First commit
This commit is contained in:
commit
3d68783535
25 files changed
+1751
No files matched your search
@@ -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
|
||||
@@ -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
|
||||
Reference in new issue
Block a user