Я видел этот хороший пост в блоге о продолжениях Scala , который «эмулирует» оператор GOTO
на языке Scala.(подробнее о Продолжения здесь )
Я бы хотел, чтобы то же самое было в языке программирования Groovy.Я думаю, что это возможно в рамках Groovy фазового преобразования компилятора .
Я работаю над предметно-ориентированным языком (DSL), и предпочитаю встроенный в Groovy.Я хотел бы иметь оператор GOTO
, потому что DSL является неструктурированным языком (и генерируется из диаграмм рабочих процессов).Мне нужен «помеченный» оператор goto, а не номера строк.
DSL - это язык для определения рабочих процессов, и поскольку для стрелок между узлами нет ограничений, необходим goto
.(или нечитаемый код с while
и т. д.)
Как новичок в Groovy и Scala, я не знаю, смогу ли я перевести решение Scala на Groovy, но я не думаю, что в Groovy есть продолжения.
Я ищу алгоритм / код для эмуляции помеченных goto в Groovy.Один алгоритм, который я имел в виду, использует eval
несколько раз;делать eval
, когда вы находитесь на goto
.DSL оценивается уже с eval
.
Я не ищу цикл while или что-то в этом роде, а скорее перевод этого кода, чтобы он работал (какой-то другой синтаксис не проблема)*
label1:
a();
b();
goto label1;
PS: Я не предпочитаю обсуждение, если мне действительно нужно использовать / хотеть выражение GOTO.DSL является языком спецификаций и, вероятно, не справляется с переменными, эффективностью и т. Д.
PS2: можно использовать другое ключевое слово, кроме GOTO
.