From 61eb62dde6a62cf19d33d5c689b0c3a4f36d93c3 Mon Sep 17 00:00:00 2001 From: Greg Brown Date: Mon, 26 Apr 2021 11:14:21 +0100 Subject: Replace substitution with translation. --- src/chomp/visit.rs | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) (limited to 'src/chomp/visit.rs') diff --git a/src/chomp/visit.rs b/src/chomp/visit.rs index bdef30e..7e716d3 100644 --- a/src/chomp/visit.rs +++ b/src/chomp/visit.rs @@ -1,9 +1,7 @@ use proc_macro2::Span; use super::{ - ast::{ - Alt, Call, Cat, Epsilon, Expression, Fix, Literal, NamedExpression, Parameter, Variable, - }, + ast::{Alt, Call, Cat, Epsilon, Expression, Fix, Lambda, Literal, NamedExpression, Variable}, Name, }; @@ -36,14 +34,14 @@ pub trait Visitor { var: &Variable, ) -> Self::Out; - fn visit_parameter( + fn visit_call(&mut self, name: Option<&Name>, span: Option, call: &Call) -> Self::Out; + + fn visit_lambda( &mut self, name: Option<&Name>, span: Option, - param: &Parameter, + lambda: &Lambda, ) -> Self::Out; - - fn visit_call(&mut self, name: Option<&Name>, span: Option, call: &Call) -> Self::Out; } pub trait Mapper { @@ -76,18 +74,18 @@ pub trait Mapper { var: &mut Variable, ) -> Self::Out; - fn map_parameter( + fn map_call( &mut self, name: &mut Option, span: Option, - param: &mut Parameter, + call: &mut Call, ) -> Self::Out; - fn map_call( + fn map_lambda( &mut self, name: &mut Option, span: Option, - call: &mut Call, + lambda: &mut Lambda, ) -> Self::Out; } @@ -107,14 +105,9 @@ pub trait Folder { fn fold_variable(&mut self, name: Option, span: Option, var: Variable) -> Self::Out; - fn fold_parameter( - &mut self, - name: Option, - span: Option, - param: Parameter, - ) -> Self::Out; - fn fold_call(&mut self, name: Option, span: Option, call: Call) -> Self::Out; + + fn fold_lambda(&mut self, name: Option, span: Option, lambda: Lambda) -> Self::Out; } pub trait Visitable { @@ -134,8 +127,8 @@ impl Visitable for NamedExpression { Expression::Alt(a) => visitor.visit_alt(self.name.as_ref(), self.span, a), Expression::Fix(f) => visitor.visit_fix(self.name.as_ref(), self.span, f), Expression::Variable(v) => visitor.visit_variable(self.name.as_ref(), self.span, v), - Expression::Parameter(p) => visitor.visit_parameter(self.name.as_ref(), self.span, p), Expression::Call(c) => visitor.visit_call(self.name.as_ref(), self.span, c), + Expression::Lambda(l) => visitor.visit_lambda(self.name.as_ref(), self.span, l), } } @@ -147,8 +140,8 @@ impl Visitable for NamedExpression { Expression::Alt(a) => mapper.map_alt(&mut self.name, self.span, a), Expression::Fix(f) => mapper.map_fix(&mut self.name, self.span, f), Expression::Variable(v) => mapper.map_variable(&mut self.name, self.span, v), - Expression::Parameter(p) => mapper.map_parameter(&mut self.name, self.span, p), Expression::Call(c) => mapper.map_call(&mut self.name, self.span, c), + Expression::Lambda(l) => mapper.map_lambda(&mut self.name, self.span, l), } } @@ -160,8 +153,8 @@ impl Visitable for NamedExpression { Expression::Alt(a) => folder.fold_alt(self.name, self.span, a), Expression::Fix(f) => folder.fold_fix(self.name, self.span, f), Expression::Variable(v) => folder.fold_variable(self.name, self.span, v), - Expression::Parameter(p) => folder.fold_parameter(self.name, self.span, p), Expression::Call(c) => folder.fold_call(self.name, self.span, c), + Expression::Lambda(l) => folder.fold_lambda(self.name, self.span, l), } } } -- cgit v1.2.3