commit 03db476

uint  ·  2026-10-23 20:34:54 +0000 UTC
parent 50483fa
Use parser_current_char macro
1 files changed,  +16, -12
M expl.c
M expl.c
+16, -12
 1@@ -5,6 +5,8 @@
 2 
 3 #include "expl.h"
 4 
 5+#define parser_current_char(p, c) ((p)->src[(p)->pos] == (c))
 6+
 7 typedef struct {
 8 	const char* src;
 9 	size_t      pos;
10@@ -17,17 +19,18 @@ static expl_node* node_new(expl_type type);
11 static void node_free(expl_node* node);
12 static void skip_whitespace(parser* p);
13 
14-static expl_node* atom(parser* p)
15+static expl_node*
16+atom(parser* p)
17 {
18 	size_t start = p->pos;
19 	expl_node* node = NULL;
20-
21-	while (p->src[p->pos] &&
22-	       !isspace((unsigned char)p->src[p->pos]) &&
23-	       p->src[p->pos] != '(' &&
24-	       p->src[p->pos] != ')' &&
25-	       p->src[p->pos] != '"' &&
26-	       p->src[p->pos] != ';')
27+	
28+	while (!parser_current_char(p, '(') &&
29+	       !parser_current_char(p, ')') &&
30+	       !parser_current_char(p, '"') &&
31+	       !parser_current_char(p, ';') &&
32+	       !parser_current_char(p, '\0') &&
33+	       !isspace((unsigned char)p->src[p->pos]))
34 		p->pos++;
35 	
36 	if (start == p->pos) {
37@@ -94,12 +97,13 @@ node_free(expl_node* node)
38 	free(node);
39 }
40 
41-static void skip_whitespace(parser* p)
42+static void
43+skip_whitespace(parser* p)
44 {
45-	while (isspace((unsigned char)p->src[p->pos]) || p->src[p->pos] == ';') {
46+	while (isspace((unsigned char)p->src[p->pos]) || parser_current_char(p, ';')) {
47 		/* comment */
48-		if (p->src[p->pos] == ';') {
49-			while (p->src[p->pos] != '\n' && p->src[p->pos] != '\0')
50+		if (parser_current_char(p, ';')) {
51+			while (!parser_current_char(p, '\n') && !parser_current_char(p, '\0'))
52 				p->pos++;
53 		}
54