Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Stat_string2tree.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Stat_string2tree.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Stat_string2tree.cpp	(revision 88)
@@ -5,125 +5,18 @@
 namespace behavioural {
 
-#define string2operator(x) (x=="+")?add:((x=="-")?sub:((x=="*")?mul:((x=="/" )?div:((x=="++")?inc:dec))))
-
   Stat_binary_tree * Stat::string2tree     (std::string expr)
   {
-    const std::string delims  (" ");          // délimiteur : " "
-    const std::string numbers ("0123456789"); // délimiteur : " "
-    std::string::size_type index_begin, index_end;
+    std::map<std::string, counter_t*> * operand = new std::map<std::string, counter_t*>;
 
-    Stat_binary_tree * tree = NULL;
+    for (std::map<std::string, var_t>::iterator it = _list_operand->begin();
+         it != _list_operand->end();
+         ++ it)
+      (*operand) [it->first] = it->second.counter;
 
-    index_begin = expr.find_first_not_of(delims);
+    Stat_binary_tree * tree = new Stat_binary_tree(expr,operand);
 
-    while (index_begin != std::string::npos)
-      {
-	index_end = expr.find_first_of(delims, index_begin);
-
-	if (index_end == std::string::npos)
-	  {
-	    index_end = expr.length();
-	  }
-	
-	std::string str = expr.substr(index_begin, index_end-index_begin);
-	
-	// 3 possibilités :
-	//  * operator
-	//  * constante
-	//  * variable
-	{
-	  // Test constantes
-	  std::string::size_type index = str.find_first_not_of(numbers);
-	  if (index  == std::string::npos)
-	    {
-// 	      std::cout << " * c'est une constante." << std::endl; 
-
-	      if (tree==NULL)
-		tree = new Stat_binary_tree (atoi(str.c_str()));
-	      else
-		tree = tree->insert_tree (atoi(str.c_str()));
-	    }
-	  else
-	    {
-	      // Test variables
-	      std::map<std::string, var_t>::iterator it = _list_operand->find(str);
-	      if (it != _list_operand->end())
-		{
-// 		  std::cout << " * c'est une variable." << std::endl; 
-
-		  if (tree==NULL)
-		    tree = new Stat_binary_tree (it->second.counter);
-		  else
-		    tree = tree->insert_tree (it->second.counter);
-		}
-	      else
-		{
-		  if ((str == "+") or
-		      (str == "-") or
-		      (str == "*") or
-		      (str == "/"))
-		    {
-// 		      std::cout << " * c'est un operator à 2 opérandes." << std::endl; 
-		      
-// 		      if (tree==NULL)
-// 			tree = new Stat_binary_tree (morpheo::string2operator[str].second);
-// 		      else
-// 			tree->insert_tree (morpheo::string2operator[str].second);
-		      if (tree==NULL)
-			tree = new Stat_binary_tree (string2operator(str));
-		      else
-			tree = tree->insert_tree (string2operator(str));
-		    }
-		  else
-		    {
-		      if ((str == "++") or
-			  (str == "--"))
-			{
-// 			  std::cout << " * c'est un operator à 1 opérande." << std::endl; 
-
-// 			  if (tree==NULL)
-// 			    tree = new Stat_binary_tree (string2operator[str.c_str()]);
-// 			  else
-// 			    tree->insert_tree (string2operator[str.c_str()]);
-
-			  if (tree==NULL)
-			    tree = new Stat_binary_tree (string2operator(str));
-			  else
-			    tree = tree->insert_tree (string2operator(str));
-			  
-			}
-		      else
-			{
-// 			  std::cout << " * c'est autre chose." << std::endl; 
-			  str = "expression '"+str+"' doesn't a constant, a declarated variable or an operator.";
-			  throw(ERRORMORPHEO("Stat::string2tree",_(str.c_str())));
-			}
-		    }
-		}
-	    }
-	}
-
-	index_begin = expr.find_first_not_of(delims, index_end);
-
-	if (index_begin != std::string::npos)
-	  tree = tree->goto_next_root();
-      }
-
-    if (tree == NULL)
-      throw (ERRORMORPHEO("Stat::string2tree",_("the tree generated is empty.")));
-
-//     std::cout << "<Stat::string2tree> goto_top_level" << std::endl;
-
-    tree = tree->goto_top_level();
-
-//     std::cout << "<Stat::string2tree> valid" << std::endl;
-
-    if (not tree->valid())
-      throw (ERRORMORPHEO("Stat::string2tree",_("the tree generated is invalid.")));
-
-//     std::cout << "<Stat::string2tree> End" << std::endl;
+    delete operand;
 
     return tree;
-
   }
   
