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;
}
*/
/* 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 {
* 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;