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