このnice blog post about a Scala continuationsは、Scala言語のGOTO
ステートメントを 'エミュレート'しています。GroovyのGOTO文はどうですか?
を(Continuations hereについての詳細を読む)私はプログラミング言語Groovyで同じを持っていると思います。私はGroovy compiler phase transformationの中でそれが可能だと思います。
私は、ドメイン固有言語(DSL)に取り組んでいる、とGroovyに埋め込ま好ま。 DSLが非構造化言語であり(ワークフロー図から生成されるため)、GOTO
ステートメントが必要です。行番号ではなく、「ラベル付き」のgoto文が必要です。
DSLは、ワークフロー定義するための言語である、とノード間の矢のための制限はありませんので、goto
が必要とされています。 (while
などのコードを読むことができません)
GroovyとScalaの初心者としてはわかりませんが、私はScalaソリューションをGroovyに翻訳できますか?Groovyには継続がないと思います。
Groovyでラベル付きgotoをエミュレートするためのアルゴリズム/コードを探しています。私が念頭に置いていたアルゴリズムの1つは、eval
を繰り返し使用しています。あなたがgoto
にいるときeval
をしています。 DSLはすでにeval
で評価されています。
私は「しばらく」ループか何かを探しているのではなく、それが動作するようにこのコードを翻訳していないよ(他のいくつかの構文は問題ありません)
label1:
a();
b();
goto label1;
PS: 私は好みませんもし私がGOTOステートメントを本当に使用したい/希望したいのであれば議論。 DSLは仕様言語であり、おそらくなど
PS2変数、効率的に対処されていません。他のいくつかのキーワードが、その後GOTO
を使用することができます。
gotoとラベル付けされた脇役は、連続よりも簡単にシミュレートすることができます。 –
@Gabriel:あなたは私に糊を与えることができますか? – Julian
いいえ、私は接着剤がありません:)...あなたのDSLが実際にどのような制約を持っているのか分かりませんし、Groovyについてよく分かりませんが、gotoを扱う方法の1つは配列/リスト/現在のインデックス/キーを実行する1つのメソッドがあります。これはgotoで変更される可能性があります。 –