JSON5 in dbStatic: Modify lexer's number support
dbLex.l acceps a leading or trailing decimal point with float/double values and an explicit leading + on all numbers. Tested in dbStaticTest.db but only passing tests.
This commit is contained in:
@@ -25,10 +25,15 @@ hexdigit [0-9a-fA-F]
|
||||
unicodechar ({backslash}"u"{hexdigit}{4})
|
||||
jsonchar ({normalchar}|{escapedchar}|{unicodechar})
|
||||
jsondqstr ({doublequote}{jsonchar}*{doublequote})
|
||||
int ("-"?([0-9]|[1-9][0-9]+))
|
||||
|
||||
sign ([+-]?)
|
||||
int ({sign}([0-9]|[1-9][0-9]+))
|
||||
frac ("."[0-9]+)
|
||||
exp ([eE][+-]?[0-9]+)
|
||||
number ({int}{frac}?{exp}?)
|
||||
exp ([eE]{sign}[0-9]+)
|
||||
jsonnum ({int}{frac}?{exp}?)
|
||||
intexp ({int}"."{exp}?)
|
||||
fracexp ({sign}{frac}{exp}?)
|
||||
number ({jsonnum}|{intexp}|{fracexp})
|
||||
|
||||
%{
|
||||
#undef YY_INPUT
|
||||
|
||||
@@ -6,3 +6,43 @@ record(x, "testrec") {
|
||||
|
||||
alias("testrec", "testalias2")
|
||||
alias("testalias2", "testalias3")
|
||||
|
||||
# New number formats allowed in JSON5, show dbLex/dbYacc parsing
|
||||
record(x, "t1") {
|
||||
field( C8, +12)
|
||||
field( U8, +123)
|
||||
field(I16, +1234)
|
||||
field(U16, +12345)
|
||||
field(I32, +123456)
|
||||
field(U32, +1234567)
|
||||
field(I64, +12345678)
|
||||
field(U64, +123456789)
|
||||
field(F32, .123)
|
||||
field(F64, .123)
|
||||
field(F32, 123.)
|
||||
field(F64, 123.)
|
||||
field(F32, +.123)
|
||||
field(F64, +.123)
|
||||
field(F32, +123.)
|
||||
field(F64, +123.)
|
||||
field(F32, -.123)
|
||||
field(F64, -.123)
|
||||
field(F32, -123.)
|
||||
field(F64, -123.)
|
||||
field(F32, .123e4)
|
||||
field(F64, .123e4)
|
||||
field(F32, 123.e4)
|
||||
field(F64, 123.e4)
|
||||
field(F32, 123.e+4)
|
||||
field(F64, 123.e+4)
|
||||
field(F32, 123.e-4)
|
||||
field(F64, 123.e-4)
|
||||
field(F32, +.123e4)
|
||||
field(F64, +.123e4)
|
||||
field(F32, +123.e4)
|
||||
field(F64, +123.e4)
|
||||
field(F32, -.123e4)
|
||||
field(F64, -.123e4)
|
||||
field(F32, -123.e4)
|
||||
field(F64, -123.e4)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user