8000 null is now a type instead of a global object. · codepongo/TyranScript@4def986 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4def986

Browse files
committed
null is now a type instead of a global object.
1 parent 49b1893 commit 4def986

File tree

13 files changed

+870
-823
lines changed

13 files changed

+870
-823
lines changed

src/include/tyranscript/parser/tyran_parser.h

Lines changed: 52 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* Tokens. */
21
#define TYRAN_TOKEN_STRING 258
32
#define TYRAN_TOKEN_IDENTIFIER 259
43
#define TYRAN_TOKEN_IF 260
@@ -23,58 +22,58 @@
2322
#define TYRAN_TOKEN_TRUE 279
2423
#define TYRAN_TOKEN_FALSE 280
2524
#define TYRAN_TOKEN_THIS 281
26-
#define TYRAN_TOKEN_BRACKET_RIGHT 282
27-
#define TYRAN_TOKEN_PARENTHESES_RIGHT 283
28-
#define TYRAN_TOKEN_EOL 284
29-
#define TYRAN_TOKEN_BLOCK_START 285
30-
#define TYRAN_TOKEN_BLOCK_END 286
31-
#define TYRAN_TOKEN_COMMA 287
32-
#define comma_precedence 288
33-
#define TYRAN_TOKEN_DIVIDE_ASSIGNMENT 289
34-
#define TYRAN_TOKEN_BITWISE_XOR_ASSIGNMENT 290
35-
#define TYRAN_TOKEN_BITWISE_OR_ASSIGNMENT 291
36-
#define TYRAN_TOKEN_BITWISE_AND_ASSIGNMENT 292
37-
#define TYRAN_TOKEN_UNSIGNED_SHIFT_RIGHT_ASSIGNMENT 293
38-
#define TYRAN_TOKEN_SHIFT_RIGHT_ASSIGNMENT 294
39-
#define TYRAN_TOKEN_SHIFT_LEFT_ASSIGNMENT 295
40-
#define TYRAN_TOKEN_MODULUS_ASSIGNMENT 296
41-
#define TYRAN_TOKEN_MULTIPLY_ASSIGNMENT 297
42-
#define TYRAN_TOKEN_SUBTRACT_ASSIGNMENT 298
43-
#define TYRAN_TOKEN_ADD_ASSIGNMENT 299
44-
#define TYRAN_TOKEN_ASSIGNMENT 300
45-
#define TYRAN_TOKEN_COLON 301
46-
#define TYRAN_TOKEN_QUESTION_MARK 302
47-
#define TYRAN_TOKEN_OR 303
48-
#define TYRAN_TOKEN_AND 304
49-
#define TYRAN_TOKEN_BITWISE_OR 305
50-
#define TYRAN_TOKEN_BITWISE_XOR 306
51-
#define TYRAN_TOKEN_BITWISE_AND 307
52-
#define TYRAN_TOKEN_STRICT_NOT_EQUAL 308
53-
#define TYRAN_TOKEN_STRICT_EQUAL 309
54-
#define TYRAN_TOKEN_NOT_EQUAL 310
55-
#define TYRAN_TOKEN_EQUAL 311
56-
#define TYRAN_TOKEN_GREATER_EQUAL 312
57-
#define TYRAN_TOKEN_LESS_EQUAL 313
58-
#define TYRAN_TOKEN_LESS 314
59-
#define TYRAN_TOKEN_GREATER 315
60-
#define TYRAN_TOKEN_SHIFT_RIGHT_UNSIGNED 316
61-
#define TYRAN_TOKEN_SHIFT_RIGHT 317
62-
#define TYRAN_TOKEN_SHIFT_LEFT 318
63-
#define TYRAN_TOKEN_SUBTRACT 319
64-
#define TYRAN_TOKEN_ADD 320
65-
#define TYRAN_TOKEN_MODULUS 321
66-
#define TYRAN_TOKEN_DIVIDE 322
67-
#define TYRAN_TOKEN_MULTIPLY 323
68-
#define TYRAN_TOKEN_BITWISE_NOT 324
69-
#define TYRAN_TOKEN_DECREASE 325
70-
#define TYRAN_TOKEN_INCREASE 326
71-
#define TYRAN_TOKEN_NOT 327
72-
#define TYRAN_TOKEN_NEGATIVE 328
73-
#define TYRAN_TOKEN_PARENTHESES_LEFT 329
74-
#define TYRAN_TOKEN_BRACKET_LEFT 330
75-
#define TYRAN_TOKEN_MEMBER 331
76-
#define function_precedence 332
77-
25+
#define TYRAN_TOKEN_NULL 282
26+
#define TYRAN_TOKEN_BRACKET_RIGHT 283
27+
#define TYRAN_TOKEN_PARENTHESES_RIGHT 284
28+
#define TYRAN_TOKEN_EOL 285
29+
#define TYRAN_TOKEN_BLOCK_START 286
30+
#define TYRAN_TOKEN_BLOCK_END 287
31+
#define TYRAN_TOKEN_COMMA 288
32+
#define comma_precedence 289
33+
#define TYRAN_TOKEN_DIVIDE_ASSIGNMENT 290
34+
#define TYRAN_TOKEN_BITWISE_XOR_ASSIGNMENT 291
35+
#define TYRAN_TOKEN_BITWISE_OR_ASSIGNMENT 292
36+
#define TYRAN_TOKEN_BITWISE_AND_ASSIGNMENT 293
37+
#define TYRAN_TOKEN_UNSIGNED_SHIFT_RIGHT_ASSIGNMENT 294
38+
#define TYRAN_TOKEN_SHIFT_RIGHT_ASSIGNMENT 295
39+
#define TYRAN_TOKEN_SHIFT_LEFT_ASSIGNMENT 296
40+
#define TYRAN_TOKEN_MODULUS_ASSIGNMENT 297
41+
#define TYRAN_TOKEN_MULTIPLY_ASSIGNMENT 298
42+
#define TYRAN_TOKEN_SUBTRACT_ASSIGNMENT 299
43+
#define TYRAN_TOKEN_ADD_ASSIGNMENT 300
44+
#define TYRAN_TOKEN_ASSIGNMENT 301
45+
#define TYRAN_TOKEN_COLON 302
46+
#define TYRAN_TOKEN_QUESTION_MARK 303
47+
#define TYRAN_TOKEN_OR 304
48+
#define TYRAN_TOKEN_AND 305
49+
#define TYRAN_TOKEN_BITWISE_OR 306
50+
#define TYRAN_TOKEN_BITWISE_XOR 307
51+
#define TYRAN_TOKEN_BITWISE_AND 308
52+
#define TYRAN_TOKEN_STRICT_NOT_EQUAL 309
53+
#define TYRAN_TOKEN_STRICT_EQUAL 310
54+
#define TYRAN_TOKEN_NOT_EQUAL 311
55+
#define TYRAN_TOKEN_EQUAL 312
56+
#define TYRAN_TOKEN_GREATER_EQUAL 313
57+
#define TYRAN_TOKEN_LESS_EQUAL 314
58+
#define TYRAN_TOKEN_LESS 315
59+
#define TYRAN_TOKEN_GREATER 316
60+
#define TYRAN_TOKEN_SHIFT_RIGHT_UNSIGNED 317
61+
#define TYRAN_TOKEN_SHIFT_RIGHT 318
62+
#define TYRAN_TOKEN_SHIFT_LEFT 319
63+
#define TYRAN_TOKEN_SUBTRACT 320
64+
#define TYRAN_TOKEN_ADD 321
65+
#define TYRAN_TOKEN_MODULUS 322
66+
#define TYRAN_TOKEN_DIVIDE 323
67+
#define TYRAN_TOKEN_MULTIPLY 324
68+
#define TYRAN_TOKEN_BITWISE_NOT 325
69+
#define TYRAN_TOKEN_DECREASE 326
70+
#define TYRAN_TOKEN_INCREASE 327
71+
#define TYRAN_TOKEN_NOT 328
72+
#define TYRAN_TOKEN_NEGATIVE 329
73+
#define TYRAN_TOKEN_PARENTHESES_LEFT 330
74+
#define TYRAN_TOKEN_BRACKET_LEFT 331
75+
#define TYRAN_TOKEN_MEMBER 332
76+
#define function_precedence 333
7877
#define YYSTYPE void *
7978

8079
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED

src/include/tyranscript/tyran_config.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ typedef unsigned short tyran_uint16;
1919
#define TYRAN_MALLOC(count) tyran_malloc(count);
2020
#define tyran_memcpy memcpy
2121
#define tyran_memcmp memcmp
22+
#define tyran_memset_type(T, V) memset(T, V, sizeof(*T))
23+
2224

2325
#if defined WIN32
2426
#pragma warning( disable : 4100 )
@@ -53,6 +55,6 @@ typedef unsigned short tyran_uint16;
5355
#define TYRAN_SOFT_ERROR(...) TYRAN_LOG(__VA_ARGS__);
5456
#define TYRAN_BREAK abort()
5557
#define TYRAN_ERROR(...) TYRAN_LOG(__VA_ARGS__); TYRAN_BREAK;
56-
#define TYRAN_ASSERT(expression, description) if (!(expression)) { TYRAN_LOG(description); TYRAN_BREAK; }
58+
#define TYRAN_ASSERT(expression, ...) if (!(expression)) { TYRAN_LOG(__VA_ARGS__); TYRAN_BREAK; }
5759

5860
#endif

src/include/tyranscript/tyran_opcode_ids.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ typedef enum {
88
TYRAN_OPCODE_PUSH_STRING,
99
TYRAN_OPCODE_PUSH_VARIABLE,
1010
TYRAN_OPCODE_PUSH_UNDEFINED,
11+
TYRAN_OPCODE_PUSH_NULL,
1112
TYRAN_OPCODE_PUSH_BOOLEAN,
1213
TYRAN_OPCODE_PUSH_FUNCTION,
1314
TYRAN_OPCODE_PUSH_SCOPE,

src/include/tyranscript/tyran_opcodes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ struct tyran_opcodes* tyran_opcodes_insert_push_number(const double *v);
3333
struct tyran_opcodes* tyran_opcodes_insert_push_string(const tyran_string* str);
3434
struct tyran_opcodes* tyran_opcodes_insert_push_variable(const tyran_string* variable_name);
3535
struct tyran_opcodes* tyran_opcodes_insert_push_undefined();
36+
struct tyran_opcodes* tyran_opcodes_insert_push_null();
3637
struct tyran_opcodes* tyran_opcodes_insert_push_boolean(int v);
3738
struct tyran_opcodes* tyran_opcodes_insert_push_function(const struct tyran_function* func);
3839
struct tyran_opcodes* tyran_opcodes_insert_push_scope();

src/include/tyranscript/tyran_value.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ typedef struct tyran_value {
7171
(v).type = TYRAN_VALUE_TYPE_UNDEFINED; \
7272
}
7373

74+
#define tyran_value_set_null(v) { \
75+
(v).type = TYRAN_VALUE_TYPE_NULL; \
76+
}
77+
78+
7479
#define tyran_value_set_variable(v, var) { \
7580
(v).type = TYRAN_VALUE_TYPE_VARIABLE; \
7681
(v).data.variable = var; \

src/lib/debug/tyran_print_opcodes.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const char* tyran_opcode_names[100] = {
1212
"PUSH_STRING",
1313
"PUSH_VARIABLE",
1414
"PUSH_UNDEFINED",
15+
"PUSH_NULL",
1516
"PUSH_BOOLEAN",
1617
"PUSH_FUNCTION",
1718
"PUSH_SCOPE",

src/lib/parser/tyran_lexer.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ static int tyran_lexer_get_keyword_token(const char* temp_string_buffer)
5050
{ "new", TYRAN_TOKEN_NEW },
5151
{ "delete", TYRAN_TOKEN_DELETE },
5252
{ "undefined", TYRAN_TOKEN_UNDEFINED },
53+
{ "null", TYRAN_TOKEN_NULL },
5354
{ "true", TYRAN_TOKEN_TRUE },
5455
{ "false", TYRAN_TOKEN_FALSE },
5556
{ "this", TYRAN_TOKEN_THIS },

0 commit comments

Comments
 (0)
0