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 | |
} | |