Started load directive.

This commit is contained in:
2025-09-03 22:31:18 +02:00
parent 4924b01eac
commit 11c936ba7f
5 changed files with 89 additions and 8 deletions

View File

@@ -101,6 +101,7 @@ Token_Kind :: enum {
TOKEN_RETURN;
TOKEN_REGISTER;
TOKEN_STRING;
TOKEN_STRUCT;
TOKEN_SWITCH;
@@ -323,10 +324,6 @@ make_float :: (lexer : *Lexer) -> *Token {
return token;
}
make_string :: () {
}
new_token :: (lexer : *Lexer, kind : Token_Kind) -> *Token {
length := lexer.cursor - lexer.start;
token : Token;
@@ -352,6 +349,16 @@ make_directive :: (lexer : *Lexer) -> *Token {
return make_identifier(lexer, .TOKEN_DIRECTIVE);
}
make_string :: (lexer : *Lexer) -> *Token {
token : *Token = new_token(lexer, .TOKEN_STRING);
name : string = .{ count = token.length,
data = *lexer.input.data[lexer.start] };
token.string_value = name;
return token;
}
make_identifier :: (lexer : *Lexer, kind : Token_Kind) -> *Token {
token : *Token = new_token(lexer, kind);
@@ -423,6 +430,17 @@ scan_next_token :: (lexer : *Lexer) -> *Token {
if is_digit(c) return number(lexer);
if c == {
case #char "\""; {
c = advance(lexer);
lexer.start = lexer.cursor;
while c != #char "\"" {
c = advance(lexer);
}
lexer.cursor -= 1;
tok := make_string(lexer);
advance(lexer);
return tok;
}
case #char "+"; {
if match_character(lexer, #char "=") return make_token(lexer, .TOKEN_PLUSEQUALS);
return make_token(lexer, .TOKEN_PLUS);
@@ -504,8 +522,6 @@ scan_next_token :: (lexer : *Lexer) -> *Token {
// return error_token(lexer, tprint("Invalid token: %", s));
}
lex :: (result : *Compile_Result) {
if result.had_error {
return;