anchor.diff:  
   NEWLINE
    : ( {atStartOfInput()}?   SPACES
  -   | ( '\r'? '\n' | '\r' ) SPACES?
  +   | ( '\r'? '\n' | '\r' | '\f' ) SPACES?
      )
      {
  -     String newLine = getText().replaceAll("[^\r\n]+", "");
  -     String spaces = getText().replaceAll("[\r\n]+", "");
  +     String newLine = getText().replaceAll("[^\r\n\f]+", "");
  +     String spaces = getText().replaceAll("[\r\n\f]+", "");
        int next = _input.LA(1);
   
  -     if (opened > 0 || next == '\r' || next == '\n' || next == '#') {
  +     if (opened > 0 || next == '\r' || next == '\n' || next == '\f' || next == '#') {
          // If we're inside a list or on a blank line, ignore all indents, 
          // dedents and line breaks.
          skip();
  
positive.code:  ;
  
  fragment COMMENT
   : '#' ~[\r\n]*
   ;
  
  fragment LINE_JOINING
   : '\\' SPACES? ( '\r'? '\n' | '\r' )
   ;
  
  /// id_start     ::=  <all characters in general categories Lu, Ll, Lt, Lm, Lo, Nl, the underscore, and characters with the Other_ID_Start property>
  
negative.code: /// shortstringitem ::=  shortstringchar | stringescapeseq
  /// shortstringchar ::=  <any source character except "\" or newline or the quote>
  fragment SHORT_STRING
   : '\'' ( STRING_ESCAPE_SEQ | ~[\\\r\n\f'] )* '\''
   | '"' ( STRING_ESCAPE_SEQ | ~[\\\r\n\f"] )* '"'
   ;
  
  /// longstring      ::=  "'''" longstringitem* "'''" | '"""' longstringitem* '"""'
  