[リストへもどる]
一括表示

タイトル質問です
記事No3539
投稿日: 2020/12/20(Sun) 16:32
投稿者tm
スクリプトモジュールを使っている状態で、下記を追加します。
_Command = {
test = *script %0%\test.js,"%*arg(1)"
}
test.js
//!*script
PPx.Echo(PPx.Arguments(0));

以上の状態で、ファイル名を指定して実行(H)から、
*test %%とすると、% が返り、
*test %*input()を実行した上で、%% とすると、%% が返ってきます。

これは意図的な動作でしょうか?


タイトルRe: 質問です
記事No3540
投稿日: 2020/12/21(Mon) 22:43
投稿者TORO
・マクロ文字は、コマンドが実行される前に基本的に一度だけ展開※
され、マクロ文字で展開した文字列を更に展開しません。

「*test %%」だと「*test %」に展開されます。
「*test %*input()」だと、%*input()で入力された文字「%%」が
展開されて「*test %%」になります。

・展開が終わったら、「*test」の中身を実行します。
こちらも「*script %0%\test.js,"%*arg(1)"」のマクロ文字が
展開された後、実行になります。

※マクロ文字内で再度マクロ文字の展開がされる場合、ヘルプ中に
マクロ文字を展開する、% のエスケープが必要、等と明記して
いますので、それで確認してください。

例) %g, *execute, %*extract


タイトルRe^2: 質問です
記事No3541
投稿日: 2020/12/22(Tue) 00:02
投稿者tm
詳細な説明ありがとうございます。そういう理由だったのですね。
展開の仕組みがよくわからず悩むことがあるのですが、一つのコマンド
につき一回展開と覚えておけば多少は理解が深まりそうです。


タイトルRe^3: 質問です
記事No3542
投稿日: 2020/12/26(Sat) 11:19
投稿者TORO
正規表現もそうですが、色々組み合わせると何やっているか
分からなくなってくるので、一旦変数入れてたりすると、
分かりやすく整理できると思います。