sic

The sic programming language, compiler and tools (WIP)
Log | Files | Refs

lexer.h (541B)



#pragma once

#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>

#include "token.h"

/////////////////////////////////////////////////

typedef struct Lexer_State {
    size_t pos;
    size_t line;
    size_t col;
} Lexer_State;

typedef struct Lexer {
    const char* code;
    size_t code_len;
    const char* path;
    const char* filename;
    Lexer_State state;
    Token* tokens;
    size_t len;
    size_t cap;
} Lexer;

/////////////////////////////////////////////////

Lexer* lexer_lex(Lexer* lexer);