#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 "" else return "" is_numeric :: (c: U8): Bool result := c >= '0 && c <= '9 return result print_tokens :: (tokens: []Token) for i := 0, i < tokens.len, i++ t := &tokens[i] printf("%d. %.*s", i, cast(t.len: S32), t.str) 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 print_tokens(token_array)