anchor.diff:    action start_table {
       p = p - 1;
       lexer->current_line = lexer->line_number;
  -    VALUE rows = rb_ary_new(), current_row = rb_ary_new();
  -    lexer->rows = RARRAY(rows);
  -    lexer->current_row = RARRAY(current_row);
  +    rb_ary_clear(lexer->rows);
  +    rb_ary_clear(lexer->current_row);
     }
     
     action begin_cell_content {
  
positive.code: #define MARK(M, P) (lexer->M = (P) - data)
  #define PTR_TO(P) (data + lexer->P)
  
  typedef void (*listener_cb)(void *listener, const char *at, size_t length, int line);
  typedef void (*listener_error_cb)(void *listener, const char *at, int line);
  typedef void (*listener_long_cb)(void *listener, const char *keyword_at, size_t keyword_length, const char *at, size_t length, int line);
  typedef void (*listener_pystring_cb)(void *listener, int start_col, const char *at, size_t length, int line);
  
  typedef struct lexer_state {
    int cs;
  
negative.code:   rb_funcall(con, rb_intern("strip!"), 0);
    rb_funcall(kw, rb_intern("strip!"), 0);
    rb_funcall(kw, rb_intern("chop!"), 0);
    rb_funcall(listener, rb_intern("background"), 3, kw, con, INT2FIX(current_line)); 
  }
  
  static void store_examples_content(VALUE listener, const char *keyword_at, size_t keyword_length, const char *at, size_t length, int current_line)
  {
    VALUE con = Qnil, kw = Qnil;
    kw = rb_str_new(keyword_at, keyword_length);
  