anchor.diff:  				var IDX_MULTI = OPERATOR_CHAR_S.indexOf('*');
   				var IDX_PAREN = OPERATOR_CHAR_S.indexOf('(');
   				var IDX_EQUAL = OPERATOR_CHAR_S.indexOf('=');
  -				function reverse_porlish_notation(formula, _param_s, _tmp_param_s){
  +				var operator_s =[ //null
  +					,function(a0, a1){is_calcable(a0,a1); return a1 + a0;}
  +					,function(a0, a1){is_calcable(a0,a1); return a1 - a0;}
  +					,function(a0, a1){is_calcable(a0,a1); return a1 * a0;}
  +					,function(a0, a1){is_calcable(a0,a1); return a1 / a0;}
  +					,function(a0, a1){is_calcable(a0,a1); return a1 % a0;}
  +				];
  +				function is_calcable(a0, a1){
  +					if($.isNumeric(a0) && $.isNumeric(a1)){
  +						return ;
  +					}else{
  +						throw new TypeError(a0 + ' : ' + a1 + ' are not resolved ');
  +					}
  +				}
  +				function reverse_porlish_notation(formula, _param_s){
   					var param_s = if_nullOrUndef_then_return_init(_param_s, {});
  -					var tmp_param_s = if_nullOrUndef_then_return_init(_tmp_param_s, {});
  -//console.log('formula : '+formula);
  -					var _formula = formula;
  +					return reverse_porlish_notation_logic(formula, param_s, {})[0];
  +				}
  +				function reverse_porlish_notation_logic(_formula, _param_s, _resolved_param_s){
  +//console.log('reverse_porlish_notation_logic : '+JSON.stringify(arguments));
  +					var param_s = {}; $.extend(true,param_s, _param_s);
  +					var resolved_param_s = {}; $.extend(true,resolved_param_s, _resolved_param_s);
  +					var formula = _formula;
   					var _parent_counter = 0;
  -					if($.isArray(_formula)){
  -						_formula = _formula.join(' ');
  -					}
  -					if(typeof _formula === 'string'){
  -						_formula = formula.replace(/\s+/g,' ').trim();
  -					}
  -					var operator_s =[ //null
  -						,function(a0, a1){
  -							if($.isNumeric(a0) && $.isNumeric(a1)){
  -								return a0 + a1;
  -							}else{
  -								throw new TypeError(a0 + ' : ' + a1 + ' are not resolved ');
  -							}
  -						}
  -						,function(a0, a1){return a1 - a0;}
  -						,function(a0, a1){return a1 * a0;}
  -						,function(a0, a1){return a1 / a0;}
  -						,function(a0, a1){return a1 % a0;}
  -					];
  -					if(_formula != null && typeof _formula !== 'undefined'){
  +					if($.isArray(formula)){
  +						formula = formula.join(' ');
  +					}
  +					if(typeof formula === 'string'){
  +						formula = formula.replace(/\s+/g,' ').trim();
  +					}
  +					if(formula != null && typeof formula !== 'undefined'){
   						var stack = [];
   						var pool = '';
   						var num = 0;
  -						var length_formula = _formula.length;
  +						var length_formula = formula.length;
   						for(var i=0; i<length_formula; ++i){
  -							var c = _formula.charAt(i);
  +							var c = formula.charAt(i);
   							var op_idx = OPERATOR_CHAR_S.indexOf(c);
   							if (op_idx === 0) {
   								if(pool !== ''){
  -									var pool = param_s.hasOwnProperty(pool) ? param_s[pool] : pool;
  +									pool = param_s.hasOwnProperty(pool) ? param_s[pool] : resolved_param_s.hasOwnProperty(pool) ? resolved_param_s[pool] : pool;
   									if(pool === '+' || pool === '-'){//(+3 -1 +)への対応
   										stack.push(operator_s[OPERATOR_CHAR_S.indexOf(pool)] (stack.pop(), stack.pop()));
  -									}else if( ! $.isNumeric(pool) ){
  +									}else if(! $.isNumeric(pool) && pool.lastIndexOf('$',0) === 0){//var route
   										stack.push(pool);
   										pool = '';
   									}else{
  
positive.code: 				 * @return tag:[tag[tag[tag1, tag2],･･･len_val ],tag[same]]
  				 */
  				function format_raw_tag_s(raw_tag_s, _param_s){
  					var param_s = {};
  					$.extend(true, param_s, _param_s);
  					//console.log(raw_tag_s);
  					if( raw_tag_s == null || raw_tag_s.trim() === ''){
  						console.log('Please input at least one tag');
  						return ;
  					}
  					raw_tag_s = raw_tag_s.trim().replace(/\s+/g,' ').replace(/\s*,\s*/g,',');//複数連続スペースやカンマを一つに変換
  					console.log("raw_tag_s:"+JSON.stringify(raw_tag_s));
  					var tag_s2 = [];
  					$.each(raw_tag_s.split(LAYER_SEP), function(idx, tag){
  						var trimed_tag = tag.trim();
  						var pooled_tag_s = [];
  						$.each(split_ignore_nest(trimed_tag,SBL_HLD,[["(",")"]]), function(cIdx, sbl){//sibiling
  							var tag_num = sbl.trim().split(LOOP_HLD);//h1タグがあり､tr3でtrを3回とはしづらいため､*を区切りとする仕様
  							var loop_num = 1;
  							if(tag_num.length > 1){
  								var raw_num = tag_num[1];
  								console.log("loop_num : "+raw_num);
  								raw_num = param_s.hasOwnProperty(raw_num) ? param_s[raw_num] : raw_num;
  								if( ! $.isNumeric(raw_num)){
  									console.log('tag param_s : '+ sbl + ' :: ' + JSON.stringify(param_s));
  									loop_num = reverse_porlish_notation(raw_num, param_s, param_s);
  									console.log('formula : '+raw_num + ', loop num : '+loop_num + ', param_s : '+JSON.stringify(param_s));
  								}else{
  									loop_num = parseInt(raw_num, 10);
  								}
  
negative.code: 							}else if( op_idx === IDX_EQUAL ){
  								var val = stack.pop();// 評価順に依存しないため
  								var key = stack.pop();
  								while(! $.isNumeric(val) && resolved_param_s.hasOwnProperty(val) ){
  									val = resolved_param_s[val];
  								}
  								if($.isNumeric(key)){
  									throw new TypeError('Error '+key+' is not var. val is ' + val);
  								}
  								resolved_param_s[key] = val;								
  								stack.push(val);
  							}else{
  								pool += c;
  							}
  						}//end for
  						if(pool != null && pool != ''){
  							pool = param_s.hasOwnProperty(pool) ? param_s[pool] : resolved_param_s.hasOwnProperty(pool) ? resolved_param_s[pool] : pool;
  							stack.push(pool);
  						}
  					}
  					if(stack.length !== 1){
  						console.log('resolved_param_s : '+JSON.stringify(resolved_param_s));
  						console.log('stack : '+ JSON.stringify(stack));
  						throw new Error("Error formula is illegal : " + formula + ' : param_s : ' + JSON.stringify(param_s));
  					}
  					var rtn = stack[0];
  					if( ! $.isNumeric(rtn) ){
  						throw new Error("Error var " + rtn + ' is not resolved ');
  					}else{
  						rtn = parseInt(rtn,10);
  					}
  //console.log('return reverse_porlish_notation_logic '+JSON.stringify([rtn,param_s,resolved_param_s]));
  					return [rtn,param_s,resolved_param_s];
  				}
  
  				function if_nullOrUndef_then_return_init(param, init){
  