def parse_move
      s0 = @current_pos
      s1 = parse_line
      if s1 != :failed
        s2 = []
        s3 = parse_comment
        while s3 != :failed
          s2 << s3
          s3 = parse_comment
        end
        parse_pointer
        @reported_pos = s0
        s0 = transform_move(s1, s2)
      else
        @current_pos = s0
        s0 = :failed
      end
      s0
    end
def parse_move
      s0 = @current_pos
      s1 = parse_line
      if s1 != :failed
        s2 = []
        s3 = parse_comment
        while s3 != :failed
          s2 << s3
          s3 = parse_comment
        end
        parse_pointer
        @reported_pos = s0
        s0 = transform_move(s1, s2)
      else
        @current_pos = s0
        s0 = :failed
      end
      s0
    end
move : line comment* pointer?