Spaces:
Configuration error
Configuration error
| package grammars | |
| import ( | |
| "encoding/json" | |
| "regexp" | |
| ) | |
| var ( | |
| PRIMITIVE_RULES = map[string]string{ | |
| "boolean": `("true" | "false") space`, | |
| "number": `("-"? ([0-9] | [1-9] [0-9]*)) ("." [0-9]+)? ([eE] [-+]? [0-9]+)? space`, | |
| "integer": `("-"? ([0-9] | [1-9] [0-9]*)) space`, | |
| "string": `"\"" ( | |
| [^"\\] | | |
| "\\" (["\\/bfnrt] | "u" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]) | |
| )* "\"" space`, | |
| // TODO: we shouldn't forbid \" and \\ or all unicode and have this branch here, | |
| // however, if we don't have it, the grammar will be ambiguous and | |
| // empirically results are way worse. | |
| "freestring": `( | |
| [^\x00] | | |
| "\\" (["\\/bfnrt] | "u" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]) | |
| )* space`, | |
| "null": `"null" space`, | |
| } | |
| INVALID_RULE_CHARS_RE = regexp.MustCompile(`[^a-zA-Z0-9-]+`) | |
| GRAMMAR_LITERAL_ESCAPE_RE = regexp.MustCompile(`[\r\n"]`) | |
| GRAMMAR_LITERAL_ESCAPES = map[string]string{ | |
| "\r": `\r`, | |
| "\n": `\n`, | |
| `"`: `\"`, | |
| } | |
| ) | |
| const ( | |
| SPACE_RULE = `" "?` | |
| arrayNewLines = `arr ::= | |
| "[\n" ( | |
| realvalue | |
| (",\n" realvalue)* | |
| )? "]"` | |
| array = `arr ::= | |
| "[" ( | |
| realvalue | |
| ("," realvalue)* | |
| )? "]"` | |
| ) | |
| func jsonString(v interface{}) (string, error) { | |
| b, err := json.Marshal(v) | |
| if err != nil { | |
| return "", err | |
| } | |
| return string(b), nil | |
| } | |