9
9
namespace grammar_parser {
10
10
// NOTE: assumes valid utf8 (but checks for overrun)
11
11
// copied from llama.cpp
12
- std::pair<uint32_t , const char *> decode_utf8 (const char * src) {
12
+ static std::pair<uint32_t , const char *> decode_utf8 (const char * src) {
13
13
static const int lookup[] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 3 , 4 };
14
14
uint8_t first_byte = static_cast <uint8_t >(*src);
15
15
uint8_t highbits = first_byte >> 4 ;
@@ -24,19 +24,19 @@ namespace grammar_parser {
24
24
return std::make_pair (value, pos);
25
25
}
26
26
27
- uint32_t get_symbol_id (parse_state & state, const char * src, size_t len) {
27
+ static uint32_t get_symbol_id (parse_state & state, const char * src, size_t len) {
28
28
uint32_t next_id = static_cast <uint32_t >(state.symbol_ids .size ());
29
29
auto result = state.symbol_ids .insert (std::make_pair (std::string (src, len), next_id));
30
30
return result.first ->second ;
31
31
}
32
32
33
- uint32_t generate_symbol_id (parse_state & state, const std::string & base_name) {
33
+ static uint32_t generate_symbol_id (parse_state & state, const std::string & base_name) {
34
34
uint32_t next_id = static_cast <uint32_t >(state.symbol_ids .size ());
35
35
state.symbol_ids [base_name + ' _' + std::to_string (next_id)] = next_id;
36
36
return next_id;
37
37
}
38
38
39
- void add_rule (
39
+ static void add_rule (
40
40
parse_state & state,
41
41
uint32_t rule_id,
42
42
const std::vector<llama_grammar_element> & rule) {
@@ -46,11 +46,11 @@ namespace grammar_parser {
46
46
state.rules [rule_id] = rule;
47
47
}
48
48
49
- bool is_word_char (char c) {
49
+ static bool is_word_char (char c) {
50
50
return (' a' <= c && c <= ' z' ) || (' A' <= c && c <= ' Z' ) || c == ' -' || (' 0' <= c && c <= ' 9' );
51
51
}
52
52
53
- std::pair<uint32_t , const char *> parse_hex (const char * src, int size) {
53
+ static std::pair<uint32_t , const char *> parse_hex (const char * src, int size) {
54
54
const char * pos = src;
55
55
const char * end = src + size;
56
56
uint32_t value = 0 ;
@@ -73,7 +73,7 @@ namespace grammar_parser {
73
73
return std::make_pair (value, pos);
74
74
}
75
75
76
- const char * parse_space (const char * src, bool newline_ok) {
76
+ static const char * parse_space (const char * src, bool newline_ok) {
77
77
const char * pos = src;
78
78
while (*pos == ' ' || *pos == ' \t ' || *pos == ' #' ||
79
79
(newline_ok && (*pos == ' \r ' || *pos == ' \n ' ))) {
@@ -88,7 +88,7 @@ namespace grammar_parser {
88
88
return pos;
89
89
}
90
90
91
- const char * parse_name (const char * src) {
91
+ static const char * parse_name (const char * src) {
92
92
const char * pos = src;
93
93
while (is_word_char (*pos)) {
94
94
pos++;
@@ -99,7 +99,7 @@ namespace grammar_parser {
99
99
return pos;
100
100
}
101
101
102
- std::pair<uint32_t , const char *> parse_char (const char * src) {
102
+ static std::pair<uint32_t , const char *> parse_char (const char * src) {
103
103
if (*src == ' \\ ' ) {
104
104
switch (src[1 ]) {
105
105
case ' x' : return parse_hex (src + 2 , 2 );
@@ -129,7 +129,7 @@ namespace grammar_parser {
129
129
uint32_t rule_id,
130
130
bool is_nested);
131
131
132
- const char * parse_sequence (
132
+ static const char * parse_sequence (
133
133
parse_state & state,
134
134
const char * src,
135
135
const std::string & rule_name,
@@ -247,7 +247,7 @@ namespace grammar_parser {
247
247
return pos;
248
248
}
249
249
250
- const char * parse_rule (parse_state & state, const char * src) {
250
+ static const char * parse_rule (parse_state & state, const char * src) {
251
251
const char * name_end = parse_name (src);
252
252
const char * pos = parse_space (name_end, false );
253
253
size_t name_len = name_end - src;
@@ -285,7 +285,7 @@ namespace grammar_parser {
285
285
}
286
286
}
287
287
288
- void print_grammar_char (FILE * file, uint32_t c) {
288
+ static void print_grammar_char (FILE * file, uint32_t c) {
289
289
if (0x20 <= c && c <= 0x7f ) {
290
290
fprintf (file, " %c" , static_cast <char >(c));
291
291
} else {
@@ -294,7 +294,7 @@ namespace grammar_parser {
294
294
}
295
295
}
296
296
297
- bool is_char_element (llama_grammar_element elem) {
297
+ static bool is_char_element (llama_grammar_element elem) {
298
298
switch (elem.type ) {
299
299
case LLAMA_GRETYPE_CHAR: return true ;
300
300
case LLAMA_GRETYPE_CHAR_NOT: return true ;
@@ -304,7 +304,7 @@ namespace grammar_parser {
304
304
}
305
305
}
306
306
307
- void print_rule_binary (FILE * file, const std::vector<llama_grammar_element> & rule) {
307
+ static void print_rule_binary (FILE * file, const std::vector<llama_grammar_element> & rule) {
308
308
for (auto elem : rule) {
309
309
switch (elem.type ) {
310
310
case LLAMA_GRETYPE_END: fprintf (file, " END" ); break ;
@@ -334,7 +334,7 @@ namespace grammar_parser {
334
334
fprintf (file, " \n " );
335
335
}
336
336
337
- void print_rule (
337
+ static void print_rule (
338
338
FILE * file,
339
339
uint32_t rule_id,
340
340
const std::vector<llama_grammar_element> & rule,
0 commit comments