diff options
Diffstat (limited to 'core/encoding/json/parser.odin')
| -rw-r--r-- | core/encoding/json/parser.odin | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/core/encoding/json/parser.odin b/core/encoding/json/parser.odin index 2c7d79465..aa041ba5e 100644 --- a/core/encoding/json/parser.odin +++ b/core/encoding/json/parser.odin @@ -93,6 +93,28 @@ parse_value :: proc(p: ^Parser) -> (value: Value, err: Error) { case Kind.Open_Bracket: return parse_array(p); + + case: + if p.spec == Specification.JSON5 { + switch token.kind { + case Kind.Infinity: + inf: u64 = 0x7ff0000000000000; + if token.text[0] == '-' { + inf = 0xfff0000000000000; + } + value.value = transmute(f64)inf; + advance_token(p); + return; + case Kind.NaN: + nan: u64 = 0x7ff7ffffffffffff; + if token.text[0] == '-' { + nan = 0xfff7ffffffffffff; + } + value.value = transmute(f64)nan; + advance_token(p); + return; + } + } } err = Error.Unexpected_Token; |