ラベル

なぜ、JavaにしろC#にしろcase句にbreakが必要かといえば、case句はあくまでラベル扱いだからなわけだ。だったらラベルにブロック分割という役割を与えてやればいいんじゃなかろうか。

問題は大域ループの脱出だが、それは下記のように文法を変更すればいいだけの話だ。

    while (true) {
        while (true) {
            break 2; // 引数で与えられた数だけブロックを抜ける
        }
    }