diff options
Diffstat (limited to '')
| -rw-r--r-- | src/yuescript/yue_parser.cpp | 16 | ||||
| -rw-r--r-- | src/yuescript/yue_parser.h | 1 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp index 1ff772b..63c9162 100644 --- a/src/yuescript/yue_parser.cpp +++ b/src/yuescript/yue_parser.cpp | |||
| @@ -50,13 +50,23 @@ YueParser::YueParser() { | |||
| 50 | EmptyLine = SpaceBreak; | 50 | EmptyLine = SpaceBreak; |
| 51 | AlphaNum = range('a', 'z') | range('A', 'Z') | range('0', '9') | '_'; | 51 | AlphaNum = range('a', 'z') | range('A', 'Z') | range('0', '9') | '_'; |
| 52 | Name = (range('a', 'z') | range('A', 'Z') | '_') >> *AlphaNum; | 52 | Name = (range('a', 'z') | range('A', 'Z') | '_') >> *AlphaNum; |
| 53 | num_expo = set("eE") >> -expr('-') >> num_char; | 53 | num_expo = set("eE") >> -set("+-") >> num_char; |
| 54 | num_expo_hex = set("pP") >> -set("+-") >> num_char; | ||
| 54 | lj_num = -set("uU") >> set("lL") >> set("lL"); | 55 | lj_num = -set("uU") >> set("lL") >> set("lL"); |
| 55 | num_char = range('0', '9') >> *(range('0', '9') | expr('_') >> and_(range('0', '9'))); | 56 | num_char = range('0', '9') >> *(range('0', '9') | expr('_') >> and_(range('0', '9'))); |
| 56 | 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'); |
| 57 | 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)); |
| 58 | Num = ( | 59 | Num = ( |
| 59 | "0x" >> +num_lit >> -lj_num | 60 | "0x." >> +num_lit >> -num_expo_hex |
| 61 | ) | ( | ||
| 62 | "0x" >> +num_lit >> ( | ||
| 63 | '.' >> +num_lit >> -num_expo_hex | | ||
| 64 | num_expo_hex | | ||
| 65 | lj_num | | ||
| 66 | true_() | ||
| 67 | ) | ||
| 68 | ) | ( | ||
| 69 | '.' >> +num_char >> -num_expo | ||
| 60 | ) | ( | 70 | ) | ( |
| 61 | +num_char >> ( | 71 | +num_char >> ( |
| 62 | '.' >> +num_char >> -num_expo | | 72 | '.' >> +num_char >> -num_expo | |
| @@ -64,8 +74,6 @@ YueParser::YueParser() { | |||
| 64 | lj_num | | 74 | lj_num | |
| 65 | true_() | 75 | true_() |
| 66 | ) | 76 | ) |
| 67 | ) | ( | ||
| 68 | '.' >> +num_char >> -num_expo | ||
| 69 | ); | 77 | ); |
| 70 | 78 | ||
| 71 | Cut = false_(); | 79 | Cut = false_(); |
diff --git a/src/yuescript/yue_parser.h b/src/yuescript/yue_parser.h index a4ecafd..c37894c 100644 --- a/src/yuescript/yue_parser.h +++ b/src/yuescript/yue_parser.h | |||
| @@ -123,6 +123,7 @@ private: | |||
| 123 | rule num_char_hex; | 123 | rule num_char_hex; |
| 124 | rule num_lit; | 124 | rule num_lit; |
| 125 | rule num_expo; | 125 | rule num_expo; |
| 126 | rule num_expo_hex; | ||
| 126 | rule lj_num; | 127 | rule lj_num; |
| 127 | rule plain_space; | 128 | rule plain_space; |
| 128 | rule Break; | 129 | rule Break; |
