sic

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

token.h (1099B)



#pragma once
#include "str.h"

typedef enum Token_Type {
    NOTYETSET = 5,
    IDENT,
    KEYWORD,
    SYMBOL,
    PLUS,
    MINUS,
    STAR,
    SLASH,
    BACKSLASH,
    PERCENT,
    LBRACE,
    RBRACE,
    LPAREN,
    RPAREN,
    EQ_EQ,
    BANG_EQ,
    EQ_GT,
    LT_EQ,
    EQ,
    BANG,
    PLUS_EQ,
    MINUS_EQ,
    STAR_EQ,
    SLASH_EQ,
    PERCENT_EQ,
    QUESTION,
    COLON,
    SEMICOL,
    PIPE,
    PIPE_PIPE,
    PIPE_EQ,
    AMPERSAND,
    AMPERSAND_EQ,
    AMPERSAND_AMPERSAND,
    CARET,
    LT,
    GT,
    LT_LT,
    GT_GT,
    GT_EQ,
    PLUS_PLUS,
    MINUS_MINUS,
    LT_MINUS,
    MINUS_GT,
    LIT_STRING,
    LIT_DECIMAL,
    LIT_INT,
    LIT_BOOL,
    LIT_VOID,
} Token_Type;

typedef enum Keyword {
    IF = 157,
    ELSE,
    WHILE,
    OPT,
    LAZY,
    MATCH,
    DEF,
    FOR,
    EACH,
    SOME,
    NONE,
    OK,
    ERR,
    IN,
    IS,
    CAST
} Keyword;

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

typedef struct Token {
    Token_Type type;
    Str lexeme;
    const char* path;
    const char* filename;
    size_t line;
    size_t col;
} Token;