anchor.diff:          if t.type != Token.EOF:
               return t
           else:
  +            if not self._suppressNewlines:
  +                self.emitNewline()
               self.emitFullDedent()
               self.emitEndmarker()
  -            self.emitEndToken(t)  
  +            self.emitEndToken(t)
               return self._tokens.deq()
               
   def emitEndToken(self, token):
       self._tokens.enq(token)
  -    
  +
   def emitIndent(self, length=0, text='INDENT'):
       t = self.createToken(Python2Parser.INDENT, text, length)
       self._tokens.enq(t)
  -    
  +
   def emitDedent(self):
       t = self.createToken(Python2Parser.DEDENT, 'DEDENT')
       self._tokens.enq(t)
  -    
  +
   def emitFullDedent(self):
       while not self._indents.empty():
           self._indents.pop()
           self.emitDedent()
  -    
  +
   def emitEndmarker(self):
       t = self.createToken(Python2Parser.ENDMARKER, 'ENDMARKER')
       self._tokens.enq(t)
  -    
  +
   def emitNewline(self):
       t = self.createToken(Python2Parser.NEWLINE, 'NEWLINE')
       self._tokens.enq(t)
  -  
  +
   def createToken(self, type_, text="", length=0):
       start = self._tokenStartCharIndex
       stop = start + length
  -    t = CommonToken(self._tokenFactorySourcePair, 
  -                    type_, self.DEFAULT_TOKEN_CHANNEL, 
  +    t = CommonToken(self._tokenFactorySourcePair,
  +                    type_, self.DEFAULT_TOKEN_CHANNEL,
                       start, stop)
       t.text = text
       return t
   }
   
  -// Included from official site.
  +// Header included from Python site:
   /*
    * Grammar for Python
    *
  
positive.code: 
  testlist1: test (',' test)*
      ;
      
  // not used in grammar, but may appear in "node" passed from Parser to Compiler
  encoding_decl: NAME
      ;
      
  yield_expr: 'yield' (testlist)?
      ;
  
  /*
   * Lexer rules
   */
   
  STRING
      : [uUbB]? [rR]? 
      ( '\''     ('\\' (([ \t]+ ('\r'? '\n')?)|.) | ~[\\\r\n'])*  '\''
      | '"'      ('\\' (([ \t]+ ('\r'? '\n')?)|.) | ~[\\\r\n"])*  '"'
      | '"""'    ('\\' .                          | ~'\\'     )*? '"""'
      | '\'\'\'' ('\\' .                          | ~'\\'     )*? '\'\'\''
      )
      ;
      
      
  NAME: [a-zA-Z_] [a-zA-Z0-9_]*
      ;
      
  NUMBER
      :      '0' ([xX] [0-9a-fA-F]+
      |           [oO] [0-7]+
      |           [bB] [01]+ ) [lL]?
      |    ([0-9]+ '.' [0-9]* | '.' [0-9]+) ([jJ] | [eE] [-+]? [0-9]+)?
      |     [0-9]+                          ([jJ] | [eE] [-+]? [0-9]+ | [lL])?
      ;
   
  LINENDING:             (('\r'? '\n')+ {self._lineContinuation=False}
      |      '\\'  [ \t]* ('\r'? '\n')  {self._lineContinuation=True}) 
  {
  if self._openBRCount == 0 and not self._lineContinuation:
      if not self._suppressNewlines:
  
negative.code:                 raise Exception()
  }  -> channel(HIDDEN)
      ;
  
  COMMENT:        '#' ~[\r\n]* -> skip;
  
  OPEN_PAREN:     '(' {self._openBRCount  += 1};
  