Working pre-processing module name

This commit is contained in:
2026-06-13 19:06:34 +02:00
parent 5d3e393d5a
commit c8187379a5
4 changed files with 43 additions and 75 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ program = {
}
module_program = {
SOI ~ declare_module?
SOI ~ top_level?
}
// ======================================================
+3 -18
View File
@@ -14,12 +14,7 @@ use crate::error::{IntoErr, ParseError};
#[grammar = "./src/grammar.pest"]
pub struct MistParser;
pub fn parse<'a>(
source: &'a str,
) -> Result<
(Option<(Visibility, Identifier)>, Vec<TopLevel>),
ParseError<'a, (Option<(Visibility, Identifier)>, Vec<TopLevel>)>,
> {
pub fn parse<'a>(source: &'a str) -> Result<Vec<TopLevel>, ParseError<'a, Vec<TopLevel>>> {
let mut pairs = MistParser::parse(Rule::program, source)?;
let mut statements = vec![];
@@ -32,20 +27,10 @@ pub fn parse<'a>(
}
}
let m = if let Some(v) = statements.get(0) {
if let TopLevelKind::DeclareModule(vis, name) = &v.0.item {
Some((vis.clone(), name.clone()))
} else {
None
}
} else {
None
};
match analyzer.build(statements) {
Ok(v) => Ok((m, v)),
Ok(v) => Ok(v),
Err(e) => {
let rec = e.recovered.clone().map(move |r| (m, r));
let rec = e.recovered.clone();
let mut e2 = e.get();