@@ -1625,42 +1625,8 @@ static IPatternMap determinePatterns(final IExpr lhsPatternExpr, int[] priority,
1625
1625
1626
1626
determinePatternsRecursive (patternIndexMap , (IAST ) lhsPatternExpr , priority ,
1627
1627
ruleWithoutPattern , 1 );
1628
- int size = patternIndexMap .size ();
1629
- switch (size ) {
1630
- case 1 :
1631
- PatternMap1 patternMap1 = new PatternMap1 ();
1632
- patternMap1 .fSymbol1 = patternIndexMap .get (0 ).getFirst ();
1633
- patternMap1 .fPatternObject1 = patternIndexMap .get (0 ).getSecond ();
1634
- return patternMap1 ;
1635
- case 2 :
1636
- PatternMap2 patternMap2 = new PatternMap2 ();
1637
- patternMap2 .fSymbol1 = patternIndexMap .get (0 ).getFirst ();
1638
- patternMap2 .fPatternObject1 = patternIndexMap .get (0 ).getSecond ();
1639
- patternMap2 .fSymbol2 = patternIndexMap .get (1 ).getFirst ();
1640
- patternMap2 .fPatternObject2 = patternIndexMap .get (1 ).getSecond ();
1641
- return patternMap2 ;
1642
- case 3 :
1643
- PatternMap3 patternMap3 = new PatternMap3 ();
1644
- patternMap3 .fSymbol1 = patternIndexMap .get (0 ).getFirst ();
1645
- patternMap3 .fPatternObject1 = patternIndexMap .get (0 ).getSecond ();
1646
- patternMap3 .fSymbol2 = patternIndexMap .get (1 ).getFirst ();
1647
- patternMap3 .fPatternObject2 = patternIndexMap .get (1 ).getSecond ();
1648
- patternMap3 .fSymbol3 = patternIndexMap .get (2 ).getFirst ();
1649
- patternMap3 .fPatternObject3 = patternIndexMap .get (2 ).getSecond ();
1650
- return patternMap3 ;
1651
- }
1652
- PatternMap patternMap = new PatternMap ();
1653
- patternMap .fRuleWithoutPattern = ruleWithoutPattern [0 ];
1654
- patternMap .fSymbolsOrPattern = new IExpr [size ];
1655
- patternMap .fSymbolsOrPatternValues = new IExpr [size ];
1656
- patternMap .fPatternObjects = new IPatternObject [size ];
1657
- int i = 0 ;
1658
- for (GenericPair <IExpr , IPatternObject > entry : patternIndexMap ) {
1659
- patternMap .fSymbolsOrPattern [i ] = entry .getFirst ();
1660
- patternMap .fPatternObjects [i ] = entry .getSecond ();
1661
- i ++;
1662
- }
1663
- return patternMap ;
1628
+ boolean isRuleWithoutPattern = ruleWithoutPattern [0 ];
1629
+ return createPatternMap (patternIndexMap , isRuleWithoutPattern );
1664
1630
} else if (lhsPatternExpr instanceof PatternNested ) {
1665
1631
PatternNested pattern2 = (PatternNested ) lhsPatternExpr ;
1666
1632
// PatternMap1 patternMap1 = new PatternMap1();
@@ -1691,6 +1657,87 @@ static IPatternMap determinePatterns(final IExpr lhsPatternExpr, int[] priority,
1691
1657
return new PatternMap0 ();
1692
1658
}
1693
1659
1660
+ public static IPatternMap createSymbolValue (
1661
+ List <GenericPair <IExpr , ISymbol >> patternIndexMap ) {
1662
+ int size = patternIndexMap .size ();
1663
+ switch (size ) {
1664
+ case 1 :
1665
+ PatternMap1 patternMap1 = new PatternMap1 ();
1666
+ patternMap1 .fValue1 = patternIndexMap .get (0 ).getFirst ();
1667
+ patternMap1 .fSymbol1 = patternIndexMap .get (0 ).getSecond ();
1668
+ return patternMap1 ;
1669
+ case 2 :
1670
+ PatternMap2 patternMap2 = new PatternMap2 ();
1671
+ patternMap2 .fValue1 = patternIndexMap .get (0 ).getFirst ();
1672
+ patternMap2 .fSymbol1 = patternIndexMap .get (0 ).getSecond ();
1673
+ patternMap2 .fValue2 = patternIndexMap .get (1 ).getFirst ();
1674
+ patternMap2 .fSymbol2 = patternIndexMap .get (1 ).getSecond ();
1675
+ return patternMap2 ;
1676
+ case 3 :
1677
+ PatternMap3 patternMap3 = new PatternMap3 ();
1678
+ patternMap3 .fValue1 = patternIndexMap .get (0 ).getFirst ();
1679
+ patternMap3 .fSymbol1 = patternIndexMap .get (0 ).getSecond ();
1680
+ patternMap3 .fValue2 = patternIndexMap .get (1 ).getFirst ();
1681
+ patternMap3 .fSymbol2 = patternIndexMap .get (1 ).getSecond ();
1682
+ patternMap3 .fValue3 = patternIndexMap .get (2 ).getFirst ();
1683
+ patternMap3 .fSymbol3 = patternIndexMap .get (2 ).getSecond ();
1684
+ return patternMap3 ;
1685
+ }
1686
+ PatternMap patternMap = new PatternMap ();
1687
+ patternMap .fRuleWithoutPattern = true ;
1688
+ patternMap .fSymbolsOrPattern = new IExpr [size ];
1689
+ patternMap .fSymbolsOrPatternValues = new IExpr [size ];
1690
+ patternMap .fPatternObjects = new IPatternObject [size ];
1691
+ int i = 0 ;
1692
+ for (GenericPair <IExpr , ISymbol > entry : patternIndexMap ) {
1693
+ patternMap .fSymbolsOrPatternValues [i ] = entry .getFirst ();
1694
+ patternMap .fSymbolsOrPattern [i ] = entry .getSecond ();
1695
+ i ++;
1696
+ }
1697
+ return patternMap ;
1698
+ }
1699
+
1700
+ public static IPatternMap createPatternMap (
1701
+ List <GenericPair <IExpr , IPatternObject >> patternIndexMap ,
1702
+ boolean isRuleWithoutPattern ) {
1703
+ int size = patternIndexMap .size ();
1704
+ switch (size ) {
1705
+ case 1 :
1706
+ PatternMap1 patternMap1 = new PatternMap1 ();
1707
+ patternMap1 .fSymbol1 = patternIndexMap .get (0 ).getFirst ();
1708
+ patternMap1 .fPatternObject1 = patternIndexMap .get (0 ).getSecond ();
1709
+ return patternMap1 ;
1710
+ case 2 :
1711
+ PatternMap2 patternMap2 = new PatternMap2 ();
1712
+ patternMap2 .fSymbol1 = patternIndexMap .get (0 ).getFirst ();
1713
+ patternMap2 .fPatternObject1 = patternIndexMap .get (0 ).getSecond ();
1714
+ patternMap2 .fSymbol2 = patternIndexMap .get (1 ).getFirst ();
1715
+ patternMap2 .fPatternObject2 = patternIndexMap .get (1 ).getSecond ();
1716
+ return patternMap2 ;
1717
+ case 3 :
1718
+ PatternMap3 patternMap3 = new PatternMap3 ();
1719
+ patternMap3 .fSymbol1 = patternIndexMap .get (0 ).getFirst ();
1720
+ patternMap3 .fPatternObject1 = patternIndexMap .get (0 ).getSecond ();
1721
+ patternMap3 .fSymbol2 = patternIndexMap .get (1 ).getFirst ();
1722
+ patternMap3 .fPatternObject2 = patternIndexMap .get (1 ).getSecond ();
1723
+ patternMap3 .fSymbol3 = patternIndexMap .get (2 ).getFirst ();
1724
+ patternMap3 .fPatternObject3 = patternIndexMap .get (2 ).getSecond ();
1725
+ return patternMap3 ;
1726
+ }
1727
+ PatternMap patternMap = new PatternMap ();
1728
+ patternMap .fRuleWithoutPattern = isRuleWithoutPattern ;
1729
+ patternMap .fSymbolsOrPattern = new IExpr [size ];
1730
+ patternMap .fSymbolsOrPatternValues = new IExpr [size ];
1731
+ patternMap .fPatternObjects = new IPatternObject [size ];
1732
+ int i = 0 ;
1733
+ for (GenericPair <IExpr , IPatternObject > entry : patternIndexMap ) {
1734
+ patternMap .fSymbolsOrPattern [i ] = entry .getFirst ();
1735
+ patternMap .fPatternObjects [i ] = entry .getSecond ();
1736
+ i ++;
1737
+ }
1738
+ return patternMap ;
1739
+ }
1740
+
1694
1741
/**
1695
1742
* Determine all patterns (i.e. all objects of instance IPattern) in the given expression
1696
1743
*
0 commit comments