Download common/regex-partial.h from OpenTransformer/llama.cpp-prismml: direct link, hf CLI and curl.
- Browser
- Download file 1.51 kB
-
https://huggingface.co/OpenTransformer/llama.cpp-prismml/resolve/main/common/regex-partial.h
- Command line
-
hf download hf://OpenTransformer/llama.cpp-prismml/common/regex-partial.h
-
curl -L -o regex-partial.h https://huggingface.co/OpenTransformer/llama.cpp-prismml/resolve/main/common/regex-partial.h
1.51 kB
| enum common_regex_match_type { | |
| COMMON_REGEX_MATCH_TYPE_NONE, | |
| COMMON_REGEX_MATCH_TYPE_PARTIAL, | |
| COMMON_REGEX_MATCH_TYPE_FULL, | |
| }; | |
| struct common_string_range { | |
| size_t begin; | |
| size_t end; | |
| common_string_range(size_t begin, size_t end) : begin(begin), end(end) { | |
| if (begin > end) { | |
| throw std::runtime_error("Invalid range"); | |
| } | |
| } | |
| // prevent default ctor | |
| common_string_range() = delete; | |
| bool empty() const { | |
| return begin == end; | |
| } | |
| bool operator==(const common_string_range & other) const { | |
| return begin == other.begin && end == other.end; | |
| } | |
| }; | |
| struct common_regex_match { | |
| common_regex_match_type type = COMMON_REGEX_MATCH_TYPE_NONE; | |
| std::vector<common_string_range> groups; | |
| bool operator==(const common_regex_match & other) const { | |
| return type == other.type && groups == other.groups; | |
| } | |
| bool operator!=(const common_regex_match & other) const { | |
| return !(*this == other); | |
| } | |
| }; | |
| class common_regex { | |
| std::string pattern; | |
| std::regex rx; | |
| std::regex rx_reversed_partial; | |
| public: | |
| explicit common_regex(const std::string & pattern); | |
| common_regex_match search(const std::string & input, size_t pos, bool as_match = false) const; | |
| const std::string & str() const { return pattern; } | |
| }; | |
| // For testing only (pretty print of failures). | |
| std::string regex_to_reversed_partial_regex(const std::string & pattern); | |