aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spec/inputs/literals.yue3
-rw-r--r--spec/outputs/literals.lua3
-rw-r--r--src/yuescript/yue_compiler.cpp2
-rw-r--r--src/yuescript/yue_parser.cpp20
4 files changed, 18 insertions, 10 deletions
diff --git a/spec/inputs/literals.yue b/spec/inputs/literals.yue
index 8b81fde..ef8b5f1 100644
--- a/spec/inputs/literals.yue
+++ b/spec/inputs/literals.yue
@@ -10,6 +10,9 @@ _ = {
10 0xfF2323 10 0xfF2323
11 0xabcdef 11 0xabcdef
12 0xABCDEF 12 0xABCDEF
13 0x123p-123
14 0xABCP+321
15 0x.1p-111
13 16
14 .2323 17 .2323
15 .2323e-1 18 .2323e-1
diff --git a/spec/outputs/literals.lua b/spec/outputs/literals.lua
index 4495725..0d4d8b8 100644
--- a/spec/outputs/literals.lua
+++ b/spec/outputs/literals.lua
@@ -8,6 +8,9 @@ local _ = {
8 0xfF2323, 8 0xfF2323,
9 0xabcdef, 9 0xabcdef,
10 0xABCDEF, 10 0xABCDEF,
11 0x123p-123,
12 0xABCP+321,
13 0x.1p-111,
11 .2323, 14 .2323,
12 .2323e-1, 15 .2323e-1,
13 .2323e13434, 16 .2323e13434,
diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp
index 3e58305..0d674f8 100644
--- a/src/yuescript/yue_compiler.cpp
+++ b/src/yuescript/yue_compiler.cpp
@@ -60,7 +60,7 @@ namespace yue {
60 60
61typedef std::list<std::string> str_list; 61typedef std::list<std::string> str_list;
62 62
63const std::string_view version = "0.15.17"sv; 63const std::string_view version = "0.15.18"sv;
64const std::string_view extension = "yue"sv; 64const std::string_view extension = "yue"sv;
65 65
66class YueCompilerImpl { 66class YueCompilerImpl {
diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp
index 63c9162..acdc343 100644
--- a/src/yuescript/yue_parser.cpp
+++ b/src/yuescript/yue_parser.cpp
@@ -57,23 +57,25 @@ YueParser::YueParser() {
57 num_char_hex = range('0', '9') | range('a', 'f') | range('A', 'F'); 57 num_char_hex = range('0', '9') | range('a', 'f') | range('A', 'F');
58 num_lit = num_char_hex >> *(num_char_hex | expr('_') >> and_(num_char_hex)); 58 num_lit = num_char_hex >> *(num_char_hex | expr('_') >> and_(num_char_hex));
59 Num = ( 59 Num = (
60 "0x." >> +num_lit >> -num_expo_hex 60 "0x" >> (
61 ) | ( 61 +num_lit >> (
62 "0x" >> +num_lit >> ( 62 '.' >> +num_lit >> -num_expo_hex |
63 '.' >> +num_lit >> -num_expo_hex | 63 num_expo_hex |
64 num_expo_hex | 64 lj_num |
65 lj_num | 65 true_()
66 true_() 66 ) | (
67 '.' >> +num_lit >> -num_expo_hex
68 )
67 ) 69 )
68 ) | ( 70 ) | (
69 '.' >> +num_char >> -num_expo
70 ) | (
71 +num_char >> ( 71 +num_char >> (
72 '.' >> +num_char >> -num_expo | 72 '.' >> +num_char >> -num_expo |
73 num_expo | 73 num_expo |
74 lj_num | 74 lj_num |
75 true_() 75 true_()
76 ) 76 )
77 ) | (
78 '.' >> +num_char >> -num_expo
77 ); 79 );
78 80
79 Cut = false_(); 81 Cut = false_();