anchor.diff:    lexer->last_newline = 0;
     lexer->final_newline = 0;
     lexer->start_col = 0;
  -  lexer->rows = rb_ary_new();
  -  lexer->current_row = rb_ary_new();
   }
   
   static VALUE CLexer_alloc(VALUE klass)
  
positive.code:   size_t last_newline;
    size_t final_newline;
  
    VALUE listener;
    VALUE rows;
    VALUE current_row;
  
    listener_cb store_comment_content;
    listener_cb store_tag_content;
  
negative.code:     con = rb_str_new(PTR_TO(content_start), LEN(content_start, p));
      rb_funcall(con, rb_intern("strip!"), 0);
  
      rb_ary_push(current_row, con);
    }
  
    action start_row {
      current_row = rb_ary_new();
    }  
  
    action store_row {
      rb_ary_push(rows, current_row);
    }
  
    action store_table {
      rb_funcall(lexer->listener, rb_intern("table"), 2, rows, INT2FIX(lexer->current_line));
    }
  
    action end_feature {
  