llama_context *ctx = nullptr;
gpt_params params;
+ grammar_parser::parse_state parsed_grammar;
llama_grammar *grammar = nullptr;
bool truncated = false;
stopped_limit = false;
stopping_word = "";
multibyte_pending = 0;
- grammar = nullptr;
-
n_remain = 0;
n_past = 0;
+
+ if (grammar != nullptr) {
+ llama_grammar_free(grammar);
+ grammar = nullptr;
+ }
}
bool loadModel(const gpt_params ¶ms_)
bool loadGrammar()
{
if (!params.grammar.empty()) {
- grammar_parser::parse_state parsed_grammar;
-
parsed_grammar = grammar_parser::parse(params.grammar.c_str());
// will be empty (default) if there are parse errors
if (parsed_grammar.rules.empty()) {