我看到這個nice blog post about a Scala continuations,它模仿Scala語言中的GOTO
語句。 (閱讀更多關於Continuations here)Groovy中的GOTO語句如何?
我想在編程語言Groovy中具有相同的功能。我認爲這可能在Groovy compiler phase transformation之內。
我正在研究域特定語言(DSL),並且首選嵌入到Groovy中。我希望得到GOTO
聲明,因爲DSL是非結構化語言(並且從工作流程圖生成)。我需要一個'標籤'goto聲明,而不是行號。
DSL是用於工作流定義的語言,並且由於節點之間的箭頭沒有限制,因此需要goto
。 (或無法讀取的代碼while
等)
作爲Groovy和Scala的初學者,我不知道我是否可以將Scala解決方案轉換爲Groovy,但我不認爲Groovy中存在延續。
我正在尋找用於在Groovy中模擬標記的goto的算法/代碼。我想到的一種算法是反覆使用eval
;當您在goto
時,請執行eval
。 已使用eval
評估DSL。
我不是在尋找一個「而」循環或東西,而是要將這種代碼,以便它的工作原理(一些其他的語法是沒有問題的)
label1:
a();
b();
goto label1;
PS: 我不喜歡討論如果我真的應該使用/想要GOTO語句。 DSL是一種規範語言,可能不會應對變量,效率等。
PS2:可以使用其他一些關鍵字GOTO
。
只是一個旁註,標記爲goto可以比連續模擬更容易... – 2011-01-10 10:27:49
@Gabriel:那麼你可以給我任何膠水? – Julian 2011-02-09 13:37:23
不,我沒有膠水:)...我不知道你的DSL真的有什麼限制,我不太瞭解Groovy,但是處理goto的一種方法可能是讓array/list/map關閉常量和一個執行當前索引/鍵的方法,可能會隨着goto而改變。 – 2011-02-09 14:47:32