blob: 4130dc8d6da5e73cdbe0685fc81c944b478dc30a [file] [log] [blame]
import '../../core/parser.dart';
/// An abstract parser that delegates to a parser of type [T].
abstract class DelegateParser<T, R> extends Parser<R> {
DelegateParser(this.delegate);
/// The parser this parser delegates to.
Parser<T> delegate;
@override
List<Parser> get children => [delegate];
@override
void replace(Parser source, Parser target) {
super.replace(source, target);
if (delegate == source) {
delegate = target as Parser<T>;
}
}
}