Restructure
This commit is contained in:
43
programs/program.kl
Normal file
43
programs/program.kl
Normal file
@@ -0,0 +1,43 @@
|
||||
#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
|
||||
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user