簡単言語

NO_654

やっと制御構文に入りますよーw
変数実装がこのBBS書きこみ制作の最初の頃だったかんじするんですがw
とりあえずサンプル書きました
コメントに関しては
全力でスクリプトを書いてるので そんな余裕なかったりw
いつもは余力を残して書いているので
コメントを書く部分が残っているかんじのような
いつもはコーディング70%コメント30%
今はコーディング100%とw

#module sub_sys_label i_name,i_ID,i_l_value
;i_nameラベル変数の名前
;i_nameラベル変数のID
;i_nameラベル変数の値、コマンド番号を格納する(だったようなw)
#modinit str p_name,int p_ID,var p_l_value
;  sdim i_name,500
;  sdim i_ID,500
;  sdim i_l_value,500
  i_name=p_name
  i_ID=p_ID
  i_l_value=p_l_value
  return
;getter
#modcfunc local get_i_name
  return i_name
#modcfunc local get_i_ID
  return i_ID
#modfunc local get_i_l_value var p_gil
  p_gil = i_l_value
  return
#modfunc local set_i_l_value var _p4set_value
  i_l_value = _p4set_value
  return
#modfunc local dump
logmes "dump "+i_ID
logmes "dump "+i_name
logmes "dump "+i_l_value
return
#modfunc local get4op var p_r
p_r=""+i_ID+":"+i_name+":"+i_l_value
return
#global
#module m_repeat_block   rep_var,max_rep_var,num_l_repeat,l_repeat,num_l_loop,l_loop,num_fin_rep,fin_rep,num_ar_l_break,ar_l_break,num_ar_l_continue,ar_l_continue
#modinit
  rep_var      = 0
  num_l_repeat = -1
  num_l_loop   = -1
  num_fin_rep  = -1
  num_l_break  = -1
  num_l_continue = -1
  return
#modfunc set_l_repeat str _p_name,int _p_ID,var _p_l_value
  if num_l_repeat = -1{
    newmod l_repeat,sub_sys_label,_p_name,_p_ID,_p_l_value
    num_l_repeat = 1
    return
  }
  dialog "you did reg label:A",2
  return
#modfunc set_l_loop str _p_name,int _p_ID,var _p_l_value
  if num_l_loop = -1{
    newmod l_loop,sub_sys_label,_p_name,_p_ID,_p_l_value
    num_l_loop = 1
    return
  }
  dialog "you did reg label:B",2
  return
#modfunc set_fin_rep str _p_name,int _p_ID,var _p_l_value
  if num_fin_rep = -1{
    newmod fin_rep,sub_sys_label,_p_name,_p_ID,_p_l_value
    num_fin_rep = 1
    return
  }
  dialog "you did reg label:C",2
  return
#modfunc set_rep_var int p
  max_rep_var = p
  return
#modfunc get_rep_var var p_r
  p_r = rep_var
  return
#modfunc sys_repeat var p_label
; logmes "OK1"
; loc_index = p_r - 1
  if rep_var >= max_rep_var{
    logmes ""+rep_var
    logmes ""+max_rep_var
    f_jump@=1:p_label=*end_rep2@
    return
  }
  rep_var++
  f_jump@=0:return
#modfunc sys_loop var p_label
; logmes "OK2"
  f_jump@=1:p_label=*begin_rep@
  return
#global

f_def=1
f_do=0 

;repeat 3
*tmp_rep
if f_def==1{
  newmod obj_test_rep,m_repeat_block
  tmp_l=*begin_rep
  set_l_repeat obj_test_rep,"begin",1,tmp_l
  set_rep_var obj_test_rep,3
}
if f_do==1{
*begin_rep: 
  tmp_ll=*tmp_rep
  sys_repeat obj_test_rep,tmp_ll
  if f_jump==1:f_jump=0:goto tmp_ll 

  print "HELLO"
  await 1
}
;loop
if f_def==1{
  tmp_l=*end_rep
  set_l_loop obj_test_rep,"end",2,tmp_l
}
if f_do==1{
*end_rep:
  tmp_ll=*tmp_rep
  sys_loop obj_test_rep,tmp_ll
  if f_jump==1:f_jump=0:goto *begin_rep
}
*end_rep2
if f_def==1{
  tmp_l=*end_rep2
  set_fin_rep obj_test_rep,"end_rep2",3,tmp_l
}

if f_def==1{
  f_def=0:f_do=1:goto *tmp_rep
}
stop