40 lines
582 B
C
40 lines
582 B
C
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "globals.h"
|
|
|
|
#define LEX_BUF_SIZE 4096
|
|
|
|
typedef struct Lexer {
|
|
uint32_t linepos;
|
|
uint32_t lineno;
|
|
|
|
FILE *source;
|
|
|
|
int flag_EOF;
|
|
|
|
char *buffer;
|
|
char *curr;
|
|
|
|
size_t bytes_in_buffer;
|
|
} Lexer;
|
|
|
|
Lexer *new_lexer();
|
|
|
|
void lexer_set_source(Lexer *lexer, FILE *source);
|
|
|
|
void lexer_fill_buffer(Lexer *lexer);
|
|
|
|
void lexer_consume(Lexer *lexer);
|
|
|
|
char lexer_curr(Lexer *lexer);
|
|
|
|
char lexer_peek(Lexer *lexer);
|
|
|
|
Token lexer_next_token(Lexer *lexer);
|
|
|
|
void free_lexer(Lexer *lexer);
|