commit 259bf35

uint  ·  2026-10-23 21:57:37 +0000 UTC
parent 04a83e0
Rename types, add value types
2 files changed,  +24, -13
M expl.c
M expl.h
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,