diff options
author | kdx <kikoodx@paranoici.org> | 2023-12-19 04:53:51 +0100 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-12-19 04:53:51 +0100 |
commit | cb758dec7115ab4e758871b3cf974f67ae4d69b9 (patch) | |
tree | 207430d93a4f0a7b7035c71500b0a87fbbece7b7 | |
parent | b8a93201041c8b0013bb4f859188c5cce62e8238 (diff) | |
download | o7c-cb758dec7115ab4e758871b3cf974f67ae4d69b9.tar.gz |
simplify skip usage
-rw-r--r-- | inc/token.h | 2 | ||||
-rw-r--r-- | src/parser/fncall.c | 4 | ||||
-rw-r--r-- | src/parser/for.c | 2 | ||||
-rw-r--r-- | src/parser/function.c | 8 | ||||
-rw-r--r-- | src/parser/ifelse.c | 2 | ||||
-rw-r--r-- | src/parser/let.c | 6 | ||||
-rw-r--r-- | src/parser/litstruct.c | 8 | ||||
-rw-r--r-- | src/parser/primary.c | 4 | ||||
-rw-r--r-- | src/parser/scope.c | 4 | ||||
-rw-r--r-- | src/parser/structdef.c | 12 | ||||
-rw-r--r-- | src/parser/type_.c | 4 | ||||
-rw-r--r-- | src/parser/typealias.c | 6 | ||||
-rw-r--r-- | src/parser/unegation.c | 2 | ||||
-rw-r--r-- | src/parser/uniondef.c | 8 | ||||
-rw-r--r-- | src/token.c | 14 |
15 files changed, 43 insertions, 43 deletions
diff --git a/inc/token.h b/inc/token.h index e9ad665..be7acf6 100644 --- a/inc/token.h +++ b/inc/token.h @@ -22,6 +22,6 @@ const char *toktype_str(TokenType t); bool is(Token tok, TokenType t); bool equal(Token tok, const char *op); void expect(Token tok, TokenType type); -SliceToken skip(SliceToken s, const char *op); +void skip(SliceToken *s, const char *op); void semicolon(SliceToken *s); void next(SliceToken *s); diff --git a/src/parser/fncall.c b/src/parser/fncall.c index 16b4ee9..3ec0eb5 100644 --- a/src/parser/fncall.c +++ b/src/parser/fncall.c @@ -9,7 +9,7 @@ fncall(SliceToken *s) if (equal(s->loc[0], "(")) { next(s); node = new_binary(NOD_FNCALL, node, fnargs(s, expr), s->loc[-1]); - *s = skip(*s, ")"); + skip(s, ")"); continue; } @@ -24,7 +24,7 @@ fncall(SliceToken *s) node = new_binary(NOD_DEREF, node, nullptr, s->loc[-1]); if (!equal(s->loc[0], "]")) node->Rhs = expr(s); - *s = skip(*s, "]"); + skip(s, "]"); continue; } diff --git a/src/parser/for.c b/src/parser/for.c index c561918..f0e8c20 100644 --- a/src/parser/for.c +++ b/src/parser/for.c @@ -3,7 +3,7 @@ Node * forloop(SliceToken *s) { - *s = skip(*s, "for"); + skip(s, "for"); auto node = node_new(NOD_FOR, s->loc[-1]); node->Lhs = expr(s); diff --git a/src/parser/function.c b/src/parser/function.c index 5a652bc..62066f3 100644 --- a/src/parser/function.c +++ b/src/parser/function.c @@ -3,7 +3,7 @@ Node * function(SliceToken *s) { - *s = skip(*s, "fn"); + skip(s, "fn"); expect(s->loc[0], TOK_WORD); auto node = node_new(NOD_FN, s->loc[0]); @@ -16,14 +16,14 @@ function(SliceToken *s) next(s); while (is(s->loc[0], TOK_WORD)) { cur = cur->next = variable(s); - *s = skip(*s, ":"); + skip(s, ":"); cur->type = NOD_ARG; cur->Lhs = type(s); if (!equal(s->loc[0], ",")) break; next(s); } - *s = skip(*s, ")"); + skip(s, ")"); } if (equal(s->loc[0], "->")) { @@ -33,7 +33,7 @@ function(SliceToken *s) node->Lhs = head.next; node->Rhs = expr(s); - *s = skip(*s, ";"); + skip(s, ";"); return node; } diff --git a/src/parser/ifelse.c b/src/parser/ifelse.c index 6e13fba..57df79a 100644 --- a/src/parser/ifelse.c +++ b/src/parser/ifelse.c @@ -3,7 +3,7 @@ Node * ifelse(SliceToken *s) { - *s = skip(*s, "if"); + skip(s, "if"); auto node = node_new(NOD_IFELSE, s->loc[-1]); node->Lhs = expr(s); diff --git a/src/parser/let.c b/src/parser/let.c index 2f165af..7301d28 100644 --- a/src/parser/let.c +++ b/src/parser/let.c @@ -3,16 +3,16 @@ Node * let(SliceToken *s) { - *s = skip(*s, "let"); + skip(s, "let"); auto node = variable(s); node->type = NOD_LET; if (equal(s->loc[0], ":")) { *s = SliceToken_next(*s); - //*s = skip(*s, ":"); + //skip(s, ":"); node->Lhs = type(s); } - *s = skip(*s, "="); + skip(s, "="); node->Rhs = expr(s); return node; diff --git a/src/parser/litstruct.c b/src/parser/litstruct.c index f739e2a..ef8a937 100644 --- a/src/parser/litstruct.c +++ b/src/parser/litstruct.c @@ -6,21 +6,21 @@ litstruct(SliceToken *s) expect(s->loc[0], TOK_WORD); auto node = type(s); node->type = NOD_LITSTRUCT; - *s = skip(*s, "#"); - *s = skip(*s, "{"); + skip(s, "#"); + skip(s, "{"); Node head = {0}; Node *cur = &head; while (is(s->loc[0], TOK_WORD)) { cur = cur->next = variable(s); - *s = skip(*s, ":"); + skip(s, ":"); cur->type = NOD_ARG; cur->Lhs = type(s); if (!equal(s->loc[0], ",")) break; next(s); } - *s = skip(*s, "}"); + skip(s, "}"); node->Lhs = head.next; return node; diff --git a/src/parser/primary.c b/src/parser/primary.c index a2bf98a..a645c2b 100644 --- a/src/parser/primary.c +++ b/src/parser/primary.c @@ -35,9 +35,9 @@ primary(SliceToken *s) return unegation(s); if (equal(s->loc[0], "(")) { - *s = skip(*s, "("); + skip(s, "("); Node *node = expr(s); - *s = skip(*s, ")"); + skip(s, ")"); return node; } diff --git a/src/parser/scope.c b/src/parser/scope.c index 5dc6563..7c78a2b 100644 --- a/src/parser/scope.c +++ b/src/parser/scope.c @@ -3,7 +3,7 @@ Node * scope(SliceToken *s) { - *s = skip(*s, "{"); + skip(s, "{"); Node *node = node_new(NOD_SCOP, s->loc[-1]); Node head = {0}; @@ -36,6 +36,6 @@ scope(SliceToken *s) } node->Lhs = head.next; - *s = skip(*s, "}"); + skip(s, "}"); return node; } diff --git a/src/parser/structdef.c b/src/parser/structdef.c index 7b9794d..2904110 100644 --- a/src/parser/structdef.c +++ b/src/parser/structdef.c @@ -3,7 +3,7 @@ Node * structdef(SliceToken *s) { - *s = skip(*s, "struct"); + skip(s, "struct"); expect(s->loc[0], TOK_WORD); auto node = node_new(NOD_UNION, s->loc[0]); @@ -16,23 +16,23 @@ structdef(SliceToken *s) next(s); } - *s = skip(*s, "{"); + skip(s, "{"); Node head = {0}; Node *cur = &head; while (is(s->loc[0], TOK_WORD)) { cur = cur->next = node_new(NOD_LET, s->loc[0]); *s = SliceToken_next(*s); - *s = skip(*s, ":"); + skip(s, ":"); cur->Lhs = type(s); - *s = skip(*s, "="); + skip(s, "="); node->Rhs = expr(s); if (!equal(s->loc[0], ",")) break; *s = SliceToken_next(*s); } - *s = skip(*s, "}"); - *s = skip(*s, ";"); + skip(s, "}"); + skip(s, ";"); assert(head.next != nullptr); node->Rhs = head.next; diff --git a/src/parser/type_.c b/src/parser/type_.c index 18098c2..0f410ea 100644 --- a/src/parser/type_.c +++ b/src/parser/type_.c @@ -10,9 +10,9 @@ type(SliceToken *s) if (ptr_depth && equal(s->loc[ptr_depth], "fn")) { auto node = node_new(NOD_TYPE, s->loc[ptr_depth]); *s = SliceToken_sub(*s, ptr_depth + 1, -1); - *s = skip(*s, "("); + skip(s, "("); node->Lhs = fnargs(s, type); - *s = skip(*s, ")"); + skip(s, ")"); if (equal(s->loc[0], "->")) { next(s); node->Rhs = type(s); diff --git a/src/parser/typealias.c b/src/parser/typealias.c index fef4478..3d908f3 100644 --- a/src/parser/typealias.c +++ b/src/parser/typealias.c @@ -3,12 +3,12 @@ Node * typealias(SliceToken *s) { - *s = skip(*s, "alias"); + skip(s, "alias"); expect(s->loc[0], TOK_WORD); auto node = node_new(NOD_ALIAS, s->loc[0]); *s = SliceToken_next(*s); - *s = skip(*s, "="); + skip(s, "="); node->Lhs = type(s); - *s = skip(*s, ";"); + skip(s, ";"); return node; } diff --git a/src/parser/unegation.c b/src/parser/unegation.c index 50dc20a..b82ff39 100644 --- a/src/parser/unegation.c +++ b/src/parser/unegation.c @@ -5,7 +5,7 @@ unegation(SliceToken *s) { const auto rs = *s; - *s = skip(*s, "-"); + skip(s, "-"); bool negate = true; while (s->len && equal(s->loc[0], "-")) { negate = !negate; diff --git a/src/parser/uniondef.c b/src/parser/uniondef.c index 61a7ccd..816b325 100644 --- a/src/parser/uniondef.c +++ b/src/parser/uniondef.c @@ -3,19 +3,19 @@ Node * uniondef(SliceToken *s) { - *s = skip(*s, "union"); + skip(s, "union"); expect(s->loc[0], TOK_WORD); auto node = node_new(NOD_UNION, s->loc[0]); *s = SliceToken_next(*s); - *s = skip(*s, "{"); + skip(s, "{"); Node head = {0}; Node *cur = &head; while (is(s->loc[0], TOK_WORD)) { cur = cur->next = node_new(NOD_LET, s->loc[0]); *s = SliceToken_next(*s); - *s = skip(*s, ":"); + skip(s, ":"); cur->Lhs = type(s); if (equal(s->loc[0], "=")) { *s = SliceToken_next(*s); @@ -28,7 +28,7 @@ uniondef(SliceToken *s) assert(head.next != nullptr); node->Lhs = head.next; - *s = skip(*s, "}"); + skip(s, "}"); semicolon(s); return node; } diff --git a/src/token.c b/src/token.c index 9c7a9a3..00706b5 100644 --- a/src/token.c +++ b/src/token.c @@ -36,14 +36,14 @@ expect(Token tok, TokenType type) toktype_str(type), toktype_str(tok.type)); } -SliceToken -skip(SliceToken s, const char *op) +void +skip(SliceToken *s, const char *op) { - assert(s.len); - if (!equal(s.loc[0], op)) + assert(s->len); + if (!equal(s->loc[0], op)) panic("expected '%s', got '%.*s'", - op, s.loc[0].s.len, s.loc[0].s.loc); - return SliceToken_sub(s, 1, -1); + op, s->loc[0].s.len, s->loc[0].s.loc); + *s = SliceToken_sub(*s, 1, -1); } void @@ -52,7 +52,7 @@ semicolon(SliceToken *s) assert(s->len); if (equal(s->loc[0], "}")) return; - *s = skip(*s, ";"); + skip(s, ";"); } void |