anchor.diff:      |   declarationList declaration
       ;
   
  +/* Droplet: ANTLR has trouble parsing a string when a rule doesn't
  +   contain an EOF token at the end of it. To do live reparsing, we
  +   have to define new duplicate rules for each intermediate node plus EOF
  +   so that we can parse small parts of the program independently.
  +  */
   primaryExpression_DropletFile
       :   Identifier EOF
       |   Constant EOF
  
positive.code:     |   blockItemList blockItem
      ;
  
  // A block item can be a special kind of function call, which we
  // check before we check declarations to avoid conflicts with a (b);.
  blockItem
      :   specialMethodCall
      |   declaration
  
negative.code:     |   EscapeSequence
      ;
  
  /* Droplet: we parse all directives as if they were comments,
     distinguishing between them later in parseComment. */
  Directive
      :   '#' [^\r\n]*? ~[\r\n]*
          -> skip
  