summaryrefslogtreecommitdiff
path: root/src/stages
diff options
context:
space:
mode:
authorBen Bridle <ben@derelict.engineering>2025-12-30 09:09:40 +1300
committerBen Bridle <ben@derelict.engineering>2025-12-30 14:00:45 +1300
commitc5e626d27910e82df125d6d0c09037811488eeea (patch)
tree60128b31b71173eec9d72e0318ba434e99861e76 /src/stages
parent0de8aef53a2e9e86340bae3d051a1d5d8372ec99 (diff)
downloadtorque-asm-c5e626d27910e82df125d6d0c09037811488eeea.zip
Move parse_macro_definition_body function closer to calling site
This simplifies the next commit.
Diffstat (limited to 'src/stages')
-rw-r--r--src/stages/intermediate.rs52
1 files changed, 26 insertions, 26 deletions
diff --git a/src/stages/intermediate.rs b/src/stages/intermediate.rs
index c5be44f..b890cd4 100644
--- a/src/stages/intermediate.rs
+++ b/src/stages/intermediate.rs
@@ -169,32 +169,6 @@ impl IntermediateParser {
}
}
- fn parse_macro_definition_body(&mut self, body: &MacroDefinitionBody, source: &SourceSpan) -> Option<Tracked<IntermediateValue>> {
- match &body {
- MacroDefinitionBody::Integer(integer) => {
- let token = self.parse_integer_token(&integer, &source)?;
- let integer = IntermediateValue::Integer(token.value);
- Some(Tracked::from(integer, source.clone()))
- }
- MacroDefinitionBody::Invocation(invocation) => {
- self.parse_invocation(&invocation, &invocation.source)
- }
- MacroDefinitionBody::Block(blocks) => {
- let mut tokens = Vec::new();
- for block in blocks {
- tokens.append(&mut self.parse_block_token(block, &block.source));
- }
- let value = IntermediateValue::Block(tokens);
- Some(Tracked::from(value, source.clone()))
- }
- MacroDefinitionBody::List(list) => {
- let list = self.parse_list_token(list, &source)?;
- let integer = IntermediateValue::List(list.value);
- Some(Tracked::from(integer, source.clone()))
- }
- }
- }
-
fn parse_block_token(&mut self, block: &BlockToken, source: &SourceSpan) -> Vec<Tracked<IntermediateToken>> {
let mut intermediate = Vec::new();
match block {
@@ -515,6 +489,32 @@ impl IntermediateParser {
}
}
+ fn parse_macro_definition_body(&mut self, body: &MacroDefinitionBody, source: &SourceSpan) -> Option<Tracked<IntermediateValue>> {
+ match &body {
+ MacroDefinitionBody::Integer(integer) => {
+ let token = self.parse_integer_token(&integer, &source)?;
+ let integer = IntermediateValue::Integer(token.value);
+ Some(Tracked::from(integer, source.clone()))
+ }
+ MacroDefinitionBody::Invocation(invocation) => {
+ self.parse_invocation(&invocation, &invocation.source)
+ }
+ MacroDefinitionBody::Block(blocks) => {
+ let mut tokens = Vec::new();
+ for block in blocks {
+ tokens.append(&mut self.parse_block_token(block, &block.source));
+ }
+ let value = IntermediateValue::Block(tokens);
+ Some(Tracked::from(value, source.clone()))
+ }
+ MacroDefinitionBody::List(list) => {
+ let list = self.parse_list_token(list, &source)?;
+ let integer = IntermediateValue::List(list.value);
+ Some(Tracked::from(integer, source.clone()))
+ }
+ }
+ }
+
fn parse_expression(&mut self, expression: &Expression, source: &SourceSpan) -> Option<Tracked<IntermediateInteger>> {
let mut stack = ExpressionStack::new();
for token in &expression.tokens {