commit 259bf35
uint
·
2026-10-23 21:57:37 +0000 UTC
parent 04a83e0
Rename types, add value types
M
expl.c
+10,
-10
1@@ -30,7 +30,7 @@ expression(parser* p)
2 skipspace(p);
3 switch (p->src[p->pos]) {
4 case '"':
5- return value(p, EXPL_STRING);
6+ return value(p, EXPL_TYPE_STRING);
7 case '(':
8 return list(p);
9 case ')':
10@@ -38,7 +38,7 @@ expression(parser* p)
11 p->err = EXPL_ERR_UNEXPECTED_TOKEN;
12 return NULL;
13 default:
14- return value(p, EXPL_ATOM);
15+ return value(p, EXPL_TYPE_ATOM);
16 }
17 }
18
19@@ -50,7 +50,7 @@ list(parser* p)
20
21 advance(p);
22
23- node = newnode(EXPL_LIST);
24+ node = newnode(EXPL_TYPE_LIST);
25 if (!node) {
26 p->err = EXPL_ERR_OUT_OF_MEMORY;
27 return NULL;
28@@ -86,12 +86,12 @@ value(parser* p, expl_type type)
29 expl_node* node = NULL;
30 size_t start = 0;
31
32- if (type == EXPL_STRING)
33+ if (type == EXPL_TYPE_STRING)
34 advance(p);
35
36 start = p->pos;
37
38- if (type == EXPL_STRING) {
39+ if (type == EXPL_TYPE_STRING) {
40 while (!current_char(p, '"') && !current_char(p, '\0')) {
41 if (current_char(p, '\\') && p->src[p->pos + 1])
42 advance(p);
43@@ -110,7 +110,7 @@ value(parser* p, expl_type type)
44 advance(p);
45 }
46
47- if (start == p->pos && type == EXPL_ATOM) {
48+ if (start == p->pos && type == EXPL_TYPE_ATOM) {
49 p->err = EXPL_ERR_EXPECTED_ATOM;
50 return NULL;
51 }
52@@ -128,7 +128,7 @@ value(parser* p, expl_type type)
53 return NULL;
54 }
55
56- if (type == EXPL_STRING)
57+ if (type == EXPL_TYPE_STRING)
58 advance(p);
59
60 return node;
61@@ -227,13 +227,13 @@ expl_print(const expl_node* node, int depth)
62 printf(EXPL_SPACES);
63
64 switch (node->type) {
65- case EXPL_ATOM:
66+ case EXPL_TYPE_ATOM:
67 printf("ATOM: %s\n", node->value);
68 break;
69- case EXPL_STRING:
70+ case EXPL_TYPE_STRING:
71 printf("STRING: %s\n", node->value);
72 break;
73- case EXPL_LIST:
74+ case EXPL_TYPE_LIST:
75 printf("LIST:\n");
76 expl_print(node->child, depth + 1);
77 break;
M
expl.h
+14,
-3
1@@ -6,13 +6,24 @@
2 #endif
3
4 typedef enum {
5- EXPL_ATOM,
6- EXPL_STRING,
7- EXPL_LIST,
8+ EXPL_TYPE_ATOM,
9+ EXPL_TYPE_STRING,
10+ EXPL_TYPE_LIST,
11
12 EXPL_TYPE_COUNT
13 } expl_type;
14
15+typedef enum {
16+ EXPL_VALUE_NIL,
17+ EXPL_VALUE_INTGER,
18+ EXPL_VALUE_FLOAT,
19+ EXPL_VALUE_STRING,
20+ EXPL_VALUE_FUNCTION,
21+ EXPL_VALUE_NATIVE,
22+
23+ EXPL_VALUE_COUNT
24+} expl_value;
25+
26 typedef enum {
27 EXPL_ERR_NONE,
28 EXPL_ERR_EXPECTED_ATOM,