diff --git a/src/sdf_toolkit/parser/sdf.lark b/src/sdf_toolkit/parser/sdf.lark index 6b87e08..3aca7c9 100644 --- a/src/sdf_toolkit/parser/sdf.lark +++ b/src/sdf_toolkit/parser/sdf.lark @@ -119,7 +119,7 @@ rvalue: FLOAT real_triple: [FLOAT] ":" [FLOAT] ":" [FLOAT] // Equations (for conditions) -equation: (operator | STRING | FLOAT | SCALARCONSTANT)+ +equation: (operator | STRING | EQNUMBER | SCALARCONSTANT)+ operator: ARITHMETIC | SLASH | MODULO | LOGIC_NOT | BIT_NOT | LOGIC_AND | BIT_AND | NAND | LOGIC_OR | BIT_OR | NOR | XOR | XNOR | EQUAL @@ -171,7 +171,9 @@ ASTERISK: "*" // Improved values (better patterns but compatible) FLOAT: /-?(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:[eE][+-]?[0-9]+)?/ -SCALARCONSTANT: /[01]?'[bB][01]/ +SCALARCONSTANT.3: /[01]?'[bB][01]/ +// Numbers inside a condition keep their original text (see equation) +EQNUMBER.2: /[-+]?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?/ QFLOAT: /"[-+]?(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:[eE][+-]?[0-9]+)?"/ QSTRING: /"[^"]*"/ STRING: /[a-zA-Z0-9_\/.\[\]\\$]+/ diff --git a/tests/data/golden/fixpoint.sdf b/tests/data/golden/fixpoint.sdf index fd3c528..10365e5 100644 --- a/tests/data/golden/fixpoint.sdf +++ b/tests/data/golden/fixpoint.sdf @@ -8,16 +8,16 @@ (INSTANCE slicem/lut_c) (DELAY (ABSOLUTE - (COND (B == 1.0 'b0 && C == 1.0 'b0 && D == 1.0 'b0) + (COND (B == 1'b0 && C == 1'b0 && D == 1'b0) (IOPATH A Z (61.5:100.0:150.9)(26.9:40.0:61.4)) ) - (COND (A == 1.0 'b0 && C == 1.0 'b0 && D == 1.0 'b0) + (COND (A == 1'b0 && C == 1'b0 && D == 1'b0) (IOPATH B Z (58.9:95.1:141.9)(24.5:36.0:55.8)) ) - (COND (A == 1.0 'b0 && B == 1.0 'b0 && D == 1.0 'b0) + (COND (A == 1'b0 && B == 1'b0 && D == 1'b0) (IOPATH C Z (59.9:95.6:141.1)(24.2:35.2:55.0)) ) - (COND (A == 1.0 'b0 && B == 1.0 'b0 && C == 1.0 'b0) + (COND (A == 1'b0 && B == 1'b0 && C == 1'b0) (IOPATH D Z (62.7:100.9:149.7)(26.1:38.3:59.9)) ) ) diff --git a/tests/data/golden/spec-example2.sdf b/tests/data/golden/spec-example2.sdf index 9747c35..6f9e3e5 100644 --- a/tests/data/golden/spec-example2.sdf +++ b/tests/data/golden/spec-example2.sdf @@ -16,16 +16,16 @@ (INSTANCE top.ff1) (DELAY (ABSOLUTE - (COND (TE == 0.0 && RB == 1.0 && SB == 1.0) + (COND (TE == 0 && RB == 1 && SB == 1) (IOPATH (posedge CP) Q (2.0:2.0:2.0)(3.0:3.0:3.0)) ) - (COND (TE == 0.0 && RB == 1.0 && SB == 1.0) + (COND (TE == 0 && RB == 1 && SB == 1) (IOPATH (posedge CP) QN (4.0:4.0:4.0)(5.0:5.0:5.0)) ) - (COND (TE == 1.0 && RB == 1.0 && SB == 1.0) + (COND (TE == 1 && RB == 1 && SB == 1) (IOPATH (posedge CP) QN (8.0:8.0:8.0)(9.0:9.0:9.0)) ) - (COND (TE == 1.0 && RB == 1.0 && SB == 1.0) + (COND (TE == 1 && RB == 1 && SB == 1) (IOPATH (posedge CP) Q (6.0:6.0:6.0)(7.0:7.0:7.0)) ) (IOPATH (negedge RB) Q (1.0:1.0:1.0)(1.0:1.0:1.0))