diff options
| -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 { |
