Commit f2c5542dd6f31e30ef635f14e3c4b3fd881d1771
1 parent
224a3ea9
Exists in
master
and in
65 other branches
Fix expression parser for functions with more than one arguments
Showing
1 changed file
with
5 additions
and
5 deletions
Show diff stats
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); |