From 84d34ad376e425a85b546227a48a16af24924137 Mon Sep 17 00:00:00 2001 From: "jie.wang" <38901892+jievince@users.noreply.github.com> Date: Tue, 12 Apr 2022 16:24:45 +0800 Subject: [PATCH] fix the wrong regex pattern of scientific notation (#4136) --- src/parser/scanner.lex | 5 ++--- src/parser/test/ScannerTest.cpp | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/parser/scanner.lex b/src/parser/scanner.lex index 7650feab8f5..b0e13b4b978 100644 --- a/src/parser/scanner.lex +++ b/src/parser/scanner.lex @@ -402,9 +402,8 @@ LABEL_FULL_WIDTH {CN_EN_FULL_WIDTH}{CN_EN_NUM_FULL_WIDTH}* return parseDecimal(); } -{DEC}*\.{DEC}+ | -{DEC}+\.{DEC}* | -{DEC}*\.{DEC}*{EXP} | +{DEC}*\.{DEC}+{EXP}? | +{DEC}+\.{DEC}*{EXP}? | {DEC}+{EXP} { return parseDouble(); } diff --git a/src/parser/test/ScannerTest.cpp b/src/parser/test/ScannerTest.cpp index a9d612f09fe..bd05a318dd3 100644 --- a/src/parser/test/ScannerTest.cpp +++ b/src/parser/test/ScannerTest.cpp @@ -540,6 +540,9 @@ TEST(Scanner, Basic) { CHECK_SEMANTIC_VALUE("123.", TokenType::DOUBLE, 123.), CHECK_SEMANTIC_VALUE(".123", TokenType::DOUBLE, 0.123), CHECK_SEMANTIC_VALUE("123.456", TokenType::DOUBLE, 123.456), + CHECK_SEMANTIC_VALUE("1.2e1", TokenType::DOUBLE, 12.0), + CHECK_SEMANTIC_VALUE("1.e2", TokenType::DOUBLE, 100.0), + CHECK_SEMANTIC_VALUE(".2e3", TokenType::DOUBLE, 200.0), CHECK_SEMANTIC_VALUE("0x7FFFFFFFFFFFFFFF", TokenType::INTEGER, 0x7FFFFFFFFFFFFFFFL), CHECK_SEMANTIC_VALUE("0x007FFFFFFFFFFFFFFF", TokenType::INTEGER, 0x007FFFFFFFFFFFFFFFL),