Working on actually making a program
This commit is contained in:
23
program.kl
23
program.kl
@@ -1,10 +1,20 @@
|
||||
|
||||
#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
|
||||
@@ -12,20 +22,19 @@ is_numeric :: (c: U8): Bool
|
||||
entry :: ()
|
||||
string_to_lex := "Identifier 2425525 Not_Number"
|
||||
token_array: [32]Token
|
||||
token_count: U32
|
||||
|
||||
printf("test %d", 32)
|
||||
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
|
||||
token_count+=1
|
||||
|
||||
|
||||
|
||||
for i := 0, i < token_count, i++
|
||||
tk := &token_array[i]
|
||||
printf("%.*s", cast(tk.len: S32), tk.str)
|
||||
|
||||
Reference in New Issue
Block a user