プログラム言語的な動き方は、現在
ラベル登録
pc登録
実行
の3種類の動き方があるんですが
素直にフラグで分岐しよう。と
未だ断片的な動かないコードですけどw
#module mod_label i_name,i_ID,i_l_value #modinit str p_name,int p_ID,int p_l_value i_name=p_name i_ID=p_ID i_l_value=p_l_value return #modcfunc get_i_name return i_name #modcfunc get_i_ID return i_ID #modcfunc get_i_l_value return i_l_value #deffunc x_label_init int sw_new_p,str _p_name,int _p_l_value ; global fv_ID if sw_new_p==1{ fv_ID=0 } newmod o_label,mod_label,_p_name,fv_ID,_p_l_value fv_ID++ return #defcfunc get_x_label_l_value str __p_name,int __p_ID,local r_name r_name=get_i_name(o_label.__p_ID) if r_name!=__p_name:return -1 return get_i_l_value(o_label.__p_ID) #global dim pc_stack,256 n_pc_stack=0 hoge_pc=1 *sw_begin await 1 my_line=int(__LINE__) if flag_on_line_search==1 pc_stack.hoge_pc=my_line:hoge_pc++ //1 } if flag_on_label_search==1{ my_pc_B=1 if my_pc_B==1{my_pc_B++:cp1=1 } if my_pc_B==2{my_pc_B++:cp2="a" } if my_pc_B==3{my_pc_B++:cp3=1 } if my_pc_B==4{my_pc_B++: x_label_init cp1,cp2,cp3 } if my_pc_B==5{my_pc_B=1:my_pc++ }// label } if flag_on_do==1 my_pc++:goto *sw_begin } my_line=int(__LINE__) if flag_on_line_search==1 pc_stack.hoge_pc=my_line:hoge_pc++ //2 } if flag_on_label_search==1{ } if flag_on_do==1 cr_com=en_cls0:goto *com_sw } my_line=int(__LINE__) if flag_on_line_search==1 pc_stack.hoge_pc=my_line:hoge_pc++ //3 } if flag_on_label_search==1{ } if flag_on_do==1 if my_pc_B==1{my_pc_B++:cp1=120:goto *sw_begin } if my_pc_B==2{my_pc_B++:cp2=24: goto *sw_begin } if my_pc_B==3{cr_com=en_objsize: my_pc_B=1:my_pc++:goto *com_sw } my_pc++ }
pc=1 dim pc_stack,256 n_pc_stack=0 dim num_stack,32 repeat length(num_stack) num_stack.cnt=-1 loop dim my_stack,256 n_stack=0 *sw_begin_b await 1 ;switch pc pc_stack.pc=int(__LiNE__):pc++ //1 pc_stack.pc=int(__LiNE__):pc++ //2 pc_stack.pc=int(__LiNE__):pc++ //3 ;swend repeat 5 logmes ""+cnt+" "+pc_stack.cnt loop repeat 5 if pc_stack.cnt!=0{ num_stack(pc_stack.cnt)=cnt } loop repeat length(num_stack) logmes ""+cnt+":"+num_stack.cnt loop //*0 0 1 14 2 15 3 17 4 0 0:-1 1:-1 2:-1 3:-1 4:-1 5:-1 6:-1 7:-1 8:-1 9:-1 10:-1 11:-1 12:-1 13:-1 14:1 15:2 16:-1 17:3 18:-1 19:-1 20:-1 21:-1 22:-1 23:-1 24:-1 25:-1 26:-1 27:-1 28:-1 29:-1 30:-1 31:-1