parse method

  1. @override
ParseResult parse(
  1. String source
)
override

Attempts to parse the source string matching this element.

Returns a ParseResult containing the parsed lexeme and remaining string on success. On failure, returns a failed ParseResult.

Implementation

@override
ParseResult parse(String source) {
  final result = element.parse(source);

  if (!result.success) {
    return ParseResult(
      false,
      source,
      ruleName: name,
      element: toString(),
      stack: Stack<ParseResult>()..push(result),
    );
  }

  final lexeme = source.substring(0, source.length - result.remaining.length);

  return ParseResult(
    result.success,
    result.remaining,
    lexeme: lexeme,
    ruleName: name,
    element: toString(),
    stack: Stack<ParseResult>()..push(result),
  );
}