簡単言語_NO467toNO479

NO_469

プログラム言語的な動き方は、現在
ラベル登録
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