root ::= (" "| "\n") grammar-models grammar-models ::= category category ::= "{" "\n" ws "\"flag\"" ":" ws category-flag "\n" ws "}" category-flag ::= "\"safe\"" | "\"unsafe\"" boolean ::= "true" | "false" null ::= "null" string ::= "\"" ( [^"\\] | "\\" (["\\/bfnrt] | "u" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]) )* "\"" ws ws ::= ([ \t\n] ws)? float ::= ("-"? ([0-9] | [1-9] [0-9]*)) ("." [0-9]+)? ([eE] [-+]? [0-9]+)? ws integer ::= [0-9]+