public MatchCollection Matches(Scanner scanner) { scanner.ThrowIfNull("scanner"); var matches = new MatchCollection(); var eof = scanner.IsEof; while (!eof) { var match = Match(scanner); if (match.Success) { matches.AddRange(match.Matches); eof = scanner.IsEof; } else eof = scanner.Advance(1) < 0; } return matches; }
internal ParseArgs(Grammar grammar, Scanner scanner) { Grammar = grammar; Scanner = scanner; }
public GrammarMatch Match(Scanner scanner) { //scanner.ThrowIfNull("scanner"); var args = new ParseArgs(this, scanner); if (!initialized) Initialize(); Parse(args); var root = args.Root; if (root.Success && EnableMatchEvents) { root.TriggerPreMatch(); root.TriggerMatch(); } return root; }