scripting: reworked tokens
authorLukas Krickl <lukas@krickl.dev>
Tue, 10 Mar 2026 07:12:48 +0000 (08:12 +0100)
committerLukas Krickl <lukas@krickl.dev>
Tue, 10 Mar 2026 07:12:48 +0000 (08:12 +0100)
src/l_lsl.c
src/l_lsl.h

index 4c497d65a032b78e799e506ba71c32e41c817fb8..be76603c009db3328d82a9799f436621f63d143b 100644 (file)
@@ -24,10 +24,23 @@ enum l_lsl_error l_lsl_compile_file(struct l_lsl_vm *v, const char *path) {
        return err;
 }
 
+enum l_lsl_error l_lsl_run(struct l_lsl_vm *v, const char *entry) {
+       enum l_lsl_error err = L_LSL_ERR_OK;
+       LRTS_UNUSED(v);
+       LRTS_UNUSED(entry);
+
+       return err;
+}
+
 enum l_lsl_error l_lsl_exec(struct l_lsl_vm *v, const char *path) {
        enum l_lsl_error err = L_LSL_ERR_OK;
 
        err = l_lsl_compile_file(v, path);
+       if (err) {
+               return err;
+       }
+
+       err = l_lsl_run(v, LRTS_NULL);
 
        return err;
 }
index 59822019bb3287a625ea6647eca37056e263196c..249d8dcaee5b58db7584fdd43954f32c55ece599 100644 (file)
@@ -8,73 +8,19 @@
  */
 
 /* special tokens */
-
-#define L_KW_FUNCTION "fn"
-#define L_KW_IF "if"
-#define L_KW_WHILE "while"
-#define L_KW_FOR "for"
-#define L_KW_DO "do"
-
-#define L_TOK_OPEN_SCOPE "{"
-#define L_TOK_CLOSE_SCOPE "}"
-#define L_TOK_OPEN_PAREN "("
-#define L_TOK_CLOSE_PAREN ")"
-#define L_TOK_OPEN_IDX "["
-#define L_TOK_CLOSE_IDX "]"
-#define L_TOK_COMMA ","
-#define L_TOK_SEMICOLON ";"
-#define L_TOK_DOT "."
-#define L_TOK_DQUOTE "\""
-#define L_TOK_SQUOTE "'"
-#define L_TOK_ASSIGN "="
-
-#define L_OP_PLUS "+"
-#define L_OP_MINUS "-"
-#define L_OP_MUL "*"
-#define L_OP_DIV "/"
-#define L_OP_MOD "%"
-#define L_OP_EQUAL "=="
-#define L_OP_NOT_EQUAL "!="
-#define L_OP_NOT "!"
-#define L_OP_BIT_XOR "^"
-#define L_OP_BIT_OR "|"
-#define L_OP_BIT_AND "&"
-#define L_OP_BIT_NOT "~"
-#define L_OP_OR "||"
-#define L_OP_AND "&&"
+#define L_LWL_TOK_STR_LPAREN "("
+#define L_LWL_TOK_STR_RPAREN ")"
+#define L_LWL_TOK_STR_DQUOTE "\""
+#define L_LWL_TOK_STR_SQUOTE "\'"
 
 enum l_token_type {
-       L_TOKT_FN,
-       L_TOKT_IF,
-       L_TOKT_WHILE,
-       L_TOKT_FOR,
-       L_TOKT_DO,
-       L_TOKT_OPEN_SCOPE,
-       L_TOKT_CLOSE_SCOPE, 
-       L_TOKT_OPEN_PAREN,
-       L_TOKT_CLOSE_PAREN,
-       L_TOKT_OPEN_IDX,
-       L_TOKT_CLOSE_IDX,
-       L_TOKT_COMMA,
-       L_TOKT_SEMICLONON,
-       L_TOKT_DOT,
-       L_TOKT_DQUOTE,
-       L_TOKT_SQUOTE,
-       L_TOKT_ASSIGN,
-       L_TOKT_OP_PLUS,
-       L_TOKT_OP_MINUS,
-       L_TOKT_OP_DIV,
-       L_TOKT_OP_MUL,
-       L_TOKT_OP_MOD,
-       L_TOKT_OP_EQUAL,
-       L_TOKT_OP_NOT_EQUAL,
-       L_TOKT_OP_NOT,
-       L_TOKT_OP_BIT_XOR,
-       L_TOKT_OP_BIT_OR,
-       L_TOKT_OP_BIT_AND,
-       L_TOKT_OP_BIT_NOT,
-       L_TOKT_OP_OR,
-       L_TOKT_OP_AND
+       L_LWL_TOK_LPAREN,
+       L_LWL_TOK_RPAREN,
+       L_LWL_TOK_DQUOTE,
+       L_LWL_TOK_SQUOTE,
+       L_LWL_TOK_NUMBER,
+       L_LWL_TOK_STRING,
+       L_LWL_TOK_IDENT
 };
 
 enum l_lsl_flags {
@@ -124,6 +70,7 @@ struct l_lsl_tableent {
         *      rc should decrease when
         *      - a function returns where the table is assigned
         *      - a table entry is re-sassigned to a different reference
+        *      - a table that contains this entry as a member is freed
         */
        u32 rc;
        enum l_lsl_data_type type;