@@ -30,15 +30,15 @@ private static Rules doFactorization(Rules r, Set<Token> allTokens) {
3030 return Utils .whileChanges (r , (rls )-> removeSingleFactorizationLayer (r , allTokens ));
3131 }
3232
33- public static Rules removeSingleFactorizationLayer (Rules r , Set <Token > allTokens ) {
33+ static Rules removeSingleFactorizationLayer (Rules r , Set <Token > allTokens ) {
3434 Pair <Stream <Rule >, Stream <Rule >> commonPrefixedRules1 = getCommonPrefixedRules (r );
3535 List <Rule > commonPrefixedRules = commonPrefixedRules1 .l ().toList ();
3636 List <Rule > notCommonPrefixedRules = commonPrefixedRules1 .r ().toList ();
3737 List <Rule > rules = commonPrefixedRules .stream ().parallel ().flatMap (rule -> solveLongestPrefix (r , rule , allTokens )).toList ();
3838 return new Rules (Utils .concat (rules , notCommonPrefixedRules )).simplify ();
3939 }
4040
41- public static Rules bubbleUpAmbiguousRules (Rules r ) {
41+ private static Rules bubbleUpAmbiguousRules (Rules r ) {
4242 return Utils .whileChanges (r , Factorizer ::singleBubblePass );
4343 }
4444
@@ -54,14 +54,6 @@ private static boolean willBubbleUpFix(Rules r, Rule rule) {
5454 return isRuleAmbiguousAtAll (r , rule ) && !hasMultiplePrefixes (rule );
5555 }
5656
57- public static boolean isRuleAmbiguous (Rules r , Rule rule ) {
58- List <Set <Token >> firsts = rule .options ().stream ().parallel ().map (to -> FirstCalculator .calculateFirst (to .tokens (), r )).peek (it -> it .remove (Token .LAMBDA )).toList ();
59- // Test if the 'first' function of all the to-s are distinct
60- int totalSize = firsts .stream ().map (Set ::size ).reduce (Integer ::sum ).orElse (0 );
61- int distinctSize = firsts .stream ().flatMap (Collection ::stream ).collect (Collectors .toSet ()).size ();
62- return totalSize != distinctSize ;
63- }
64-
6557 private static Rule bubbleUpRule (Rule ambiguousRule , Rules r ) {
6658 // Calculate all possible pairs of to-s inside the ambiguousRule
6759 List <Pair <To , To >> rulePairs = ambiguousRule .options ().stream ().parallel ().flatMap (to1 -> ambiguousRule .options ().stream ().parallel ().map (to2 -> new Pair <>(to1 , to2 ))).toList ();
0 commit comments