Team Ai
Datasetpublic

echodict/llama.cpp

version https://git-lfs.github.com/spec/v1 oid sha256:cfc44b7ba25614df70e6b65e3341cae0310163bd32fd31a6b928a542df433faf size 30786

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes479downloads
regex-partial.h57 linesDownload Raw Back to common
1#pragma once2 3#include <regex>4#include <string>5 6enum common_regex_match_type {7    COMMON_REGEX_MATCH_TYPE_NONE,8    COMMON_REGEX_MATCH_TYPE_PARTIAL,9    COMMON_REGEX_MATCH_TYPE_FULL,10};11 12struct common_string_range {13    size_t begin;14    size_t end;15    common_string_range(size_t begin, size_t end) : begin(begin), end(end) {16        if (begin > end) {17            throw std::runtime_error("Invalid range");18        }19    }20    // prevent default ctor21    common_string_range() = delete;22    bool empty() const {23        return begin == end;24    }25    bool operator==(const common_string_range & other) const {26        return begin == other.begin && end == other.end;27    }28};29 30struct common_regex_match {31    common_regex_match_type type = COMMON_REGEX_MATCH_TYPE_NONE;32    std::vector<common_string_range> groups;33 34    bool operator==(const common_regex_match & other) const {35        return type == other.type && groups == other.groups;36    }37    bool operator!=(const common_regex_match & other) const {38        return !(*this == other);39    }40};41 42class common_regex {43    std::string pattern;44    std::regex rx;45    std::regex rx_reversed_partial;46 47  public:48    explicit common_regex(const std::string & pattern);49 50    common_regex_match search(const std::string & input, size_t pos, bool as_match = false) const;51 52    const std::string & str() const { return pattern; }53};54 55// For testing only (pretty print of failures).56std::string regex_to_reversed_partial_regex(const std::string & pattern);57