FC2ブログ

記事一覧

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Godmode9のif/gotoコマンド追加について

Godmode9に"if", "else", "end", "goto", "label"コマンドを追加するPullRequestを開きましたが、もうちょいバグ減るまで取り入れないぞと言われたのでバグがあったらコメントで報告お願いします。

ビルド
ダウンロード(Google Drive)

ソースコード
Github

if – 引数可変
else – 引数0
end – 引数0
goto – 引数1
label – 引数1

ifの条件は"if"の直後のコマンドが成功することです。
他の言語と同じようなif-else-end構文の動作をするはずです。
gotoに関しては
@label_name
のようにジャンプする先にラベルを置いといて
goto label_name
のようにしてジャンプします。ジャンプする先はif-endの中にあってはなりません。if-endのブロックにジャンプした場合予期せぬ動作をする可能性があります
gotoの引数でラベル名を指定してやるとそのラベル名を持ったlabelコマンドの所に飛びます。当然labelコマンドはgotoの前でも後でも構いません。同じラベルが二個以上ある場合一番上のものにジャンプします。


このPullRequestが通ったらスクリプトの幅が広がりそうです。gotoとif-elseでfor/while/switch文の代わりになります。



これは動作を理解するためのものです。
インデントに全角スペースを使っている上、日本語コメントなので実際にコピペしても動きません。(日本語コメントだけだと動くかも知れませんが)


if test test # 同じ
 echo “This will be shown” # ここは実行される
else
 echo “This will be skipped” # ここはelseのためifの二つの引数が合わなかったときだけ実行される->今回は実行されない
end

if test test1 # 違う
 echo “This will be skipped” # 今度はifの引数が合わなかったため実行されない
else
 echo “This will be shown” # ここは実行される
end

if test test # 同じ
 echo “This will be shown” # 実行される
 if test test # ネストは255個までできる
  echo “This will be shown”
 end
end # elseは無くても構わない

goto testlabel # “testlabel” というのを引数に持ったlabelコマンドにジャンプする(その間にあるコマンドは実行されない)
echo “This won’t be shown” # ここは実行されない。
label testlabel # ここにあります
echo “This will be shown” # ジャンプした後は普通に動く

label label_2
echo “Looping”
goto label_2 # 後ろにもジャンプできる(この場合無限ループです、電源10秒押しでシャットダウンしてください)



スポンサーサイト

コメント

コメントの投稿

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。