Scala 言語のステートメントを「エミュレート」する Scala continuations に関する素敵なブログ投稿を見ました。(継続GOTO
について詳しくはこちら)
プログラミング言語Groovyでも同じことがしたいです。Groovy コンパイラーのフェーズ変換内で可能だと思います。
私はドメイン固有言語 (DSL) に取り組んでおり、Groovy に組み込むことをお勧めします。GOTO
DSL は構造化されていない言語 (そしてワークフロー図から生成される) であるため、ステートメントが必要です。行番号ではなく、「ラベル付き」の goto ステートメントが必要です。
DSL はワークフロー定義用の言語であり、ノード間の矢印に制限がないため、goto
が必要です。while
(またはetcで読めないコード)
Groovy と Scala の初心者として、Scala ソリューションを Groovy に翻訳できるかどうかはわかりませんが、Groovy には継続があると思います。
Groovy でラベル付き goto をエミュレートするためのアルゴリズム/コードを探しています。私が念頭に置いていたアルゴリズムの 1 つは、eval
繰り返し使用することです。eval
あなたがいるときにやっていますgoto
。DSL はeval
already で評価されます。
「while」ループなどを探しているのではなく、このコードが機能するように変換しています (他の構文は問題ありません)。
label1:
a();
b();
goto label1;
PS: 本当に GOTO ステートメントを使用する必要があるかどうかについての議論は好みません。DSL は仕様言語であり、おそらく変数や効率などに対応していません。
PS2: 他のキーワードをGOTO
使用できます。