Parsing 一个值中包含多个点的SVG路径数据

Parsing 一个值中包含多个点的SVG路径数据,parsing,svg,Parsing,Svg,我不得不编写自己的SVG路径解析器,发现我无法解析一些来自Wikipedia的文件。 在第二个路径的数据中,我找到了-24.57.56,它只是一个无效值,我看不出如何解析它。如果您查看,您会发现以下解释: BNF的处理必须消耗尽可能多的给定BNF产品,在遇到不再满足产品要求的字符时停止。。。对于字符串M 0.6.5,“moveto”的第一个坐标消耗字符0.6,并在遇到第二个小数点时停止,因为“坐标”的生成只允许一个小数点。结果是第一个坐标为0.6,第二个坐标为0.5 就您的示例而言,生产-24.

我不得不编写自己的SVG路径解析器,发现我无法解析一些来自Wikipedia的文件。 在第二个路径的数据中,我找到了
-24.57.56
,它只是一个无效值,我看不出如何解析它。

如果您查看,您会发现以下解释:

BNF的处理必须消耗尽可能多的给定BNF产品,在遇到不再满足产品要求的字符时停止。。。对于字符串
M 0.6.5
,“moveto”的第一个坐标消耗字符
0.6
,并在遇到第二个小数点时停止,因为“坐标”的生成只允许一个小数点。结果是第一个坐标为
0.6
,第二个坐标为
0.5

就您的示例而言,生产
-24.57.56
相当于
-24.57,0.56


你也可以说:在一个点之前的前导零,逗号和空格总是可选的。编写路径数据的作者必须仅使用它们来避免歧义,并确保可以解析为一个数字的长度符合他们的意图。

它不是无效值。它是两个有效值。第一个值是
-24.57
,第二个值是
.56

不要求坐标值之间存在空格。不过,如果结果是错误的,有时也需要这样做。例如,
10.5
不能缩短为
10.5