ANTLR4 CPP14语法无法识别十进制数
ANTLR4 CPP14 Grammar not able to identify decimal numbers
我正在使用下面的 ANTLR 语法来解析我的代码。
https://github.com/antlr/grammars-v4/tree/master/cpp
以下代码在解析时出错。这里的 "08" 没有标识为整数文字。
TEST_F(suite_name_test_p, 08)
{
//...
}
我已进行以下更改以修复此错误:
Decimalliteral
//: NONZERODIGIT ('\''? DIGIT)* //old
: NONZERODIGIT* ('\''? DIGIT)+ // changed to
;
但是随着这些变化,八进制数字被识别为整数文字。还有其他更改建议吗?
以 0 开头的整数是八进制的,基数为 8,因此只允许使用数字 0-7,每个数字代表 3 位。
因此在您的情况下,08 包含非法数字 8。
您似乎已经意识到这一点,但可能希望从符合 non-C++ 的语法中完全删除八进制数:
我没读过语法,但一定有 IntegerLiteral 和“OctalLiteral”的替代方法。必须删除八进制替代项才能从语言中完全删除八进制数字。
我正在使用下面的 ANTLR 语法来解析我的代码。
https://github.com/antlr/grammars-v4/tree/master/cpp
以下代码在解析时出错。这里的 "08" 没有标识为整数文字。
TEST_F(suite_name_test_p, 08)
{
//...
}
我已进行以下更改以修复此错误:
Decimalliteral
//: NONZERODIGIT ('\''? DIGIT)* //old
: NONZERODIGIT* ('\''? DIGIT)+ // changed to
;
但是随着这些变化,八进制数字被识别为整数文字。还有其他更改建议吗?
以 0 开头的整数是八进制的,基数为 8,因此只允许使用数字 0-7,每个数字代表 3 位。
因此在您的情况下,08 包含非法数字 8。
您似乎已经意识到这一点,但可能希望从符合 non-C++ 的语法中完全删除八进制数:
我没读过语法,但一定有 IntegerLiteral 和“OctalLiteral”的替代方法。必须删除八进制替代项才能从语言中完全删除八进制数字。