diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2022-10-26 13:38:38 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2022-10-26 13:38:38 -0400 |
| commit | 9e07e08a4888bbc2d479204f6ef2b7cd42c44085 (patch) | |
| tree | cee28ac5aa6ee44abf699f32fba73d9c584642a4 /match.c | |
| parent | 6b8f1a09d01dbd894988edeb9fb167a3389a4846 (diff) | |
Microoptimizations
Diffstat (limited to 'match.c')
| -rw-r--r-- | match.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -364,11 +364,11 @@ static match_t *match(match_ctx_t *ctx, const char *str, pat_t *pat) // a special case, but if a pattern invokes itself at a later // point, it can be handled with normal recursion. // See: left-recursion.md for more details. - if (str == pat->args.leftrec.at) { - pat->args.leftrec.visited = true; - return clone_match(pat->args.leftrec.match); + if (str == pat->args.leftrec->at) { + pat->args.leftrec->visited = true; + return clone_match(pat->args.leftrec->match); } else { - return match(pat->args.leftrec.ctx, str, pat->args.leftrec.fallback); + return match(pat->args.leftrec->ctx, str, pat->args.leftrec->fallback); } } case BP_ANYCHAR: { @@ -678,7 +678,7 @@ static match_t *match(match_ctx_t *ctx, const char *str, pat_t *pat) .type = BP_LEFTRECURSION, .start = ref->start, .end = ref->end, .min_matchlen = 0, .max_matchlen = -1, - .args.leftrec = { + .args.leftrec = &(leftrec_info_t){ .match = NULL, .visited = false, .at = str, @@ -702,10 +702,10 @@ static match_t *match(match_ctx_t *ctx, const char *str, pat_t *pat) match_t *m = match(&ctx2, str, ref); // If left recursion was involved, keep retrying while forward progress can be made: - if (m && rec_op.args.leftrec.visited) { + if (m && rec_op.args.leftrec->visited) { while (1) { const char *prev = m->end; - rec_op.args.leftrec.match = m; + rec_op.args.leftrec->match = m; ctx2.cache = &(cache_t){0}; match_t *m2 = match(&ctx2, str, ref); cache_destroy(&ctx2); |
