Commit f2c5542dd6f31e30ef635f14e3c4b3fd881d1771

Authored by Benjamin Renard
1 parent 224a3ea9

Fix expression parser for functions with more than one arguments

src/InputOutput/IHMImpl/Tools/IHMExpressionParserClass.php
@@ -84,6 +84,7 @@ class IHMExpressionParserClass @@ -84,6 +84,7 @@ class IHMExpressionParserClass
84 "2/(1+dst)" => array("expression" => "2/(1+\$dst)", "params" => array(array("paramid" => "dst"))), 84 "2/(1+dst)" => array("expression" => "2/(1+\$dst)", "params" => array(array("paramid" => "dst"))),
85 "2/abs(1+dst)" => array("expression" => "2/(abs(1+\$dst))", "params" => array(array("paramid" => "dst"))), 85 "2/abs(1+dst)" => array("expression" => "2/(abs(1+\$dst))", "params" => array(array("paramid" => "dst"))),
86 "cross(vect_1,vect_2)" => array("expression" => "(cross(\$vect_1,\$vect_2))", "params" => array(array("paramid" => "vect_1"), array("paramid" => "vect_2"))), 86 "cross(vect_1,vect_2)" => array("expression" => "(cross(\$vect_1,\$vect_2))", "params" => array(array("paramid" => "vect_1"), array("paramid" => "vect_2"))),
  87 + "cross(cross(vect_1,vect_2),vect_3)" => array("expression" => "(cross((cross(\$vect_1,\$vect_2)),\$vect_3))","params" => array(array("paramid" => "vect_1"), array("paramid" => "vect_2"), array("paramid" => "vect_3"))),
87 ); 88 );
88 89
89 //init constants, aliases and functions for test 90 //init constants, aliases and functions for test
@@ -795,8 +796,9 @@ class IHMExpressionParserClass @@ -795,8 +796,9 @@ class IHMExpressionParserClass
795 /* 796 /*
796 * @brief process used to replace "," by ";" for function 797 * @brief process used to replace "," by ";" for function
797 */ 798 */
798 - private function fixComaFunction($tree,$crt_function,&$result,&$nbParams) 799 + private function fixComaFunction($tree,$crt_function,&$result)
799 { 800 {
  801 + $nbParams = 0;
800 for ($i = 0; $i < count($tree); ++$i) 802 for ($i = 0; $i < count($tree); ++$i)
801 { 803 {
802 if (is_array($tree[$i]) && (count($tree[$i]) > 0)) 804 if (is_array($tree[$i]) && (count($tree[$i]) > 0))
@@ -807,8 +809,7 @@ class IHMExpressionParserClass @@ -807,8 +809,7 @@ class IHMExpressionParserClass
807 $groupFunc = $this->isFunction($tree[$i-1]); 809 $groupFunc = $this->isFunction($tree[$i-1]);
808 } 810 }
809 $res = array(); 811 $res = array();
810 - $nbParams = 0;  
811 - $this->fixComaFunction($tree[$i],$groupFunc ? $tree[$i-1] : "",$res,$nbParams); 812 + $this->fixComaFunction($tree[$i],$groupFunc ? $tree[$i-1] : "",$res);
812 $result[] = $res; 813 $result[] = $res;
813 } 814 }
814 else 815 else
@@ -930,8 +931,7 @@ class IHMExpressionParserClass @@ -930,8 +931,7 @@ class IHMExpressionParserClass
930 $this->fixGroupFunction($res_1,$res_2); 931 $this->fixGroupFunction($res_1,$res_2);
931 932
932 $res_3 = array(); 933 $res_3 = array();
933 - $nbParams = 0;  
934 - $this->fixComaFunction($res_2,"",$res_3,$nbParams); 934 + $this->fixComaFunction($res_2,"",$res_3);
935 935
936 $res_4 = array(); 936 $res_4 = array();
937 $this->fixOperatorToFunction($res_3,$res_4); 937 $this->fixOperatorToFunction($res_3,$res_4);