diff options
author | Ben Bridle <ben@derelict.engineering> | 2025-10-14 20:40:39 +1300 |
---|---|---|
committer | Ben Bridle <ben@derelict.engineering> | 2025-10-14 21:05:05 +1300 |
commit | 981bb70e5077bd30ef85a0092117a875dcc614fc (patch) | |
tree | 45e614de74d17071ca1e68098df4d32266df85a3 /src/stages/compiler.rs | |
parent | ace5677f87c2bc042d8d5e807ccea9ddcd828c9e (diff) | |
download | torque-asm-981bb70e5077bd30ef85a0092117a875dcc614fc.zip |
Implement new intermediate stage
Massive improvement. Label references can be used anywhere in the
program, with the program being assembled repeatedly until all labels
have stabilised. The bytecode stage will just be a tiny stage tacked
onto the end, rather than the old bytecode stage that would resolve
labels and expressions.
Diffstat (limited to 'src/stages/compiler.rs')
-rw-r--r-- | src/stages/compiler.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/stages/compiler.rs b/src/stages/compiler.rs index 1476ec8..b4680c2 100644 --- a/src/stages/compiler.rs +++ b/src/stages/compiler.rs @@ -16,10 +16,12 @@ pub fn parse_symbols(source_code: &str, path: Option<&Path>) -> Option<Vec<Symbo Ok(syntactic) => syntactic, Err(_errors) => return None, }; + let semantic = match parse_semantic(syntactic) { Ok(semantic) => semantic, Err(_errors) => return None, }; + // Convert symbols to the format required by the assembler library. let parsed = SymbolParser::new().parse(&semantic); let mut symbols = Vec::new(); |