| 230 | } |
| 231 | |
| 232 | const char * parse_alternates( |
| 233 | parse_state & state, |
| 234 | const char * src, |
| 235 | const std::string & rule_name, |
| 236 | uint32_t rule_id, |
| 237 | bool is_nested) { |
| 238 | std::vector<llama_grammar_element> rule; |
| 239 | const char * pos = parse_sequence(state, src, rule_name, rule, is_nested); |
| 240 | while (*pos == '|') { |
| 241 | rule.push_back({LLAMA_GRETYPE_ALT, 0}); |
| 242 | pos = parse_space(pos + 1, true); |
| 243 | pos = parse_sequence(state, pos, rule_name, rule, is_nested); |
| 244 | } |
| 245 | rule.push_back({LLAMA_GRETYPE_END, 0}); |
| 246 | add_rule(state, rule_id, rule); |
| 247 | return pos; |
| 248 | } |
| 249 | |
| 250 | static const char * parse_rule(parse_state & state, const char * src) { |
| 251 | const char * name_end = parse_name(src); |
no test coverage detected