anchor.diff:          RPAREN
            LCURLY
       ;
  -functiondecl returns [StringTemplate code=template("function")]
  +proceduredecl returns [StringTemplate code=template("function")]
   {StringTemplate f=null;}
       :  ( LPAREN
           f=formalParameter
  
positive.code:         }
      ;
  
  predictFunctioncallAssign
      : ID LPAREN ;
  
  functioncallAssign returns [StringTemplate code=template("call")]
  {StringTemplate f=null;}
      :
          functionInvocation[code]
      ;
  
  functionInvocation [StringTemplate code]
  {StringTemplate f=null;}
      :
          id:ID {code.setAttribute("func", id.getText());}
  
negative.code: 
  // this goes as far as the LCURLY so that we don't mistake it for
  // a function invocation. with more thought can be made shorter, perhaps.
  predictProceduredecl
  {StringTemplate f=null;}
      :  ( LPAREN
          f=formalParameter
  