more import preparation

This commit is contained in:
2025-04-25 13:37:26 -04:00
parent 4e7c201690
commit 5adca32dd4
13 changed files with 203 additions and 26 deletions
+10 -2
View File
@@ -1,6 +1,6 @@
use super::{
Keyword, Node, PExpr, PFunction, PStruct, PVarDef, Parsable, ParseResult, ParserCtx, Symbol,
Token,
Keyword, Node, PExpr, PFunction, PIdent, PStruct, PVarDef, Parsable, ParseResult, ParserCtx,
Symbol, Token,
};
pub enum PStatement {
@@ -12,6 +12,7 @@ pub enum PStatement {
pub enum PConstStatement {
Fn(Node<PFunction>),
Struct(Node<PStruct>),
Import(Node<PIdent>),
}
pub enum PStatementLike {
@@ -47,6 +48,10 @@ impl Parsable for PStatementLike {
ctx.next();
ParseResult::Ok(Self::Const(PConstStatement::Struct(ctx.parse()?)))
}
Token::Keyword(Keyword::Import) => {
ctx.next();
ParseResult::Ok(Self::Const(PConstStatement::Import(ctx.parse()?)))
}
_ => ctx.parse().map(|n| Self::Statement(PStatement::Expr(n))),
}
}
@@ -81,6 +86,9 @@ impl std::fmt::Debug for PConstStatement {
Self::Struct(s) => {
s.fmt(f)?;
}
Self::Import(s) => {
writeln!(f, "import {:?}", s);
}
}
Ok(())
}