Class ChainedComparisonEvaluator

java.lang.Object
org.ek9lang.compiler.phase7.support.ChainedComparisonEvaluator
All Implemented Interfaces:
Function<ChainedComparisonParams, List<IRInstr>>

public final class ChainedComparisonEvaluator extends Object implements Function<ChainedComparisonParams, List<IRInstr>>
CONCERN: Chained comparison evaluation for polymorphic for-range. RESPONSIBILITY: Evaluate direction check, then condition check based on result. REUSABILITY: FOR_RANGE_POLYMORPHIC direction detection.

Composite helper that chains multiple ComparisonEvaluator calls to implement runtime direction detection in polymorphic for-range loops.

Pattern: 1. Evaluate direction comparison (e.g., "range._cmp(0) < 0") 2. Branch based on direction result 3. Evaluate appropriate condition (ascending: "<=", descending: ">=")

This eliminates the duplication between generateDirectionLessThanZero and generateDirectionGreaterThanZero in ForStatementGenerator.

  • Constructor Details

    • ChainedComparisonEvaluator

      public ChainedComparisonEvaluator(ComparisonEvaluator comparisonEvaluator)
  • Method Details

    • apply

      public List<IRInstr> apply(ChainedComparisonParams params)
      Evaluate chained comparison operations.

      Handles: 1. First comparison (e.g., direction check: "range._cmp(0) < 0") 2. Second comparison (e.g., loop condition: "counter <= end") 3. Memory management for all intermediate values

      Specified by:
      apply in interface Function<ChainedComparisonParams, List<IRInstr>>
      Parameters:
      params - Chained comparison parameters
      Returns:
      Instructions ending with final primitive boolean result