diff options
| author | Ben Bridle <ben@derelict.engineering> | 2025-12-30 09:09:40 +1300 |
|---|---|---|
| committer | Ben Bridle <ben@derelict.engineering> | 2025-12-30 14:00:45 +1300 |
| commit | c5e626d27910e82df125d6d0c09037811488eeea (patch) | |
| tree | 60128b31b71173eec9d72e0318ba434e99861e76 /src | |
| parent | 0de8aef53a2e9e86340bae3d051a1d5d8372ec99 (diff) | |
| download | torque-asm-c5e626d27910e82df125d6d0c09037811488eeea.zip | |
Move parse_macro_definition_body function closer to calling site
This simplifies the next commit.
Diffstat (limited to 'src')
| -rw-r--r-- | src/stages/intermediate.rs | 52 |
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 { |
