anchor.diff:  
     public boolean isNum(int c) {
         return c>='0' && c<='9';
  +  }
  +
  +  public int unitType(int type) {
  +      if(type == DecimalLiteral) {
  +          return UnitDecimalLiteral;
  +      } else {
  +          return UnitLiteral;
  +      }
  +  }
  +
  +  public boolean lookingAtInterpolation() {
  +      return input.LA(1) == '#' && input.LA(2) == '{';
     }
   }
   
  
positive.code:             {isNum(input.LA(2))}?=> (FloatWithLeadingDot) {$type=DecimalLiteral;}
          |
          ) (
              UnitSpecifier {if($type == DecimalLiteral) {$type=UnitDecimalLiteral;} else {$type=UnitLiteral;}}
          |
          )
      |   NonZeroDecimal (
  
negative.code:         | Exponent {$type=DecimalLiteral;}
          |
          ) (
              UnitSpecifier {$type = unitType($type);}
          |
          )
      ;
  
  StringLiteral
      :  ('"' 
          ( ({!lookingAtInterpolation()}?=> (EscapeSequence | ~('\\'|'"')))* ) 
          (
              '#{' {startInterpolation(); }
          |   '"'))
      |  ('#[' 
          ( ({!lookingAtInterpolation()}?=> (EscapeSequence | ~('\\'|']')))* ) 
          (
              '#{' {startAltInterpolation(); }
          |   ']'))
      | {isInterpolating()}?=> ('}' ( ({!lookingAtInterpolation()}?=> (EscapeSequence | ~('\\'|'"')))* ) 
          (
              '#{' {startInterpolation(); }
          |   '"'  {endInterpolation(); }))
      | {isAltInterpolating()}?=> ('}' ( ({!lookingAtInterpolation()}?=> (EscapeSequence | ~('\\'|']')))* ) 
          (
              '#{' {startAltInterpolation(); }
          |   ']'  {endAltInterpolation(); }))
  