public Lexeme Match(StringSource source) { Position pos = source.SourcePos; Match match = source.TryExtract(regex); if (!match.Success) { return null; } return producer(match.Value, pos); }