From 59b2e5bd0fd7cea5fc3f9c74241cf4fa08e99228 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Tue, 10 Mar 2026 17:38:30 +0100 Subject: Wrap the AST nodes and extra data in a struct --- oryxc/src/parser.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'oryxc/src/parser.rs') diff --git a/oryxc/src/parser.rs b/oryxc/src/parser.rs index 70b530f..319beea 100644 --- a/oryxc/src/parser.rs +++ b/oryxc/src/parser.rs @@ -44,6 +44,12 @@ pub struct AstNode { pub sub: SubNodes, } +#[derive(Debug)] +pub struct Ast { + pub nodes: Soa, + pub extra: Vec, +} + struct Parser<'a> { ast: Soa, extra_data: Vec, @@ -885,9 +891,7 @@ impl<'a> Parser<'a> { } } -pub fn parse( - tokens: &Soa, -) -> Result<(Soa, Vec), Vec> { +pub fn parse(tokens: &Soa) -> Result> { let mut p = Parser::new(tokens); while p.get() != TokenType::Eof { p.parse_toplevel(); @@ -904,5 +908,8 @@ pub fn parse( tok: 0, sub: SubNodes(stmtsbeg as u32, nstmts as u32), }); - return Ok((p.ast, p.extra_data)); + return Ok(Ast { + nodes: p.ast, + extra: p.extra_data, + }); } -- cgit v1.2.3