From 0fca5fc8a9449379a274bfdba411e2a8580a83e0 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Wed, 22 Jul 2020 00:23:50 -0500 Subject: [PATCH] JSON5 in dbStatic: Lexer support for NaN and Infinity The JSON5 spec requires exact capitalization of these strings. Other numeric parsers such as strtod() are usually more lenient. --- modules/database/src/ioc/dbStatic/dbLex.l | 3 ++- modules/database/test/ioc/db/dbStaticTest.db | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/database/src/ioc/dbStatic/dbLex.l b/modules/database/src/ioc/dbStatic/dbLex.l index 542959231..dd9dc8987 100644 --- a/modules/database/src/ioc/dbStatic/dbLex.l +++ b/modules/database/src/ioc/dbStatic/dbLex.l @@ -33,10 +33,11 @@ exp ([eE]{sign}[0-9]+) jsonnum ({int}{frac}?{exp}?) intexp ({int}"."{exp}?) fracexp ({sign}{frac}{exp}?) +specialnum ("NaN"|{sign}"Infinity") zerox ("0x"|"0X") hexint ({sign}{zerox}{hexdigit}+) -number ({jsonnum}|{intexp}|{fracexp}|{hexint}) +number ({jsonnum}|{intexp}|{fracexp}|{specialnum}|{hexint}) %{ #undef YY_INPUT diff --git a/modules/database/test/ioc/db/dbStaticTest.db b/modules/database/test/ioc/db/dbStaticTest.db index 546cb0bbb..75e981f1a 100644 --- a/modules/database/test/ioc/db/dbStaticTest.db +++ b/modules/database/test/ioc/db/dbStaticTest.db @@ -73,4 +73,12 @@ record(x, "t1") { field(F64, -.123e4) field(F32, -123.e4) field(F64, -123.e4) + field(F32, Infinity) + field(F64, Infinity) + field(F32, +Infinity) + field(F64, +Infinity) + field(F32, -Infinity) + field(F64, -Infinity) + field(F32, Nan) + field(F64, Nan) }