| Index: petitparser/lib/src/core/combinators.dart
|
| diff --git a/petitparser/lib/src/core/combinators.dart b/petitparser/lib/src/core/combinators.dart
|
| deleted file mode 100644
|
| index fe13ca3d3fdf47977aa4db6ff2f1a66f6a143862..0000000000000000000000000000000000000000
|
| --- a/petitparser/lib/src/core/combinators.dart
|
| +++ /dev/null
|
| @@ -1,234 +0,0 @@
|
| -part of petitparser;
|
| -
|
| -/**
|
| - * A parser that delegates to another one. Normally users do not need to
|
| - * directly use a delegate parser.
|
| - */
|
| -class DelegateParser extends Parser {
|
| - Parser _delegate;
|
| -
|
| - DelegateParser(this._delegate);
|
| -
|
| - @override
|
| - Result parseOn(Context context) {
|
| - return _delegate.parseOn(context);
|
| - }
|
| -
|
| - @override
|
| - List<Parser> get children => [_delegate];
|
| -
|
| - @override
|
| - void replace(Parser source, Parser target) {
|
| - super.replace(source, target);
|
| - if (_delegate == source) {
|
| - _delegate = target;
|
| - }
|
| - }
|
| -
|
| - @override
|
| - Parser copy() => new DelegateParser(_delegate);
|
| -}
|
| -
|
| -/**
|
| - * A parser that succeeds only at the end of the input.
|
| - */
|
| -class EndOfInputParser extends DelegateParser {
|
| - final String _message;
|
| -
|
| - EndOfInputParser(parser, this._message) : super(parser);
|
| -
|
| - @override
|
| - Result parseOn(Context context) {
|
| - var result = _delegate.parseOn(context);
|
| - if (result.isFailure || result.position == result.buffer.length) {
|
| - return result;
|
| - }
|
| - return result.failure(_message, result.position);
|
| - }
|
| -
|
| - @override
|
| - String toString() => '${super.toString()}[$_message]';
|
| -
|
| - @override
|
| - Parser copy() => new EndOfInputParser(_delegate, _message);
|
| -
|
| - @override
|
| - bool hasEqualProperties(Parser other) {
|
| - return other is EndOfInputParser && super.hasEqualProperties(other)
|
| - && _message == other._message;
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * The and-predicate, a parser that succeeds whenever its delegate does, but
|
| - * does not consume the input stream [Parr 1994, 1995].
|
| - */
|
| -class AndParser extends DelegateParser {
|
| - AndParser(parser) : super(parser);
|
| -
|
| - @override
|
| - Result parseOn(Context context) {
|
| - var result = _delegate.parseOn(context);
|
| - if (result.isSuccess) {
|
| - return context.success(result.value);
|
| - } else {
|
| - return result;
|
| - }
|
| - }
|
| -
|
| - @override
|
| - Parser copy() => new AndParser(_delegate);
|
| -}
|
| -
|
| -/**
|
| - * The not-predicate, a parser that succeeds whenever its delegate does not,
|
| - * but consumes no input [Parr 1994, 1995].
|
| - */
|
| -class NotParser extends DelegateParser {
|
| - final String _message;
|
| -
|
| - NotParser(parser, this._message) : super(parser);
|
| -
|
| - @override
|
| - Result parseOn(Context context) {
|
| - var result = _delegate.parseOn(context);
|
| - if (result.isFailure) {
|
| - return context.success(null);
|
| - } else {
|
| - return context.failure(_message);
|
| - }
|
| - }
|
| -
|
| - @override
|
| - String toString() => '${super.toString()}[$_message]';
|
| -
|
| - @override
|
| - Parser copy() => new NotParser(_delegate, _message);
|
| -
|
| - @override
|
| - bool hasEqualProperties(Parser other) {
|
| - return other is NotParser
|
| - && super.hasEqualProperties(other)
|
| - && _message == other._message;
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * A parser that optionally parsers its delegate, or answers nil.
|
| - */
|
| -class OptionalParser extends DelegateParser {
|
| - final _otherwise;
|
| -
|
| - OptionalParser(parser, this._otherwise) : super(parser);
|
| -
|
| - @override
|
| - Result parseOn(Context context) {
|
| - var result = _delegate.parseOn(context);
|
| - if (result.isSuccess) {
|
| - return result;
|
| - } else {
|
| - return context.success(_otherwise);
|
| - }
|
| - }
|
| -
|
| - @override
|
| - Parser copy() => new OptionalParser(_delegate, _otherwise);
|
| -
|
| - @override
|
| - bool hasEqualProperties(Parser other) {
|
| - return other is OptionalParser
|
| - && super.hasEqualProperties(other)
|
| - && _otherwise == other._otherwise;
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * Abstract parser that parses a list of things in some way.
|
| - */
|
| -abstract class ListParser extends Parser {
|
| - final List<Parser> _parsers;
|
| -
|
| - ListParser(this._parsers);
|
| -
|
| - @override
|
| - List<Parser> get children => _parsers;
|
| -
|
| - @override
|
| - void replace(Parser source, Parser target) {
|
| - super.replace(source, target);
|
| - for (var i = 0; i < _parsers.length; i++) {
|
| - if (_parsers[i] == source) {
|
| - _parsers[i] = target;
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * A parser that uses the first parser that succeeds.
|
| - */
|
| -class ChoiceParser extends ListParser {
|
| - factory ChoiceParser(Iterable<Parser> parsers) {
|
| - return new ChoiceParser._(new List.from(parsers, growable: false));
|
| - }
|
| -
|
| - ChoiceParser._(parsers) : super(parsers);
|
| -
|
| - @override
|
| - Result parseOn(Context context) {
|
| - var result;
|
| - for (var i = 0; i < _parsers.length; i++) {
|
| - result = _parsers[i].parseOn(context);
|
| - if (result.isSuccess) {
|
| - return result;
|
| - }
|
| - }
|
| - return result;
|
| - }
|
| -
|
| - @override
|
| - Parser or(Parser other) {
|
| - return new ChoiceParser(new List()
|
| - ..addAll(_parsers)
|
| - ..add(other));
|
| - }
|
| -
|
| - @override
|
| - Parser copy() => new ChoiceParser(_parsers);
|
| -}
|
| -
|
| -/**
|
| - * A parser that parses a sequence of parsers.
|
| - */
|
| -class SequenceParser extends ListParser {
|
| - factory SequenceParser(Iterable<Parser> parsers) {
|
| - return new SequenceParser._(new List.from(parsers, growable: false));
|
| - }
|
| -
|
| - SequenceParser._(parsers) : super(parsers);
|
| -
|
| - @override
|
| - Result parseOn(Context context) {
|
| - var current = context;
|
| - var elements = new List(_parsers.length);
|
| - for (var i = 0; i < _parsers.length; i++) {
|
| - var result = _parsers[i].parseOn(current);
|
| - if (result.isFailure) {
|
| - return result;
|
| - }
|
| - elements[i] = result.value;
|
| - current = result;
|
| - }
|
| - return current.success(elements);
|
| - }
|
| -
|
| - @override
|
| - Parser seq(Parser other) {
|
| - return new SequenceParser(new List()
|
| - ..addAll(_parsers)
|
| - ..add(other));
|
| - }
|
| -
|
| - @override
|
| - Parser copy() => new SequenceParser(_parsers);
|
| -}
|
|
|