aboutsummaryrefslogtreecommitdiff
path: root/src/prc1/push.c
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi92@disroot.org>2026-10-01 01:04:30 +0200
committerXavier Del Campo Romero <xavi92@disroot.org>2026-10-05 00:38:49 +0200
commit2b0d4ead061a39da9dbd705c18c9955549c4d405 (patch)
tree1412ac39adce3428b96caf67b1e7543f6c1246a5 /src/prc1/push.c
parent9140988be4e5bb028b7140aca1a67af1370c72a7 (diff)
downloadprc-2b0d4ead061a39da9dbd705c18c9955549c4d405.tar.gz
WIP symsym
Diffstat (limited to 'src/prc1/push.c')
-rw-r--r--src/prc1/push.c15
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;
}