commit da6a6faac23dc2e0b9a498cf6a43e10a81efbc6d
parent 776cd9145f657d6bd4a3ae0182adadd9f5e0bb87
Author: citbl <citbl@citbl.org>
Date: Sat, 23 May 2026 17:59:55 +1000
wip
Diffstat:
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/mtcl/main.lua b/mtcl/main.lua
@@ -11,7 +11,9 @@ function read_ident(start, src)
local Z = string.byte("Z")
local zero = string.byte("0")
local nine = string.byte("9")
- for i = start, #src do
+ local adv = 0
+ local i = start
+ while i <= #src do
local c = src:sub(i, i):byte()
if
not (c >= a and c <= z)
@@ -20,13 +22,14 @@ function read_ident(start, src)
then
break
end
- word = word .. string.char(c)
+ i = i + 1
end
+ word = src:sub(start, i - 1)
print(word)
+ return word, i
end
function lex(src)
- local i = 1
local function skip() end
local whitespacers = {
["\t"] = skip,
@@ -34,16 +37,18 @@ function lex(src)
["\n"] = skip,
[" "] = skip,
}
-
- for i = 1, #src do
+ local i = 1
+ while i <= #src do
local c = src:sub(i, i)
local char_fx = whitespacers[c]
if char_fx then
char_fx()
else
- read_ident(i, src)
+ word, i = read_ident(i, src)
+ -- add word to tokens
end
+ i = i + 1
end
end