忽略前导零的 flex 中实数的正则表达式

regex for a real number in flex ignoring leading zeros

我有以下几套:

NUMBER  [0-9]+
DECIMAL ("."{NUMBER})|({NUMBER}("."{NUMBER}?)?)
REAL    {DECIMAL}([eE][+-]?{NUMBER})?

我希望我的词法分析器接受实数,例如: 0.002 或 0.004e-10 或 .01

问题是我希望它忽略前导零但保留其余数字,例如:

当我给出 000.0002 时,我想保留 0.0002,当我给出 0.2e-0100 时,我想保留 0.2e-100

所以我在想类似 atof 函数的东西,但我不知道具体怎么做。

有什么想法吗?

提前致谢

lex 将 return 您的模式匹配的完整标记作为一个字符串。您无法更改 that。以相当大的复杂性为代价,您可以使用开始条件来匹配前导零(这可能是唯一的数字),并为片段收集标记,例如,

0.2e-0100

作为

0.2e-
0
100

并将 first/last 标记粘合在一起,但您会发现 更容易开发自己的字符串函数来过滤掉不需要的前导零。