sic

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

lexer.h (539B)



#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;

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

void lexer_lex(Lexer *lexer);