Skip to content

Commit 626c6cd

Browse files
authored
Fix grammar to accept numbers without leading zeros, e.g. ".45" (#1578)
Many matrices of the matrix market are are parsed incorrectly because of the missing leading zero. Example: <https://sparse.tamu.edu/Grund/b1_ss> ``` %%MatrixMarket matrix coordinate real general %------------------------------------------------------------------------------- % UF Sparse Matrix Collection, Tim Davis % http://www.cise.ufl.edu/research/sparse/matrices/Grund/b1_ss % name: Grund/b1_ss % [Unsymmetric Matrix b1_ss, F. Grund, Dec 1994.] % id: 449 % date: 1997 % author: F. Grund % ed: F. Grund % fields: title A b name id date author ed kind % kind: chemical process simulation problem %------------------------------------------------------------------------------- 7 7 15 5 1 -.03599942 6 1 -.0176371 7 1 -.007721779 1 2 1 2 2 -1 1 3 1 3 3 -1 1 4 1 4 4 -1 2 5 .45 5 5 1 3 6 .1 6 6 1 4 7 .45 7 7 1 ``` And the .45 and the .1 are not being read. Note that ../../nalgebra-sparse/src/io/matrix_market.pest is correct. Also: `".45".parse::<f64>()` works.`
1 parent 96c5d87 commit 626c6cd

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/io/matrix_market.pest

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ Document = {
1212
(NEWLINE ~ Entry?)*
1313
}
1414
Dimension = @{ ASCII_DIGIT+ }
15-
Value = @{ ("+" | "-")? ~ NUMBER+ ~ ("." ~ NUMBER+)? ~ ("e" ~ ("+" | "-")? ~ NUMBER+)? }
16-
Entry = { Dimension ~ Dimension ~ Value }
15+
Value = @{ ("+" | "-")? ~ (NUMBER+ ~ ("." ~ NUMBER*)? | "." ~ NUMBER+) ~ (("e" | "E") ~ ("+" | "-")? ~ NUMBER+)? }
16+
Entry = { Dimension ~ Dimension ~ Value }

0 commit comments

Comments
 (0)