C++ Mathematical Expression Library (ExprTk) https://www.partow.net/programming/exprtk/index.html
Signed-off-by: Arash Partow <partow@gmail.com>
This commit is contained in:
parent
ddafbfe57a
commit
8c458ed4a6
724
exprtk.hpp
724
exprtk.hpp
File diff suppressed because it is too large
Load Diff
|
@ -8419,12 +8419,16 @@ equal(if(x < y){z+2;z;} else w; == z,true)
|
|||
equal(if(x > y){z + 2; z;} else 1 + w; == (w + 1),true)
|
||||
equal(if(x < y){z + 2; z;} else {1+2;w;} == z,true)
|
||||
equal(if(x > y){z + 2; z;} else {1+2;w;} == w,true)
|
||||
equal(if(x < y){z+2;z;} else if (x < y) w; == z,true)
|
||||
equal(if(x > y){z+2;z;} else if (x < y) 1 + w; == w + 1,true)
|
||||
equal(if(x > y){z+2;z;} else if (x > y) w; == null,true)
|
||||
equal((if(x < y){z + 2; z;} else if (x < y) w;) == z,true)
|
||||
equal((if(x > y){z + 2; z;} else if (x < y) 1 + w;) == w + 1,true)
|
||||
equal((if(x > y){z + 2; z;} else if (x > y) w;) == null,true)
|
||||
equal(if(x < y){z + 2; z;} else if (x < y) {w+2;w;} == z,true)
|
||||
equal(if(x > y){z + 2; z;} else if (x < y) {w+2;w;} == w,true)
|
||||
equal(if(x > y){z + 2; z;} else if (x > y) {w+2;w;} == null,true)
|
||||
equal(~{var xx := 1; var yy := 2; var result := if (xx > 0 and abs(y)) { xx + yy; } else { xx - yy }; result == 3},true)
|
||||
equal(~{var xx := 1; var yy := 2; var result := if ((xx > 0) and abs(y)) { xx + yy; } else { xx - yy }; result == 3},true)
|
||||
equal(~{var xx := 1; var yy := 2; var result := if (abs(y) and xx > 0) { xx + yy; } else { xx - yy }; result == 3},true)
|
||||
equal(~{var xx := 1; var yy := 2; var result := if (abs(y) and (xx > 0)) { xx + yy; } else { xx - yy }; result == 3},true)
|
||||
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; xx := yy; (xx[0] == 1) and (xx[1] == 2) and (xx[2] == 3) and (xx[3] == 0)},true)
|
||||
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; xx := (yy + 1); (xx[0] == 2) and (xx[1] == 3) and (xx[2] == 4) and (xx[3] == 0)},true)
|
||||
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; xx := (1 + yy); (xx[0] == 2) and (xx[1] == 3) and (xx[2] == 4) and (xx[3] == 0)},true)
|
||||
|
@ -8608,6 +8612,10 @@ equal(~{var v[5] := {0, 1, 2, 3, 4}; var xx := 1; var yy := 1; (abs(2 * abs(v +
|
|||
equal(~{var v[5] := {0, 1, 2, 3, 4}; var xx := 1; var yy := 1; (abs(abs(v + xx) * 2) - xx)[xx / yy] == 3},true)
|
||||
equal(~{var v[5] := {0, 1, 2, 3, 4}; var xx := 1; var yy := 1; (abs(2abs(v + xx)) - xx)[xx / yy] == 3},true)
|
||||
equal(~{var v[5] := {0, 1, 2, 3, 4}; var xx := 1; var yy := 1; (abs(abs(v + xx)2) - xx)[xx / yy] == 3},true)
|
||||
equal(~{var v[3] := [1]; all_true (v[0],v[1],v[2])},true)
|
||||
equal(~{var v[3] := [1]; any_true (v[0],v[1],v[2])},true)
|
||||
equal(~{var v[3] := [0]; all_false(v[0],v[1],v[2])},true)
|
||||
equal(~{var v[3] := [0]; any_false(v[0],v[1],v[2])},true)
|
||||
equal(~{var v[5] := {0,1,2,3,4}; var xx := -1; all_true(abs(abs(xx * v)) == v)},true)
|
||||
equal(~{var v[5] := {0,1,2,3,4}; var xx := -1; all_true(abs(abs(v * xx)) == v)},true)
|
||||
equal(~{var v[5] := {0,1,2,3,4}; var xx := 1; all_true(abs(abs(-xx * v)) == v)},true)
|
||||
|
@ -9300,30 +9308,30 @@ equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,1,1,3,1,5,1,7}; assign(v
|
|||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,1,4,1,6,1}; assign(v0,1,1,7,2); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; v0 := 0; all_false(v0)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,1,2,3,4,5,6,7}; v0 := 0; all_false(v0)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,2,3,4,5,6,7,8}; v0 := 0; iota(v0,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,2,4,6,8,10,12,14}; v0 := 0; iota(v0,0,2) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,3,6,9,12,15,18,21}; v0 := 0; iota(v0,0,3) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,2,3,4,5,6,7,8}; iota(v0,0,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,5,6,7}; iota(v0,1,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,1,2,3,4,5,6}; iota(v0,2,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,1,2,3,4,5}; iota(v0,3,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,1,2,3,4}; iota(v0,4,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,1,2,3}; iota(v0,5,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,5,1,2}; iota(v0,6,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,5,6,1}; iota(v0,7,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,2,3,4,5,6,7,8}; v0 := 0; iota(v0,0,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,5,6,7}; v0 := 0; iota(v0,1,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,1,2,3,4,5,6}; v0 := 0; iota(v0,2,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,1,2,3,4,5}; v0 := 0; iota(v0,3,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,1,2,3,4}; v0 := 0; iota(v0,4,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,0,1,2,3}; v0 := 0; iota(v0,5,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,0,0,1,2}; v0 := 0; iota(v0,6,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,0,0,0,1}; v0 := 0; iota(v0,7,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,2,3,4,0,0,0,0}; v0 := 0; iota(v0,0,3,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,0,0,0}; v0 := 0; iota(v0,1,4,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,1,2,3,4,0,0}; v0 := 0; iota(v0,2,5,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,1,2,3,4,0}; v0 := 0; iota(v0,3,6,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,1,2,3,4}; v0 := 0; iota(v0,4,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,2,3,4,5,6,7,8}; v0 := 0; iota(v0,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,2,4,6,8,10,12,14}; v0 := 0; iota(v0,0,2); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,3,6,9,12,15,18,21}; v0 := 0; iota(v0,0,3); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,2,3,4,5,6,7,8}; iota(v0,0,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,5,6,7}; iota(v0,1,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,1,2,3,4,5,6}; iota(v0,2,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,1,2,3,4,5}; iota(v0,3,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,1,2,3,4}; iota(v0,4,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,1,2,3}; iota(v0,5,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,5,1,2}; iota(v0,6,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,5,6,1}; iota(v0,7,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,2,3,4,5,6,7,8}; v0 := 0; iota(v0,0,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,5,6,7}; v0 := 0; iota(v0,1,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,1,2,3,4,5,6}; v0 := 0; iota(v0,2,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,1,2,3,4,5}; v0 := 0; iota(v0,3,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,1,2,3,4}; v0 := 0; iota(v0,4,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,0,1,2,3}; v0 := 0; iota(v0,5,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,0,0,1,2}; v0 := 0; iota(v0,6,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,0,0,0,1}; v0 := 0; iota(v0,7,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {1,2,3,4,0,0,0,0}; v0 := 0; iota(v0,0,3,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,1,2,3,4,0,0,0}; v0 := 0; iota(v0,1,4,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,1,2,3,4,0,0}; v0 := 0; iota(v0,2,5,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,1,2,3,4,0}; v0 := 0; iota(v0,3,6,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v0[8] := {0,1,2,3,4,5,6,7}; var v1[8] := {0,0,0,0,1,2,3,4}; v0 := 0; iota(v0,4,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{var v[8] := {1,1,1,1,1,1,1,1}; sumk(v) == 8},true)
|
||||
equal(~{var v[8] := {1,1,1,1,1,1,1,1}; sumk(v,0,v[] - 1) == 8},true)
|
||||
equal(~{var v[8] := {1,1,1,1,1,1,1,1}; sumk(v,0,v[] - 1,1) == 8},true)
|
||||
|
@ -9813,30 +9821,30 @@ equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,1,1,3,
|
|||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,1,4,1,6,1}; assign(v0,1,1,7,2); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; v0 := 0; all_false(v0)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,1,2,3,4,5,6,7}; v0 := 0; all_false(v0)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,2,3,4,5,6,7,8}; v0 := 0; iota(v0,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,2,4,6,8,10,12,14}; v0 := 0; iota(v0,0,2) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,3,6,9,12,15,18,21}; v0 := 0; iota(v0,0,3) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,2,3,4,5,6,7,8}; iota(v0,0,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,5,6,7}; iota(v0,1,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,1,2,3,4,5,6}; iota(v0,2,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,1,2,3,4,5}; iota(v0,3,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,1,2,3,4}; iota(v0,4,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,1,2,3}; iota(v0,5,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,5,1,2}; iota(v0,6,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,5,6,1}; iota(v0,7,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,2,3,4,5,6,7,8}; v0 := 0; iota(v0,0,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,5,6,7}; v0 := 0; iota(v0,1,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,1,2,3,4,5,6}; v0 := 0; iota(v0,2,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,1,2,3,4,5}; v0 := 0; iota(v0,3,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,1,2,3,4}; v0 := 0; iota(v0,4,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,0,1,2,3}; v0 := 0; iota(v0,5,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,0,0,1,2}; v0 := 0; iota(v0,6,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,0,0,0,1}; v0 := 0; iota(v0,7,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,2,3,4,0,0,0,0}; v0 := 0; iota(v0,0,3,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,0,0,0}; v0 := 0; iota(v0,1,4,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,1,2,3,4,0,0}; v0 := 0; iota(v0,2,5,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,1,2,3,4,0}; v0 := 0; iota(v0,3,6,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,1,2,3,4}; v0 := 0; iota(v0,4,7,1,1) all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,2,3,4,5,6,7,8}; v0 := 0; iota(v0,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,2,4,6,8,10,12,14}; v0 := 0; iota(v0,0,2); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,3,6,9,12,15,18,21}; v0 := 0; iota(v0,0,3); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,2,3,4,5,6,7,8}; iota(v0,0,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,5,6,7}; iota(v0,1,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,1,2,3,4,5,6}; iota(v0,2,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,1,2,3,4,5}; iota(v0,3,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,1,2,3,4}; iota(v0,4,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,1,2,3}; iota(v0,5,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,5,1,2}; iota(v0,6,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,5,6,1}; iota(v0,7,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,2,3,4,5,6,7,8}; v0 := 0; iota(v0,0,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,5,6,7}; v0 := 0; iota(v0,1,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,1,2,3,4,5,6}; v0 := 0; iota(v0,2,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,1,2,3,4,5}; v0 := 0; iota(v0,3,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,1,2,3,4}; v0 := 0; iota(v0,4,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,0,1,2,3}; v0 := 0; iota(v0,5,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,0,0,1,2}; v0 := 0; iota(v0,6,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,0,0,0,1}; v0 := 0; iota(v0,7,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {1,2,3,4,0,0,0,0}; v0 := 0; iota(v0,0,3,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,1,2,3,4,0,0,0}; v0 := 0; iota(v0,1,4,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,1,2,3,4,0,0}; v0 := 0; iota(v0,2,5,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,1,2,3,4,0}; v0 := 0; iota(v0,3,6,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v0[n] := {0,1,2,3,4,5,6,7}; var v1[n] := {0,0,0,0,1,2,3,4}; v0 := 0; iota(v0,4,7,1,1); all_true(v0 == v1)},true)
|
||||
equal(~{const var n := 8; var v[n] := {1,1,1,1,1,1,1,1}; sumk(v) == 8},true)
|
||||
equal(~{const var n := 8; var v[n] := {1,1,1,1,1,1,1,1}; sumk(v,0,v[] - 1) == 8},true)
|
||||
equal(~{const var n := 8; var v[n] := {1,1,1,1,1,1,1,1}; sumk(v,0,v[] - 1,1) == 8},true)
|
||||
|
|
221
exprtk_test.cpp
221
exprtk_test.cpp
|
@ -1100,27 +1100,27 @@ static const test_t global_test_list[] =
|
|||
test_t("((1 + 1) < (3 + 3) ? 7 : 9) == 7",1.0),
|
||||
test_t("(min(1,2) ? 1 + 3 : 1 + 4) == 4",1.0),
|
||||
test_t("(min(0,1) ? 1 + 3 : 1 + 4) == 5",1.0),
|
||||
test_t("if (1 < 2) 3; == 3",1.0),
|
||||
test_t("if (1 > 2) 3; == null",1.0),
|
||||
test_t("if (1 < 2) 3; else 4; == 3",1.0),
|
||||
test_t("if (1 > 2) 3; else 4; == 4",1.0),
|
||||
test_t("(if (1 < 2) 3;) == 3",1.0),
|
||||
test_t("(if (1 > 2) 3;) == null",1.0),
|
||||
test_t("(if (1 < 2) 3; else 4;) == 3",1.0),
|
||||
test_t("(if (1 > 2) 3; else 4;) == 4",1.0),
|
||||
test_t("if (1 < 2) 3; else {1+2; 4;} == 3",1.0),
|
||||
test_t("if (1 > 2) 3; else {1+2; 4;} == 4",1.0),
|
||||
test_t("if (1 < 2) 3; else if (1 < 2) 4; == 3",1.0),
|
||||
test_t("if (1 > 2) 3; else if (1 < 2) 4; == 4",1.0),
|
||||
test_t("if (1 > 2) 3; else if (1 > 2) 4; == null",1.0),
|
||||
test_t("(if (1 < 2) 3; else if (1 < 2) 4;) == 3",1.0),
|
||||
test_t("(if (1 > 2) 3; else if (1 < 2) 4;) == 4",1.0),
|
||||
test_t("(if (1 > 2) 3; else if (1 > 2) 4;) == null",1.0),
|
||||
test_t("if (1 < 2) 3; else if (1 < 2) {1+2; 4;} == 3",1.0),
|
||||
test_t("if (1 > 2) 3; else if (1 < 2) {1+2; 4;} == 4",1.0),
|
||||
test_t("if (1 > 2) 3; else if (1 > 2) {1+2; 4;} == null",1.0),
|
||||
test_t("if (1 < 2) { 1+2; 3;} == 3",1.0),
|
||||
test_t("if (1 > 2) { 1+2; 3;} == null",1.0),
|
||||
test_t("if (1 < 2) { 1+2; 3;} else 4; == 3",1.0),
|
||||
test_t("if (1 > 2) { 1+2; 3;} else 4; == 4",1.0),
|
||||
test_t("(if (1 < 2) { 1+2; 3;} else 4;) == 3",1.0),
|
||||
test_t("(if (1 > 2) { 1+2; 3;} else 4;) == 4",1.0),
|
||||
test_t("if (1 < 2) { 1+2; 3;} else {1+2; 4;} == 3",1.0),
|
||||
test_t("if (1 > 2) { 1+2; 3;} else {1+2; 4;} == 4",1.0),
|
||||
test_t("if (1 < 2) { 1+2; 3;} else if (1 < 2) 4; == 3",1.0),
|
||||
test_t("if (1 > 2) { 1+2; 3;} else if (1 < 2) 4; == 4",1.0),
|
||||
test_t("if (1 > 2) { 1+2; 3;} else if (1 > 2) 4; == null",1.0),
|
||||
test_t("(if (1 < 2) { 1+2; 3;} else if (1 < 2) 4;) == 3",1.0),
|
||||
test_t("(if (1 > 2) { 1+2; 3;} else if (1 < 2) 4;) == 4",1.0),
|
||||
test_t("(if (1 > 2) { 1+2; 3;} else if (1 > 2) 4;) == null",1.0),
|
||||
test_t("if (1 < 2) { 1+2; 3;} else if (1 < 2) {1+2; 4;} == 3",1.0),
|
||||
test_t("if (1 > 2) { 1+2; 3;} else if (1 < 2) {1+2; 4;} == 4",1.0),
|
||||
test_t("if (1 > 2) { 1+2; 3;} else if (1 > 2) {1+2; 4;} == null",1.0)
|
||||
|
@ -1891,9 +1891,9 @@ bool run_test01()
|
|||
test_xyzw<T>("if (x > y) { z+2; z;} else 1 + w; == (w + 1)" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("if (x < y) { z+2; z;} else {1+2; w;} == z" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("if (x > y) { z+2; z;} else {1+2; w;} == w" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("if (x < y) { z+2; z;} else if (x < y) w; == z" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("if (x > y) { z+2; z;} else if (x < y) 1 + w; == w + 1" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("if (x > y) { z+2; z;} else if (x > y) w; == null" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("(if (x < y) { z+2; z;} else if (x < y) w;) == z" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("(if (x > y) { z+2; z;} else if (x < y) 1 + w;) == w + 1" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("(if (x > y) { z+2; z;} else if (x > y) w;) == null" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("if (x < y) { z+2; z;} else if (x < y) {w + 2; w;} == z" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("if (x > y) { z+2; z;} else if (x < y) {w + 2; w;} == w" ,T(1.0),T(2.0),T(3.0),T(4.0),T(1.0)),
|
||||
test_xyzw<T>("if (x > y) { z+2; z;} else if (x > y) {w + 2; w;} == null",T(1.0),T(2.0),T(3.0),T(4.0),T(1.0))
|
||||
|
@ -5611,6 +5611,8 @@ template <typename T>
|
|||
bool run_test14()
|
||||
{
|
||||
typedef exprtk::expression<T> expression_t;
|
||||
typedef exprtk::parser<T> parser_t;
|
||||
typedef typename parser_t::settings_store settings_t;
|
||||
|
||||
T x = T(0);
|
||||
T y = T(0);
|
||||
|
@ -5658,7 +5660,19 @@ bool run_test14()
|
|||
|
||||
exprtk::parser<T> parser;
|
||||
|
||||
static const std::size_t secondary_compile_options =
|
||||
settings_t::e_replacer +
|
||||
settings_t::e_joiner +
|
||||
settings_t::e_numeric_check +
|
||||
settings_t::e_bracket_check +
|
||||
settings_t::e_sequence_check +
|
||||
settings_t::e_strength_reduction;
|
||||
|
||||
const settings_t settings(secondary_compile_options);
|
||||
parser_t secondary_parser(settings);
|
||||
|
||||
std::deque<std::string> expr_str_list;
|
||||
std::deque<std::string> expr_noncomm_str_list;
|
||||
|
||||
load_expressions("exprtk_functional_test.txt" , expr_str_list);
|
||||
load_expressions("exprtk_functional_ext_test.txt" , expr_str_list);
|
||||
|
@ -5668,6 +5682,8 @@ bool run_test14()
|
|||
return true;
|
||||
}
|
||||
|
||||
load_expressions("exprtk_noncommutative_test.txt" , expr_noncomm_str_list);
|
||||
|
||||
std::deque<exprtk::expression<T> > expression_list;
|
||||
bool error_found = false;
|
||||
|
||||
|
@ -5690,8 +5706,26 @@ bool run_test14()
|
|||
error_found = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
expression_list.push_back(current_expression);
|
||||
}
|
||||
}
|
||||
|
||||
for (std::size_t i = 0; i < expr_noncomm_str_list.size(); ++i)
|
||||
{
|
||||
exprtk::expression<T> current_expression;
|
||||
|
||||
current_expression.register_symbol_table(symbol_table);
|
||||
|
||||
if (!secondary_parser.compile(expr_noncomm_str_list[i],current_expression))
|
||||
{
|
||||
printf("run_test14() - Error: %s Expression: %s [secondary parser]\n",
|
||||
secondary_parser.error().c_str(),
|
||||
expr_noncomm_str_list[i].c_str());
|
||||
|
||||
error_found = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (error_found)
|
||||
{
|
||||
|
@ -7920,17 +7954,17 @@ bool run_test18()
|
|||
"var v[5]; iota(v, 0, v[] -1, 0, -2); var r[5] := { 0, -2, -4, -6, -8}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0, v[] -1, -1, -2); var r[5] := { -1, -3, -5, -7, -9}; sum(v == r) == v[]",
|
||||
|
||||
"var v[5]; iota(v, 0,1); threshold_below(v,2, 0) var r[5] := { 0, 0, 2, 3, 4}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0,1); threshold_above(v,2, 0) var r[5] := { 0, 1, 2, 0, 0}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0,1); threshold_below(v,2, 0); var r[5] := { 0, 0, 2, 3, 4}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0,1); threshold_above(v,2, 0); var r[5] := { 0, 1, 2, 0, 0}; sum(v == r) == v[]",
|
||||
|
||||
"var v[5]; iota(v, 0,1); threshold_below(v,0,v[] - 1,2, 0) var r[5] := { 0, 0, 2, 3, 4}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0,1); threshold_above(v,0,v[] - 1,2, 0) var r[5] := { 0, 1, 2, 0, 0}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0,1); threshold_below(v,0,v[] - 1,2, 0); var r[5] := { 0, 0, 2, 3, 4}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0,1); threshold_above(v,0,v[] - 1,2, 0); var r[5] := { 0, 1, 2, 0, 0}; sum(v == r) == v[]",
|
||||
|
||||
"var v[5]; iota(v, 1,1); threshold_below(v,1,v[] - 1,2, 0) var r[5] := { 1, 2, 3, 4, 5}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 1,1); threshold_above(v,1,v[] - 1,2, 0) var r[5] := { 1, 2, 0, 0, 0}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 1,1); threshold_below(v,1,v[] - 1,2, 0); var r[5] := { 1, 2, 3, 4, 5}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 1,1); threshold_above(v,1,v[] - 1,2, 0); var r[5] := { 1, 2, 0, 0, 0}; sum(v == r) == v[]",
|
||||
|
||||
"var v[5]; iota(v, 0,1); threshold_below(v,0,v[] - 2,2, 0) var r[5] := { 0, 0, 2, 3, 4}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0,1); threshold_above(v,0,v[] - 2,2, 0) var r[5] := { 0, 1, 2, 0, 4}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0,1); threshold_below(v,0,v[] - 2,2, 0); var r[5] := { 0, 0, 2, 3, 4}; sum(v == r) == v[]",
|
||||
"var v[5]; iota(v, 0,1); threshold_above(v,0,v[] - 2,2, 0); var r[5] := { 0, 1, 2, 0, 4}; sum(v == r) == v[]",
|
||||
|
||||
" var a := 2; var x[3] := {1,2,3}; var y[3] := {1,2,3}; var r[3] := [0]; r := a * x + y; axpy(a,x,y); sum(y == r) == y[]",
|
||||
" var a := 2; var b := 3; var x[3] := {1,2,3}; var y[3] := {1,2,3}; var r[3] := [0]; r := a * x + b * y; axpby(a,x,b,y); sum(y == r) == y[]",
|
||||
|
@ -10815,7 +10849,7 @@ bool run_test21()
|
|||
{
|
||||
typedef typename parser_t::settings_store settings_t;
|
||||
|
||||
const std::string expressions[] =
|
||||
const std::string invalid_expressions[] =
|
||||
{
|
||||
"var result := 0; if (true) { result := 2 } if (true) { result := 3 }; result",
|
||||
"var result := 0; if (true) { result := 2 }; if (true) { result := 3 } result",
|
||||
|
@ -10826,10 +10860,132 @@ bool run_test21()
|
|||
"var result := 0; var x := 1; if (x > 0) { result := 2 } if (x > 0) { result := 3 } result",
|
||||
"var result := 0; var x := 1; if (x > 0) { result := 2 } else if (x > 0) { result := 3 } result",
|
||||
"var result := 0; var x := 1; if (x > 0) result := 2 else if (x > 0) { result := 3 } result",
|
||||
"var result := 0; var x := 1; if (x > 0) {result := 2 } else if (x > 0) result := 3 result"
|
||||
"var result := 0; var x := 1; if (x > 0) {result := 2 } else if (x > 0) result := 3 result",
|
||||
"var x := 2; var y := 0; x y ",
|
||||
"var x := 2; x var y := 0; ",
|
||||
"var x := 2; var y := 0; while (y < 3) { x := x * x; y += 1; } x ",
|
||||
"var x := 2; var y := 0; for (var i := 0; i < 2; i += 1) { x := x * x; y += 1; } x ",
|
||||
"var x := 2; var y := 0; while (y < 3) { x := x * x; y += 1; } 1 ",
|
||||
"var x := 2; var y := 0; for (var i := 0; i < 2; i += 1) { x := x * x; y += 1; } 1 ",
|
||||
"var x := 2; var y := 0; x while (y < 3) { x := x * x; y += 1; } ",
|
||||
"var x := 2; var y := 0; x for (var i := 0; i < 2; i += 1) { x := x * x; y += 1; } ",
|
||||
"var x := 2; var y := 0; for (var i := 0; i < 2; i += 1) { x := x * x; y += 1; } (1 + x)",
|
||||
"var x := 2; var y := 0; for (var i := 0; i < 2; i += 1) { x := x * x; y += 1; } (x + 1)",
|
||||
"var x := 2; var y := 0; (1 + x) for (var i := 0; i < 2; i += 1) { x := x * x; y += 1; }",
|
||||
"var x := 2; var y := 0; (x + 1) for (var i := 0; i < 2; i += 1) { x := x * x; y += 1; }",
|
||||
"var x := 2; var y := 0; (x + y) for (var i := 0; i < 2; i += 1) { x := x * x; y += 1; }",
|
||||
"'hello' 1",
|
||||
"1 'hello'",
|
||||
"'hel' + 'lo' 1",
|
||||
"1 'hel' + 'lo'",
|
||||
"1 2",
|
||||
"a b",
|
||||
"a b c",
|
||||
"var x := 2; 1 2 ",
|
||||
"var x := 2; 1 x ",
|
||||
"var x := 2; x 1 ",
|
||||
"var x := 2; a 1 ",
|
||||
"var x := 2; x a ",
|
||||
"var x := 2; x a b ",
|
||||
"var x := 2; x a b c ",
|
||||
"var x := 2; a x ",
|
||||
"var x := 2; a x b ",
|
||||
"var x := 2; a x b c ",
|
||||
"var x := 2; 'hello' 1",
|
||||
"var x := 2; 1 'hello'",
|
||||
"var x := 2; 'hello' x",
|
||||
"var x := 2; x 'hello'",
|
||||
"var x := 2; (x 1) ",
|
||||
"var x := 2; (1 x) ",
|
||||
"var x := 2; 2 + (x 1) ",
|
||||
"var x := 2; 2 + (1 x) ",
|
||||
"var x := 2; x + (x 1) ",
|
||||
"var x := 2; x + (1 x) ",
|
||||
"var x := 2; (x 1) + 2 ",
|
||||
"var x := 2; (1 x) + 2 ",
|
||||
"var x := 2; (x 1) + x ",
|
||||
"var x := 2; (1 x) + x ",
|
||||
"var x := 2; var y := 3; (x y) ",
|
||||
"var x := 2; var y := 3; (y x) ",
|
||||
"var x := 2; var y := 3; 2 + (x y) ",
|
||||
"var x := 2; var y := 3; 2 + (y x) ",
|
||||
"var x := 2; var y := 3; x + (x y) ",
|
||||
"var x := 2; var y := 3; x + (y x) ",
|
||||
"var x := 2; var y := 3; (x y) + 2 ",
|
||||
"var x := 2; var y := 3; (y x) + 2 ",
|
||||
"var x := 2; var y := 3; (x y) + x ",
|
||||
"var x := 2; var y := 3; (y x) + x ",
|
||||
"var x := 2; 2 + x 1 ",
|
||||
"var x := 2; 2 + 1 x ",
|
||||
"var x := 2; x + x 1 ",
|
||||
"var x := 2; x + 1 x ",
|
||||
"var x := 2; var y := 3; 2 + x y ",
|
||||
"var x := 2; var y := 3; 2 + y x ",
|
||||
"var x := 2; var y := 3; x + x y ",
|
||||
"var x := 2; var y := 3; x + y x ",
|
||||
"~{1; 2; 3} 1 ",
|
||||
"1 ~{1; 2; 3} ",
|
||||
"var x := 2; x ~{x; 1; 2} ",
|
||||
"var x := 2; 1 ~{x; 1; 2} ",
|
||||
"var x := 2; ~{x; 1; 2} x ",
|
||||
"var x := 2; ~{x; 1; 2} 1 ",
|
||||
"~(1; 2; 3) 1 ",
|
||||
"1 ~(1; 2; 3) ",
|
||||
"var x := 2; x ~(x; 1; 2) ",
|
||||
"var x := 2; 1 ~(x; 1; 2) ",
|
||||
"var x := 2; ~(x; 1; 2) x ",
|
||||
"var x := 2; ~(x; 1; 2) 1 ",
|
||||
"var x := 2; (x + 1) ~{x; 1; 2} ",
|
||||
"var x := 2; (1 + x) ~{x; 1; 2} ",
|
||||
"var x := 2; ~{x; 1; 2} (x + 1) ",
|
||||
"var x := 2; ~{x; 1; 2} (1 + x) ",
|
||||
"var x := 2; x + 1 ~{x; 1; 2} ",
|
||||
"var x := 2; 1 + x ~{x; 1; 2} ",
|
||||
"var x := 2; ~{x; 1; 2} x + 1 ",
|
||||
"var x := 2; ~{x; 1; 2} 1 + x ",
|
||||
"~(1, 2, 3) 1 ",
|
||||
"1 ~(1, 2, 3) ",
|
||||
"var x := 2; x ~(x, 1, 2) ",
|
||||
"var x := 2; 1 ~(x, 1, 2) ",
|
||||
"var x := 2; ~(x, 1, 2) x ",
|
||||
"var x := 2; ~(x, 1, 2) 1 ",
|
||||
"var x := 2; 1 switch { case x > 1 : 1; case x < 3 : 2; default : 3; } ",
|
||||
"var x := 2; x switch { case x > 1 : 1; case x < 3 : 2; default : 3; } ",
|
||||
"var x := 2; switch { case x > 1 : 1; case x < 3 : 2; default : 3; } x ",
|
||||
"var x := 2; 1 [*] { case x > 1 : 1; case x < 3 : 2; } ",
|
||||
"var x := 2; x [*] { case x > 1 : 1; case x < 3 : 2; } ",
|
||||
"var x := 2; [*] { case x > 1 : 1; case x < 3 : 2; } x ",
|
||||
"var x := 2; (x + 1) switch { case x > 1 : 1; case x < 3 : 2; default : 3; } ",
|
||||
"var x := 2; switch { case x > 1 : 1; case x < 3 : 2; default : 3; } (x + 1) ",
|
||||
"var x := 2; (x + 1) [*] { case x > 1 : 1; case x < 3 : 2; } ",
|
||||
"var x := 2; [*] { case x > 1 : 1; case x < 3 : 2; } (x + 1) ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { return [i] 1; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { 1 return [i]; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { return [i] i; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { i return [i]; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { return [i] 1 + i; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { 1 + i return [i]; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { return [i] i + 1; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { i + 1 return [i]; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { 1 if (i > 3) return [i]; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { if (i > 3) return [i] 1; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { x if (i > 3) return [i]; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { if (i > 3) return [i] x; } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { x + 1 if (i > 3) return [i]; }",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { if (i > 3) return [i] x + 1; }",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { 1 + x if (i > 3) return [i]; }",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { if (i > 3) return [i] 1 + x; }",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { 1 for (var j := 0; j < 2; j += 1){} } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { for (var j := 0; j < 2; j += 1){} 1 } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { x for (var j := 0; j < 2; j += 1){} } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { for (var j := 0; j < 2; j += 1){} x } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { x + 1 for (var j := 0; j < 2; j += 1){} } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { for (var j := 0; j < 2; j += 1){} x + 1 } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { 1 + x for (var j := 0; j < 2; j += 1){} } ",
|
||||
"var x := 2; for (var i := 0; i < 2; i += 1) { for (var j := 0; j < 2; j += 1){} 1 + x } "
|
||||
};
|
||||
|
||||
const std::size_t expressions_size = sizeof(expressions) / sizeof(std::string);
|
||||
const std::size_t expressions_size = sizeof(invalid_expressions) / sizeof(std::string);
|
||||
|
||||
static const std::size_t compile_options =
|
||||
settings_t::e_replacer +
|
||||
|
@ -10842,12 +10998,23 @@ bool run_test21()
|
|||
const settings_t settings(compile_options);
|
||||
parser_t parser(settings);
|
||||
|
||||
T a = T(2222);
|
||||
T b = T(3333);
|
||||
T c = T(4444);
|
||||
|
||||
symbol_table_t symbol_table;
|
||||
symbol_table.add_variable("a", a);
|
||||
symbol_table.add_variable("b", b);
|
||||
symbol_table.add_variable("c", c);
|
||||
|
||||
bool error_found = false;
|
||||
|
||||
for (std::size_t e = 0; e < expressions_size; ++e)
|
||||
{
|
||||
const std::string& expression_string = expressions[e];
|
||||
const std::string& expression_string = invalid_expressions[e];
|
||||
|
||||
expression_t expression;
|
||||
expression.register_symbol_table(symbol_table);
|
||||
|
||||
if (parser.compile(expression_string,expression))
|
||||
{
|
||||
|
|
|
@ -2,6 +2,8 @@ MIT License
|
|||
|
||||
Copyright (c) 1999-2024 Arash Partow
|
||||
|
||||
https://www.partow.net/programming/exprtk/index.html
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
|
|
Loading…
Reference in New Issue