static int leastCodePointOf(ImmutableRangeSet<Integer> cps) {
   for (Range<Integer> range : cps.asRanges()) {
     if (range.hasLowerBound()) {
       int least = range.lowerEndpoint();
       if (cps.contains(least)) {
         return least;
       }
       // Handle the case where we've got a left-open first range.
       ++least;
       if (cps.contains(least)) {
         return least;
       }
     }
   }
   return -1;
 }
 @Override
 public ImmutableRangeSet<Integer> lookahead(Language lang) {
   Frequency ff = lang.lali.consumesInput(first);
   switch (ff) {
     case NEVER:
       return lang.lali.lookahead(second);
     case ALWAYS:
       return lang.lali.lookahead(first);
     case SOMETIMES:
       TreeRangeSet<Integer> r = TreeRangeSet.create();
       r.addAll(lang.lali.lookahead(first));
       r.addAll(lang.lali.lookahead(second));
       return ImmutableRangeSet.copyOf(r);
   }
   throw new AssertionError(ff.name());
 }
Пример #3
0
 public FileToFormat(RangeSet<Integer> lineRanges, List<Integer> offsets, List<Integer> lengths) {
   this.lineRanges = ImmutableRangeSet.copyOf(lineRanges);
   this.offsets = ImmutableList.copyOf(offsets);
   this.lengths = ImmutableList.copyOf(lengths);
 }