diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-10-01 01:04:30 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-10-05 00:38:49 +0200 |
| commit | 2b0d4ead061a39da9dbd705c18c9955549c4d405 (patch) | |
| tree | 1412ac39adce3428b96caf67b1e7543f6c1246a5 /src/prc1/push.c | |
| parent | 9140988be4e5bb028b7140aca1a67af1370c72a7 (diff) | |
| download | prc-2b0d4ead061a39da9dbd705c18c9955549c4d405.tar.gz | |
WIP symsym
Diffstat (limited to 'src/prc1/push.c')
| -rw-r--r-- | src/prc1/push.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/prc1/push.c b/src/prc1/push.c index 1a9056d..2354305 100644 --- a/src/prc1/push.c +++ b/src/prc1/push.c @@ -1,10 +1,11 @@ #include "prv.h" +#include "dbg.h" #include <stdlib.h> int push(const struct pos *pos, struct prv *p) { size_t n = p->n + 1; - struct pos *npos = realloc(p->pos, n * sizeof *npos); + struct pos *npos = realloc(p->pos, n * sizeof *npos), *pp; if (!npos) { @@ -15,13 +16,21 @@ int push(const struct pos *pos, struct prv *p) { struct pos *prev = &npos[p->n - 1]; - prev->end = prev->seq->end; prev->seq = prev->stseq; prev->step = prev->seq->steps; p->i++; } - npos[p->n++] = *pos; + ddbg("push rule %s [%zu]", pos->name, p->n); + + if (pos->end) + ddbg(", end=%p", pos->end); + + ddbg("\n"); + pp = &npos[p->n++]; + *pp = *pos; + pp->stseq = pp->seq; + pp->step = pp->seq->steps; p->pos = npos; return 0; } |
