return c >= '0' && c <= '9';
}
-char *tokbuf[L_LSL_TOK_MAX];
+char tokbuf[L_LSL_TOK_MAX];
const char* l_lsl_next_token(struct l_lsl_vm *v, const char *code,
u32 *token_len) {
char c = 0;
c = code[v->lex_pos];
if (l_lsl_isnum(c)) {
+ /* decimal number */
+ while (l_lsl_isnum(c)) {
+ tokbuf[*token_len] = c;
+ *token_len += 1;
+ c = code[++v->lex_pos];
+ }
} else {
u_log(U_LOG_CRIT, "unknown char: %c\n", c);
return LRTS_NULL;
}
- return LRTS_NULL;
+ tokbuf[*token_len] = '\0';
+
+ return tokbuf;
}
struct l_lsl_value l_lsl_compile_file(struct l_lsl_vm *v, const char *path) {
struct l_lsl_value val = l_lsl_value_init();
const char *src = u_file_read(path);
u32 token_len;
+ const char *token;
u32 prev_lex_pos = v->lex_pos;
const char *prev_file_name = v->path;
return val;
}
- u_printf("%s\n", src);
-
- l_lsl_next_token(v, src, &token_len);
-
+ token = l_lsl_next_token(v, src, &token_len);
+ u_printf("%s\n", token);
u_free((void*)src);