anchor.diff:  //AC: keep the lexer and the parser together for now because that's the default Antlr layout
   
   options {
  +    //modify the buffer in place since our changes are small
       output = template;
       rewrite = true;
   }
  
positive.code: }
  
  @parser::members {
  private matlab.TranslationProblem makeProblem(RecognitionException e) {
      return makeProblem(getTokenNames(), e);
  }
  
  private matlab.TranslationProblem makeProblem(String[] tokenNames, RecognitionException e) {
      //change column to 1-based
      return new matlab.ArrayTranslationProblem(e.line, e.charPositionInLine + 1, getErrorMessage(e, tokenNames));
  }
  
  public static String translate(String text, int baseLine, int baseCol, OffsetTracker offsetTracker, List<matlab.TranslationProblem> problems) {
      ANTLRStringStream in = new ANTLRStringStream(text);
      in.setLine(baseLine);
  
negative.code: }
  }
  
  //start symbol
  array :
       matrix
    |  cell_array
  