anchor.diff:    dayToken() => token(digit().repeat(1, 2));
     monthToken() => token(letter().repeat(3, 9));
     yearToken() => token(digit().repeat(2, 4));
  -  quarterToken() => token(char('Q') & digit() & char(',')) & yearToken();
  +  quarterToken() => token(char('Q') & digit()) & char(',') & yearToken();
   }
   
   /// Parse a term
  
positive.code: 
  import 'package:petitparser/petitparser.dart';
  import 'package:date/date.dart';
  
  Set<String> _mon = new Set.from([
    'Jan',
  
negative.code:             _toYear(each[2]), _toMonth(each[1]), int.parse(each[0]));
        });
    simpleQuarterToken() => super.simpleQuarterToken().map((List<String> each) {
      int year = _toYear(each[2]);
      int quarter = int.parse(each[0].substring(1));
      if (quarter < 1 || quarter > 4)
        throw new ArgumentError('Invalid quarter: ${each.join()}');
      int month = 3*(quarter-1)+1;
      TZDateTime start = new TZDateTime.utc(year, month);
      TZDateTime end = new TZDateTime.utc(year, month+3);
      return new Interval(start, end);
    });
  
    compoundMonthToken() => super.compoundMonthToken().map((List<String> each) {
  