scripting: Added token types
authorLukas Krickl <lukas@krickl.dev>
Sat, 7 Mar 2026 22:20:38 +0000 (23:20 +0100)
committerLukas Krickl <lukas@krickl.dev>
Sat, 7 Mar 2026 22:20:38 +0000 (23:20 +0100)
src/l_lsl.h

index 71fb798392851044674230b6208cc629e956561f..d2a3a30c48b9dbb42fa8e2ba22b774fd57ec11e6 100644 (file)
@@ -7,6 +7,76 @@
  * in-game scripting interpreter
  */
 
+/* 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 "&&"
+
+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
+};
+
 enum l_lsl_flags {
        L_LSL_F_NONE = 0
 };