[SCM] Lisaac compiler branch, master, updated. lisaac-0.12-430-gf5af802

Benoit Sonntag sonntag at icps.u-strasbg.fr
Fri Aug 21 16:12:43 UTC 2009


The following commit has been merged in the master branch:
commit f5af8028eef118b4578fa9038ddaa82cf524e6d6
Author: Benoit Sonntag <sonntag at icps.u-strasbg.fr>
Date:   Fri Aug 21 18:12:42 2009 +0200

    Bug PA cmp with vector OK

diff --git a/src/code_life/expr_multiple.li b/src/code_life/expr_multiple.li
index 0f0dab4..46a556a 100644
--- a/src/code_life/expr_multiple.li
+++ b/src/code_life/expr_multiple.li
@@ -37,7 +37,7 @@ Section Inherit
 Section Public
   
   + expr_list:FAST_ARRAY(EXPR);
-  
+    
   - cardinality:INTEGER <- expr_list.count;
   
   - static_type:TYPE_FULL <-
diff --git a/src/item/itm_read_arg2.li b/src/item/itm_read_arg2.li
index a434c82..98caee4 100644
--- a/src/item/itm_read_arg2.li
+++ b/src/item/itm_read_arg2.li
@@ -83,6 +83,7 @@ Section Public
     + l_arg:FAST_ARRAY(ITM_CODE);    
     + v1,v2:EXPR;
     + t1,t2:TYPE_FULL;
+    + em1,em2:EXPR_MULTIPLE;
     
     (
       (name = ALIAS_STR.operator_equal) || 
@@ -107,11 +108,21 @@ Section Public
 	  warning_error (position,string_tmp);
 	};
       };
-      (name = ALIAS_STR.operator_equal).if {
-	result := EXPR_EQUAL.create position with v1 and v2;
+      em1 ?= v1;
+      (em1 != NULL).if {
+        em2 ?= v2;
+        result := product_cmp (em1.first) with (em2.first);
+        (em1.lower+1).to (em1.upper) do { j:INTEGER;          
+          v2 := product_cmp (em1.item j) with (em2.item j);
+          (name = ALIAS_STR.operator_equal).if {
+            result := EXPR_AND_AND_LOGIC.create position with result and v2;
+          } else {
+            result := EXPR_OR_OR_LOGIC.create position with result and v2;
+          };
+        };        
       } else {
-	result := EXPR_NOT_EQUAL.create position with v1 and v2;
-      };            
+        result := product_cmp v1 with v2;
+      };
     } else {
       l_arg := ALIAS_ARRAY(ITM_CODE).new;      
       l_arg.add_last arg_second;            
@@ -120,7 +131,17 @@ Section Public
     result
   );  
   
-
+Section Private
+  
+  - product_cmp v1:EXPR with v2:EXPR :EXPR <- 
+  ( + result:EXPR;
+    (name = ALIAS_STR.operator_equal).if {
+      result := EXPR_EQUAL.create position with v1 and v2;
+    } else {
+      result := EXPR_NOT_EQUAL.create position with v1 and v2;
+    };            
+    result
+  );
 
 
 

-- 
Lisaac compiler



More information about the Lisaac-commits mailing list