2025-09-05 05:16:21 +09:00
|
|
|
use crate::parser::sugar_gate;
|
2025-09-17 07:43:07 +09:00
|
|
|
use crate::parser::{NyashParser, ParseError};
|
2025-09-05 05:16:21 +09:00
|
|
|
use crate::syntax::sugar_config::{SugarConfig, SugarLevel};
|
|
|
|
|
|
|
|
|
|
/// Parse code and apply sugar based on a provided level (None/Basic/Full)
|
2025-09-17 07:43:07 +09:00
|
|
|
pub fn parse_with_sugar_level(
|
|
|
|
|
code: &str,
|
|
|
|
|
level: SugarLevel,
|
|
|
|
|
) -> Result<crate::ast::ASTNode, ParseError> {
|
2025-09-05 05:16:21 +09:00
|
|
|
match level {
|
|
|
|
|
SugarLevel::None => {
|
|
|
|
|
let ast = NyashParser::parse_from_string(code)?;
|
|
|
|
|
Ok(ast)
|
|
|
|
|
}
|
2025-09-17 07:43:07 +09:00
|
|
|
SugarLevel::Basic | SugarLevel::Full => sugar_gate::with_enabled(|| {
|
|
|
|
|
let ast = NyashParser::parse_from_string(code)?;
|
|
|
|
|
let cfg = SugarConfig { level };
|
|
|
|
|
let ast = crate::parser::sugar::apply_sugar(ast, &cfg);
|
|
|
|
|
Ok(ast)
|
|
|
|
|
}),
|
2025-09-05 05:16:21 +09:00
|
|
|
}
|
|
|
|
|
}
|