From 525d3a6c70b60fe5f328c2306f0e8e29eeab97ab Mon Sep 17 00:00:00 2001 From: Raymon Zutekouw <40148684+Raymonzut@users.noreply.github.com> Date: Thu, 6 Jan 2022 15:41:08 +0100 Subject: [PATCH] Implement #include --- src/main.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 14b49cb..bee88a0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -69,9 +69,19 @@ fn parse_constant(text: &str) -> Result { fn instruct(statement: Pair, state: &mut State, out: &mut Builder) { match statement.as_rule() { Rule::include => { - let file_path = extract_operand(statement); + let file_path_raw = extract_operand(statement); + let file_path = &file_path_raw[1..file_path_raw.len() - 1]; println!("Including {} into this src file", file_path); - out.append("#include\n"); + let content = std::fs::read_to_string(&file_path) + .with_context(|| format!("could not read source file {:?}", file_path)) + .unwrap(); + let parsed_file = MblfParser::parse(Rule::file, &content) + .expect("Parse Error") + .next() + .unwrap(); + for statement in parsed_file.into_inner() { + instruct(statement, state, out); + } } Rule::var => { let variable_name = extract_operand(statement);