summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-10-01 21:42:58 -0400
committerIan Moffett <ian@osmora.org>2025-10-01 21:42:58 -0400
commitef82689edd12da051c8a715f871c3dc00743803e (patch)
tree5215659546f8d9ff7031b56ca99dd1cda19b8f4b /src
parent5314ae3b0e64fccc12c684c4e74c6d039adf09f9 (diff)
np: parse: Allocate new PIIR stack into work desc
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src')
-rw-r--r--src/sys/include/os/np.h3
-rw-r--r--src/sys/np/core/np_parse.c8
2 files changed, 11 insertions, 0 deletions
diff --git a/src/sys/include/os/np.h b/src/sys/include/os/np.h
index 9b04f0e..6671e10 100644
--- a/src/sys/include/os/np.h
+++ b/src/sys/include/os/np.h
@@ -38,6 +38,7 @@
#include <sys/types.h>
#include <os/vnode.h>
#include <np/lex.h>
+#include <np/piir.h>
#include <lib/ptrbox.h>
/*
@@ -46,6 +47,7 @@
* @source: Source input file
* @source_size: Source size in bytes
* @line_no: Current line number
+ * @piir_stack: Bytecode stack
* @lex_st: Lexer state
* @ast_root: Parse tree
* @ccache: Character cache (temporary store for lexer)
@@ -56,6 +58,7 @@ struct np_work {
char *source;
size_t source_size;
size_t line_no;
+ struct piir_stack *piir_stack;
struct lexer_state lex_st;
struct ptrbox *work_mem;
struct ast_node *ast_root;
diff --git a/src/sys/np/core/np_parse.c b/src/sys/np/core/np_parse.c
index 81c5a8d..fd35e3c 100644
--- a/src/sys/np/core/np_parse.c
+++ b/src/sys/np/core/np_parse.c
@@ -38,6 +38,7 @@
#include <sys/param.h>
#include <np/lex.h>
#include <np/parse.h>
+#include <np/piir.h>
#include <np/ast.h>
#include <os/np.h>
#include <lib/ptrbox.h>
@@ -348,6 +349,13 @@ parse_work(struct np_work *work)
return -ENOMEM;
}
+ /* Initialize PIIR */
+ error = piir_stack_new(work, &work->piir_stack);
+ if (error < 0) {
+ pr_error("failed to alloc PIIR stack\n");
+ return error;
+ }
+
while (error == 0) {
error = lex_nom(work, &tok);
if (error == LEX_EOF) {