MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / llama_grammar_clone_impl

Function llama_grammar_clone_impl

smallthinker/src/llama-grammar.cpp:1089–1116  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1087}
1088
1089struct llama_grammar * llama_grammar_clone_impl(const struct llama_grammar & grammar) {
1090 auto * result = new llama_grammar {
1091 grammar.vocab,
1092 grammar.rules,
1093 grammar.stacks,
1094 grammar.partial_utf8,
1095 grammar.lazy,
1096 grammar.awaiting_trigger,
1097 grammar.trigger_buffer,
1098 grammar.trigger_tokens,
1099 grammar.trigger_patterns,
1100 };
1101
1102 // redirect elements in stacks to point to new rules
1103 for (size_t is = 0; is < result->stacks.size(); is++) {
1104 for (size_t ie = 0; ie < result->stacks[is].size(); ie++) {
1105 for (size_t ir0 = 0; ir0 < grammar.rules.size(); ir0++) {
1106 for (size_t ir1 = 0; ir1 < grammar.rules[ir0].size(); ir1++) {
1107 if (grammar.stacks[is][ie] == &grammar.rules[ir0][ir1]) {
1108 result->stacks[is][ie] = &result->rules[ir0][ir1];
1109 }
1110 }
1111 }
1112 }
1113 }
1114
1115 return result;
1116}
1117
1118void llama_grammar_apply_impl(const struct llama_grammar & grammar, llama_token_data_array * cur_p) {
1119 GGML_ASSERT(grammar.vocab != nullptr);

Callers 1

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected