Add support for C++14 binary literals

This commit is contained in:
Maikel Steneker
2020-12-09 16:08:04 +01:00
parent 5fffaa90f5
commit 26728348f6
3 changed files with 19 additions and 2 deletions

View File

@ -284,12 +284,14 @@ TOKEN :
TOKEN:
{
< #DECIMALDIGIT: ["0"-"9"] >
< #BINARYDIGIT: ["0"-"1"] >
| < #OCTALDIGIT: ["0"-"7"] >
| < #DECIMALDIGIT: ["0"-"9"] >
| < #HEXDIGIT: ["a"-"f", "A"-"F", "0"-"9"] >
| < #INT_SUFFIX: ["u", "U", "l", "L"] | "uL" | "Ul" | "UL" | "ul" | "lu" | "Lu" | "lU" | "LU" >
| < ZERO: "0" >
| < BINARY_INT_LITERAL: "0" ["b", "B"] ("'" | <BINARYDIGIT>)+ (<INT_SUFFIX>)? >
| < OCTAL_INT_LITERAL: "0" ("'" | <OCTALDIGIT>)+ (<INT_SUFFIX>)? >
| < DECIMAL_INT_LITERAL: ["1"-"9"] ("'" | <DECIMALDIGIT>)* (<INT_SUFFIX>)? >
| < HEXADECIMAL_INT_LITERAL: "0" ["x", "X"] <HEXDIGIT> ("'" | <HEXDIGIT>)+ (<INT_SUFFIX>)? >

View File

@ -37,4 +37,7 @@
auto hex_literal = 0x0F00'abcd'6f3d;
auto silly_example = 1'0'0'000'00;
// boolean literals
int b1 = 0B001101; // C++ 14 binary literal
int b2 = 0b000001; // C++ 14 binary literal
}

View File

@ -118,6 +118,18 @@ L38
[=] 24 24
[1'0'0'000'00] 26 37
[;] 38 38
L40
L41
[int] 5 7
[b1] 9 10
[=] 12 12
[0B001101] 14 21
[;] 22 22
L42
[int] 5 7
[b2] 9 10
[=] 12 12
[0b000001] 14 21
[;] 22 22
L43
[}] 1 1
EOF