Skip to content

Commit 7f6534d

Browse files
committed
Remove is_universal
Signed-off-by: Matthew Hayes <matthewha853@gmail.com>
1 parent 23339b2 commit 7f6534d

5 files changed

Lines changed: 7 additions & 36 deletions

File tree

cactus-engine/cactus_engine.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,6 @@ CACTUS_FFI_EXPORT cactus_grammar_t cactus_grammar_repeat_range(
490490
);
491491
CACTUS_FFI_EXPORT int cactus_grammar_get_ebnf(cactus_grammar_t grammar, char* buffer, size_t buffer_size);
492492
CACTUS_FFI_EXPORT int cactus_grammar_is_empty(cactus_grammar_t grammar);
493-
CACTUS_FFI_EXPORT int cactus_grammar_is_universal(cactus_grammar_t grammar);
494493
CACTUS_FFI_EXPORT void cactus_grammar_destroy(cactus_grammar_t grammar);
495494

496495
CACTUS_FFI_EXPORT cactus_grammar_engine_t cactus_grammar_engine_init(cactus_grammar_vocabulary_t vocabulary);

cactus-engine/src/engine.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,14 +313,12 @@ class Grammar {
313313
static Grammar repeat_range(const Grammar& grammar, int min_count, int max_count);
314314

315315
bool is_empty() const;
316-
bool is_universal() const;
317316
std::string ebnf() const;
318317

319318
const xgrammar::Grammar& raw_value() const;
320319

321320
private:
322321
xgrammar::Grammar grammar;
323-
bool is_universal_ = false;
324322
};
325323

326324
class GrammarMatcher;

cactus-engine/src/grammar.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ const xgrammar::TokenizerInfo& GrammarVocabulary::raw_value() const {
7878
return tokenizer_info;
7979
}
8080

81-
Grammar::Grammar() : grammar(xgrammar::NullObj{}), is_universal_(false) {}
81+
Grammar::Grammar() : grammar(xgrammar::NullObj{}) {}
8282

8383
Grammar::Grammar(xgrammar::Grammar raw_grammar)
84-
: grammar(std::move(raw_grammar)), is_universal_(false) {}
84+
: grammar(std::move(raw_grammar)) {}
8585

8686
Grammar Grammar::ebnf(const std::string& ebnf, const std::string& start_symbol) {
8787
return Grammar(xgrammar::Grammar::FromEBNF(ebnf, start_symbol));
@@ -103,7 +103,6 @@ Grammar Grammar::universal() {
103103
"type": "any_text"
104104
}
105105
})");
106-
grammar.is_universal_ = true;
107106
return grammar;
108107
}
109108

@@ -145,7 +144,6 @@ Grammar Grammar::unite(const std::vector<Grammar>& grammars) {
145144
handles.reserve(grammars.size());
146145
for (const auto& grammar : grammars) {
147146
if (grammar.is_empty()) continue;
148-
if (grammar.is_universal()) return grammar;
149147
handles.push_back(grammar.raw_value());
150148
}
151149
return handles.empty() ? Grammar() : Grammar(xgrammar::Grammar::Union(handles));
@@ -158,16 +156,17 @@ Grammar Grammar::concatenate(const std::vector<Grammar>& grammars) {
158156
if (grammar.is_empty()) continue;
159157
handles.push_back(grammar.raw_value());
160158
}
161-
return handles.empty() ? Grammar() : Grammar(xgrammar::Grammar::Concat(handles));
159+
if (handles.empty()) return Grammar();
160+
return Grammar(xgrammar::Grammar::Concat(handles));
162161
}
163162

164163
Grammar Grammar::optional(const Grammar& grammar) {
165-
if (grammar.is_empty()) return Grammar();
164+
if (grammar.is_empty()) return grammar;
166165
return Grammar::unite({Grammar::epsilon(), grammar});
167166
}
168167

169168
Grammar Grammar::star(const Grammar& grammar) {
170-
if (grammar.is_empty()) return Grammar();
169+
if (grammar.is_empty()) return grammar;
171170

172171
picojson::object structural_tag;
173172
structural_tag["type"] = picojson::value("structural_tag");
@@ -223,10 +222,6 @@ bool Grammar::is_empty() const {
223222
return grammar.IsNull();
224223
}
225224

226-
bool Grammar::is_universal() const {
227-
return is_universal_;
228-
}
229-
230225
std::string Grammar::ebnf() const {
231226
if (is_empty()) {
232227
throw std::runtime_error("Cannot get EBNF for empty grammar");

cactus-engine/src/grammar_ffi.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -329,11 +329,6 @@ int cactus_grammar_is_empty(cactus_grammar_t grammar) {
329329
return static_cast<CactusGrammarHandle*>(grammar)->grammar->is_empty() ? 1 : 0;
330330
}
331331

332-
int cactus_grammar_is_universal(cactus_grammar_t grammar) {
333-
if (!grammar) return handle_int_exception(__func__, "grammar is null");
334-
return static_cast<CactusGrammarHandle*>(grammar)->grammar->is_universal() ? 1 : 0;
335-
}
336-
337332
void cactus_grammar_destroy(cactus_grammar_t grammar) {
338333
if (grammar) delete static_cast<CactusGrammarHandle*>(grammar);
339334
}

cactus-engine/tests/test_grammar.cpp

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,6 @@ static bool test_empty_grammar_properties() {
246246
return false;
247247
}
248248

249-
if (cactus_grammar_is_universal(empty.get())
250-
|| cactus_grammar_is_universal(empty2.get())
251-
|| cactus_grammar_is_universal(simple.get())) {
252-
return false;
253-
}
254-
255249
cactus_grammar_t empty_union_inputs[] = {empty.get(), empty2.get()};
256250
auto empty_union = GrammarHandle(make_grammar_handle(cactus_grammar_union(empty_union_inputs, 2)), &cactus_grammar_destroy);
257251
auto empty_concat = GrammarHandle(make_grammar_handle(cactus_grammar_concatenate(empty_union_inputs, 2)), &cactus_grammar_destroy);
@@ -414,20 +408,11 @@ static bool test_regex_and_json_schema_construction() {
414408

415409
static bool test_universal_grammar_accepts_anything(const GrammarFixture& fixture) {
416410
auto grammar = GrammarHandle(make_grammar_universal(), &cactus_grammar_destroy);
417-
return cactus_grammar_is_universal(grammar.get())
418-
&& accepts_complete_text(grammar.get(), fixture, "")
411+
return accepts_complete_text(grammar.get(), fixture, "")
419412
&& accepts_complete_text(grammar.get(), fixture, "blob says hello from cactus")
420413
&& accepts_complete_text(grammar.get(), fixture, "line one\nline two\nline three");
421414
}
422415

423-
static bool test_union_with_universal_returns_universal() {
424-
auto universal = GrammarHandle(make_grammar_universal(), &cactus_grammar_destroy);
425-
auto specific = GrammarHandle(make_grammar_ebnf("root ::= \"hello\""), &cactus_grammar_destroy);
426-
cactus_grammar_t handles[] = {specific.get(), universal.get()};
427-
auto combined = GrammarHandle(make_grammar_handle(cactus_grammar_union(handles, 2)), &cactus_grammar_destroy);
428-
return cactus_grammar_is_universal(combined.get());
429-
}
430-
431416
static bool test_structural_tag_accepts_and_rejects_expected_text(const GrammarFixture& fixture) {
432417
auto grammar = GrammarHandle(make_grammar_structural_tag(tool_call_structural_tag_json(), fixture.vocab.get()), &cactus_grammar_destroy);
433418
auto matcher = GrammarMatcherHandle(make_matcher(grammar.get(), fixture.engine.get()), &cactus_grammar_matcher_destroy);
@@ -610,7 +595,6 @@ int main() {
610595
runner.run_test("regex_language", test_regex_accepts_expected_text(fixture));
611596
runner.run_test("json_schema_language", test_json_schema_accepts_expected_text(fixture));
612597
runner.run_test("universal", test_universal_grammar_accepts_anything(fixture));
613-
runner.run_test("union_with_universal_returns_universal", test_union_with_universal_returns_universal());
614598
runner.run_test("structural_tag_language", test_structural_tag_accepts_and_rejects_expected_text(fixture));
615599
runner.run_test("grammar_matcher_reset", test_grammar_matcher_reset_restores_initial_state(fixture));
616600
runner.run_test("grammar_matcher_rollback", test_grammar_matcher_rollback_restores_previous_state(fixture));

0 commit comments

Comments
 (0)