Skip to content

Commit f566d6b

Browse files
committed
Sync upstream: common/json-schema-to-grammar : align spacing rules with parsers (#24835)
Signed-off-by: JamePeng <jame_peng@sina.com>
1 parent df66523 commit f566d6b

1 file changed

Lines changed: 21 additions & 21 deletions

File tree

llama_cpp/llama_grammar.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -465,28 +465,28 @@ def __init__(self, content: str, deps: list = None):
465465
SPACE_RULE = '| " " | "\\n"{1,2} [ \\t]{0,20}'
466466

467467
PRIMITIVE_RULES = {
468-
'boolean' : BuiltinRule('("true" | "false") space', []),
468+
'boolean' : BuiltinRule('("true" | "false")', []),
469469
'decimal-part' : BuiltinRule('[0-9]{1,16}', []),
470470
'integral-part': BuiltinRule('[0] | [1-9] [0-9]{0,15}', []),
471-
'number' : BuiltinRule('("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)? space', ['integral-part', 'decimal-part']),
472-
'integer' : BuiltinRule('("-"? integral-part) space', ['integral-part']),
471+
'number' : BuiltinRule('("-"? integral-part) ("." decimal-part)? ([eE] [-+]? integral-part)?', ['integral-part', 'decimal-part']),
472+
'integer' : BuiltinRule('("-"? integral-part)', ['integral-part']),
473473
'value' : BuiltinRule('object | array | string | number | boolean | null', ['object', 'array', 'string', 'number', 'boolean', 'null']),
474-
'object' : BuiltinRule('"{" space ( string ":" space value ("," space string ":" space value)* )? "}" space', ['string', 'value']),
475-
'array' : BuiltinRule('"[" space ( value ("," space value)* )? "]" space', ['value']),
476-
'uuid' : BuiltinRule(r'"\"" [0-9a-fA-F]{8} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{12} "\"" space', []),
474+
'object' : BuiltinRule('"{" space ( string ":" space value ("," space string ":" space value)* )? space "}"', ['string', 'value']),
475+
'array' : BuiltinRule('"[" space ( value ("," space value)* )? space "]"', ['value']),
476+
'uuid' : BuiltinRule(r'"\"" [0-9a-fA-F]{8} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{4} "-" [0-9a-fA-F]{12} "\""', []),
477477
'char' : BuiltinRule(r'[^"\\\x7F\x00-\x1F] | [\\] (["\\bfnrt] | "u" [0-9a-fA-F]{4})', []),
478-
'string' : BuiltinRule(r'"\"" char* "\"" space', ['char']),
479-
'null' : BuiltinRule('"null" space', []),
478+
'string' : BuiltinRule(r'"\"" char* "\""', ['char']),
479+
'null' : BuiltinRule('"null"', []),
480480
}
481481

482482
# TODO: support "uri", "email" string formats
483483
STRING_FORMAT_RULES = {
484484
'date' : BuiltinRule('[0-9]{4} "-" ( "0" [1-9] | "1" [0-2] ) "-" ( \"0\" [1-9] | [1-2] [0-9] | "3" [0-1] )', []),
485485
'time' : BuiltinRule('([01] [0-9] | "2" [0-3]) ":" [0-5] [0-9] ":" [0-5] [0-9] ( "." [0-9]{3} )? ( "Z" | ( "+" | "-" ) ( [01] [0-9] | "2" [0-3] ) ":" [0-5] [0-9] )', []),
486486
'date-time' : BuiltinRule('date "T" time', ['date', 'time']),
487-
'date-string' : BuiltinRule('"\\"" date "\\"" space', ['date']),
488-
'time-string' : BuiltinRule('"\\"" time "\\"" space', ['time']),
489-
'date-time-string': BuiltinRule('"\\"" date-time "\\"" space', ['date-time']),
487+
'date-string' : BuiltinRule('"\\"" date "\\""', ['date']),
488+
'time-string' : BuiltinRule('"\\"" time "\\""', ['time']),
489+
'date-time-string': BuiltinRule('"\\"" date-time "\\""', ['date-time']),
490490
}
491491

492492
DOTALL = '[\\U00000000-\\U0010FFFF]'
@@ -585,7 +585,7 @@ def visit(node):
585585
out.append(f'[^"{"".join(rejects)}] {char_rule}*')
586586
visit(trie)
587587

588-
out.append(f' ){"" if trie.is_end_of_string else "?"} ["] space')
588+
out.append(f' ){"" if trie.is_end_of_string else "?"} ["]')
589589
return ''.join(out)
590590

591591
def _add_rule(self, name, rule):
@@ -815,7 +815,7 @@ def join_seq():
815815
return self._add_rule(
816816
name,
817817
to_rule(transform()) if self._raw_pattern \
818-
else "\"\\\"\" (" + to_rule(transform()) + ") \"\\\"\" space")
818+
else "\"\\\"\" (" + to_rule(transform()) + ") \"\\\"\"")
819819

820820

821821
def _resolve_ref(self, ref):
@@ -846,10 +846,10 @@ def visit(self, schema, name):
846846
return self._add_rule(rule_name, self._generate_union_rule(name, [{**schema, 'type': t} for t in schema_type]))
847847

848848
elif 'const' in schema:
849-
return self._add_rule(rule_name, self._generate_constant_rule(schema['const']) + ' space')
849+
return self._add_rule(rule_name, self._generate_constant_rule(schema['const']))
850850

851851
elif 'enum' in schema:
852-
rule = '(' + ' | '.join((self._generate_constant_rule(v) for v in schema['enum'])) + ') space'
852+
rule = '(' + ' | '.join((self._generate_constant_rule(v) for v in schema['enum'])) + ')'
853853
return self._add_rule(rule_name, rule)
854854

855855
elif schema_type in (None, 'object') and \
@@ -890,7 +890,7 @@ def add_component(comp_schema, is_required):
890890
enum_intersection &= s
891891

892892
if enum_intersection:
893-
rule = '(' + ' | '.join((self._generate_constant_rule(v) for v in sorted(enum_intersection))) + ') space'
893+
rule = '(' + ' | '.join((self._generate_constant_rule(v) for v in sorted(enum_intersection))) + ')'
894894
return self._add_rule(rule_name, rule)
895895

896896
return self._add_rule(rule_name, self._build_object_rule(properties, required, hybrid_name, additional_properties=None))
@@ -904,12 +904,12 @@ def add_component(comp_schema, is_required):
904904
' "," space '.join(
905905
self.visit(item, f'{name}{"-" if name else ""}tuple-{i}')
906906
for i, item in enumerate(items)) +
907-
' "]" space')
907+
' space "]"')
908908
else:
909909
item_rule_name = self.visit(items, f'{name}{"-" if name else ""}item')
910910
min_items = schema.get("minItems", 0)
911911
max_items = schema.get("maxItems")
912-
return self._add_rule(rule_name, '"[" space ' + _build_repetition(item_rule_name, min_items, max_items, separator_rule='"," space') + ' "]" space')
912+
return self._add_rule(rule_name, '"[" space ' + _build_repetition(item_rule_name, min_items, max_items, separator_rule='"," space') + ' space "]"')
913913

914914
elif schema_type in (None, 'string') and 'pattern' in schema:
915915
return self._visit_pattern(schema['pattern'], rule_name)
@@ -929,7 +929,7 @@ def add_component(comp_schema, is_required):
929929
min_len = schema.get('minLength', 0)
930930
max_len = schema.get('maxLength')
931931

932-
return self._add_rule(rule_name, r'"\"" ' + _build_repetition(char_rule, min_len, max_len) + r' "\"" space')
932+
return self._add_rule(rule_name, r'"\"" ' + _build_repetition(char_rule, min_len, max_len) + r' "\""')
933933

934934
elif schema_type in (None, 'integer') and \
935935
('minimum' in schema or 'exclusiveMinimum' in schema or 'maximum' in schema or 'exclusiveMaximum' in schema):
@@ -946,7 +946,7 @@ def add_component(comp_schema, is_required):
946946

947947
out = ["("]
948948
_generate_min_max_int(min_value, max_value, out)
949-
out.append(") space")
949+
out.append(")")
950950
return self._add_rule(rule_name, ''.join(out))
951951

952952
elif (schema_type == 'object') or (len(schema) == 0):
@@ -1031,7 +1031,7 @@ def get_recursive_refs(ks, first_is_optional):
10311031
rule += ' )'
10321032
rule += ' )?'
10331033

1034-
rule += ' "}" space'
1034+
rule += ' space "}"'
10351035

10361036
return rule
10371037

0 commit comments

Comments
 (0)