summaryrefslogtreecommitdiff
path: root/lexer.h
diff options
context:
space:
mode:
authorCarson Fleming <[email protected]>2026-03-26 16:21:29 -0400
committerCarson Fleming <[email protected]>2026-03-26 16:22:00 -0400
commit7d9fb2c733c8c64f6f74eefa0eea35b36be102cd (patch)
tree16b6cded5f9611e0ff1948395578845c9688b926 /lexer.h
parent68db110d34611fc8bb79035d3a11bba07dea43f3 (diff)
downloadccc-7d9fb2c733c8c64f6f74eefa0eea35b36be102cd.tar.gz
let's go we can parse return zero most useful program ever
Diffstat (limited to 'lexer.h')
-rw-r--r--lexer.h107
1 files changed, 56 insertions, 51 deletions
diff --git a/lexer.h b/lexer.h
index 30848a8..acb8eb5 100644
--- a/lexer.h
+++ b/lexer.h
@@ -2,56 +2,56 @@
#define LEXER_H
enum token_type {
- NOT_FOUND,
- IDENTIFIER,
- INT_LIT,
- FLOAT_LIT, // TODO
- CHAR_LIT,
- STR_LIT,
- HASHTAG,
- LPAREN,
- RPAREN,
- LCURLY,
- RCURLY,
- LSQUARE,
- RSQUARE,
- COLON,
- SEMI,
- COMMA,
- DOT,
- QMARK,
- NOT,
- NEQ,
- XOR,
- XEQ,
- AMP,
- LOG_AND,
- AND_EQ,
- STAR,
- MUL_EQ,
- NEG,
- NEG_EQ,
- ARROW,
- ASSIGN,
- TEST_EQ,
- PLUS,
- PLUS_EQ,
- BSLASH,
- PIPE,
- LOG_PIPE,
- PIPE_EQ,
- DIV,
- DIV_EQ,
- MOD,
- MOD_EQ,
- LT,
- GT,
- LEQ,
- GEQ,
- SHR,
- SHR_EQ,
- SHL,
- SHL_EQ
+ TK_NOT_FOUND,
+ TK_IDENT,
+ TK_INT_LIT,
+ TK_FLOAT_LIT,
+ TK_CHAR_LIT,
+ TK_STR_LIT,
+ TK_HASHTAG,
+ TK_LPAREN,
+ TK_RPAREN,
+ TK_LCURLY,
+ TK_RCURLY,
+ TK_LSQUARE,
+ TK_RSQUARE,
+ TK_COLON,
+ TK_SEMI,
+ TK_COMMA,
+ TK_DOT,
+ TK_QMARK,
+ TK_NOT,
+ TK_NEQ,
+ TK_XOR,
+ TK_XEQ,
+ TK_AMP,
+ TK_LOG_AND,
+ TK_AND_EQ,
+ TK_STAR,
+ TK_MUL_EQ,
+ TK_NEG,
+ TK_NEG_EQ,
+ TK_ARROW,
+ TK_ASSIGN,
+ TK_TEST_EQ,
+ TK_PLUS,
+ TK_PLUS_EQ,
+ TK_BSLASH,
+ TK_PIPE,
+ TK_LOG_PIPE,
+ TK_PIPE_EQ,
+ TK_DIV,
+ TK_DIV_EQ,
+ TK_MOD,
+ TK_MOD_EQ,
+ TK_LT,
+ TK_GT,
+ TK_LEQ,
+ TK_GEQ,
+ TK_SHR,
+ TK_SHR_EQ,
+ TK_SHL,
+ TK_SHL_EQ
};
typedef unsigned long long int_lit_t;
@@ -60,18 +60,23 @@ typedef double float_lit_t;
struct token {
enum token_type type;
union {
- char* identifier;
+ char* ident;
int_lit_t int_lit;
float_lit_t float_lit;
char char_lit;
char* str_lit;
void* unused;
} data;
+
+ const char* PATH;
+ unsigned long LINE;
+ unsigned long COL;
};
void lexer_load(const char* path);
void lexer_close();
bool lexer_peek(struct token* p_token);
bool lexer_pop(struct token* p_token);
+bool lexer_eof();
#endif