@@ -692,37 +692,38 @@ def _visit_BoolOp(self, stmt):
692
692
severity = 'error' )
693
693
694
694
def _visit_Compare (self , stmt ):
695
- if len (stmt .ops )> 1 :
696
- return errors .report (PYCCEL_RESTRICTION_MULTIPLE_COMPARISONS ,
697
- symbol = stmt ,
698
- severity = 'error' )
699
-
700
695
first = self ._visit (stmt .left )
701
- second = self ._visit (stmt .comparators [0 ])
702
- op = stmt .ops [0 ]
703
-
704
- if isinstance (op , ast .Eq ):
705
- return PyccelEq (first , second )
706
- if isinstance (op , ast .NotEq ):
707
- return PyccelNe (first , second )
708
- if isinstance (op , ast .Lt ):
709
- return PyccelLt (first , second )
710
- if isinstance (op , ast .Gt ):
711
- return PyccelGt (first , second )
712
- if isinstance (op , ast .LtE ):
713
- return PyccelLe (first , second )
714
- if isinstance (op , ast .GtE ):
715
- return PyccelGe (first , second )
716
- if isinstance (op , ast .Is ):
717
- return PyccelIs (first , second )
718
- if isinstance (op , ast .IsNot ):
719
- return PyccelIsNot (first , second )
720
- if isinstance (op , ast .In ):
721
- return PyccelIn (first , second )
696
+ comparison = None
697
+ for comparators , op in zip (stmt .comparators , stmt .ops ):
698
+ second = self ._visit (comparators )
699
+
700
+ if isinstance (op , ast .Eq ):
701
+ expr = PyccelEq (first , second )
702
+ elif isinstance (op , ast .NotEq ):
703
+ expr = PyccelNe (first , second )
704
+ elif isinstance (op , ast .Lt ):
705
+ expr = PyccelLt (first , second )
706
+ elif isinstance (op , ast .Gt ):
707
+ expr = PyccelGt (first , second )
708
+ elif isinstance (op , ast .LtE ):
709
+ expr = PyccelLe (first , second )
710
+ elif isinstance (op , ast .GtE ):
711
+ expr = PyccelGe (first , second )
712
+ elif isinstance (op , ast .Is ):
713
+ expr = PyccelIs (first , second )
714
+ elif isinstance (op , ast .IsNot ):
715
+ expr = PyccelIsNot (first , second )
716
+ elif isinstance (op , ast .In ):
717
+ expr = PyccelIn (first , second )
718
+ else :
719
+ return errors .report (PYCCEL_RESTRICTION_UNSUPPORTED_SYNTAX ,
720
+ symbol = stmt ,
721
+ severity = 'error' )
722
722
723
- return errors .report (PYCCEL_RESTRICTION_UNSUPPORTED_SYNTAX ,
724
- symbol = stmt ,
725
- severity = 'error' )
723
+ first = second
724
+ comparison = PyccelAnd (comparison , expr ) if comparison else expr
725
+
726
+ return comparison
726
727
727
728
def _visit_Return (self , stmt ):
728
729
results = self ._visit (stmt .value )
0 commit comments