File tree Expand file tree Collapse file tree 3 files changed +21
-1
lines changed
Filter options
Expand file tree Collapse file tree 3 files changed +21
-1
lines changed
Original file line number Diff line number Diff line change @@ -257,7 +257,7 @@ common.o: examples/common.cpp examples/common.h
257
257
grammar-parser.o : examples/grammar-parser.cpp examples/grammar-parser.h
258
258
$(CXX ) $(CXXFLAGS ) -c $< -o $@
259
259
260
- libllama.so : llama.o ggml.o $(OBJS )
260
+ libllama.so : llama.o ggml.o grammar-parser.o $(OBJS )
261
261
$(CXX ) $(CXXFLAGS ) -shared -fPIC -o $@ $^ $(LDFLAGS )
262
262
263
263
clean :
Original file line number Diff line number Diff line change 8
8
9
9
#include " llama-util.h"
10
10
#include " llama.h"
11
+ #include " grammar-parser.h"
11
12
12
13
#include " ggml.h"
13
14
#ifdef GGML_USE_CUBLAS
@@ -1998,6 +1999,24 @@ void llama_grammar_free(struct llama_grammar * grammar) {
1998
1999
delete grammar;
1999
2000
}
2000
2001
2002
+ struct llama_grammar * llama_parse_grammar (const char * grammar_str) {
2003
+ grammar_parser::parse_state parsed_grammar;
2004
+ llama_grammar * grammar = NULL ;
2005
+ if (grammar_str != NULL ) {
2006
+ parsed_grammar = grammar_parser::parse (grammar_str);
2007
+ // will be empty (default) if there are parse errors
2008
+ if (parsed_grammar.out_grammar .empty ()) {
2009
+ return NULL ;
2010
+ }
2011
+ fprintf (stderr, " %s: grammar:\n " , __func__);
2012
+ grammar_parser::print_grammar (stderr, parsed_grammar);
2013
+ fprintf (stderr, " \n " );
2014
+ grammar = llama_grammar_init (
2015
+ parsed_grammar.out_grammar .data (), parsed_grammar.symbol_ids .at (" root" ));
2016
+ }
2017
+ return grammar;
2018
+ }
2019
+
2001
2020
//
2002
2021
// sampling
2003
2022
//
Original file line number Diff line number Diff line change @@ -264,6 +264,7 @@ extern "C" {
264
264
//
265
265
LLAMA_API struct llama_grammar * llama_grammar_init (const uint16_t * src, uint16_t start_rule_id);
266
266
LLAMA_API void llama_grammar_free (struct llama_grammar * grammar);
267
+ LLAMA_API struct llama_grammar * llama_parse_grammar (const char * grammar_str);
267
268
268
269
// Sampling functions
269
270
You can’t perform that action at this time.
0 commit comments