Files
corelang/program.kl
2022-06-07 12:10:20 +02:00

41 lines
824 B
Plaintext

#foreign printf :: (str: String, ...)
Token :: struct
kind: U8
str: *U8
len: S64
Kind :: enum
Number
kind_name :: (kind: U8): String
if kind == Token.Kind.Number
return "<Number>"
else
return "<Unknown>"
is_numeric :: (c: U8): Bool
result := c >= '0 && c <= '9
return result
entry :: ()
string_to_lex := "Identifier 2425525 Not_Number"
token_array: [32]Token
token_count: S64 = 0
t: Token
for i := 0, i < string_to_lex.len, i+=1
if is_numeric(string_to_lex.str[i])
t.kind = Token.Kind.Number
t.str = &string_to_lex.str[i]
t.len = i
for is_numeric(string_to_lex.str[i])
i+=1
t.len = i - t.len
token_array[token_count++] = t
for i := 0, i < token_count, i++
tk := &token_array[i]
printf("%.*s", cast(tk.len: S32), tk.str)