2

GNU dc で分岐するにはどうすればよいでしょうか? OpenBSD の実装には、else-branch による条件分岐がありますが、GNU の実装にはありません... したがって、条件付きで 1 つのマクロを実行できますが、完了すると、コード内の同じ場所に戻ります。

スタックにセンチネル値を残すことで達成できるように思えますが、それはエラーが発生しやすいです (特に、dc は文字列比較を実行できないため、数字だけのセンチネルが残ります)。

たぶん q/Q と関係がありますか?

これは可能ですか?

4

1 に答える 1

3

私はそれを理解したと思います!

サブマクロ内で q/Q を使用することにより、呼び出し元のマクロの 1 つ上のレベルに戻り、呼び出し元内のそれ以上のコードをスキップします。サブマクロを条件付きで呼び出すと、残りの呼び出し側マクロを「else」ブランチにする効果があります。

[[Input is an odd number.]P]sa
[[Input is an even number.]Pq]sb
[2%0=blax]sc
1lcx
Input is an odd number.
2lcx
Input is an even number.
于 2015-08-04T05:18:13.103 に答える