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 84 "2/(1+dst)" => array("expression" => "2/(1+\$dst)", "params" => array(array("paramid" => "dst"))),
85 85 "2/abs(1+dst)" => array("expression" => "2/(abs(1+\$dst))", "params" => array(array("paramid" => "dst"))),
86 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 90 //init constants, aliases and functions for test
... ... @@ -795,8 +796,9 @@ class IHMExpressionParserClass
795 796 /*
796 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 802 for ($i = 0; $i < count($tree); ++$i)
801 803 {
802 804 if (is_array($tree[$i]) && (count($tree[$i]) > 0))
... ... @@ -807,8 +809,7 @@ class IHMExpressionParserClass
807 809 $groupFunc = $this->isFunction($tree[$i-1]);
808 810 }
809 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 813 $result[] = $res;
813 814 }
814 815 else
... ... @@ -930,8 +931,7 @@ class IHMExpressionParserClass
930 931 $this->fixGroupFunction($res_1,$res_2);
931 932  
932 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 936 $res_4 = array();
937 937 $this->fixOperatorToFunction($res_3,$res_4);
... ...