#author("2018-06-13T18:18:11+09:00","","") #author("2018-06-13T18:19:25+09:00","","") --Ruby本に載ってる簡単言語をHSPに翻訳しましたw 次はコレをCに翻訳したいですね ---+:カウンタを1増やす --- -:カウンタを1減らす --->:カウンタを右に移動する ---<:カウンタを左に移動する ---.:カウンタの数値の文字を出力 ---,:カウンタに文字入力 ---[:ループ開始 ---]:ループ終了 ;#runtime "hsp3cl" #module step_2byte_num o_string,o_dim,o_index,o_length #modinit int p_length o_string="" o_length=p_length o_index=0 dim o_dim,o_length o_dim(o_length-1)=-1 return #modfunc local set str value o_string=value return #modfunc local set_index int p o_index=p return #modfunc local multi_set o_length=strlen(o_string) repeat o_length o_dim.cnt=one_get(thismod) if o_dim.cnt==-1:o_length=cnt+1:break loop return #modcfunc local get int p return o_dim.p #modcfunc local indexed_get local loc_r loc_r = o_dim.o_index o_index++ return loc_r #modcfunc local get_index return o_index #modcfunc local get_length return o_length // 数値を一文字返す #modcfunc local one_get if o_length>o_index{ n=peek(o_string,o_index) if ((n>=129)&(n<=159) )|( (n>=224)&(n<=252)){ o_index++ n2=peek(o_string,o_index) o_index++ num=n*256+n2 return num }else{ o_index++ return n } } return -1 #modcfunc each_with_index var p_c,var p_i,local loc_len loc_len=get_length@step_2byte_num(thismod) p_i=o_index p_c=indexed_get@step_2byte_num(thismod) if get_index@step_2byte_num(thismod) >= loc_len:return -1 return 1 #global sc= "++++++ [>++++++++++<-]>+++++." ;sc ="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++ ." ;sc+=">++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="++++++++++" ;sc+="+++++ .," ;mes cur ;mB_init sc mB_init_num sc mB_run repeat 200 logmes ""+(cnt)+":"+jumps@m_Brainf_ck.cnt loop #module m_stack o_array,o_index #modinit int p Empty=1 NotEmpty=-1 dim o_array, p o_index = 0 return #modfunc local push int p o_array(o_index) = p o_index++ return #modcfunc local pop o_index-- if o_index < 0 { dialog "popしすぎです",1 return 0 } return o_array(o_index) #modcfunc local is_Empty if o_index==0:return 1 return -1 #global #module m_Brainf_ck; source,source_l #define button_block(%1="") %tbtn1 %i0 button %1,*%p:%tbtn2 goto *%i %i0:%tbtn1 *%o #define b_break %tbtn2 goto *%p #define b_end %tbtn2 *%o:stop:*%o ;#deffunc mB_init str p ; sdim source,4000 ; source=p ; source_l=strlen(source) ; return #deffunc mB_init_num str p newmod o_Bf,step_2byte_num,$400 set@step_2byte_num o_Bf,sc@ multi_set@step_2byte_num o_Bf source_l=get_length@step_2byte_num(o_Bf)