サブルーチンの呼び出しネスト回数の緩和No.01257
ockeghem さん 17/06/23 23:06
 
秀丸を随分長く使っていますが、秀丸マクロについては最近使い始めたものです。
秀丸マクロそのものを使うのではなく、TypeScript風の言語から秀丸マクロのスクリ
プトを生成するプログラムを作っています。このプログラム(コンパイラ)自身もTy
peScript風の言語(TypeScriptのサブセット)として書かれていまして、最近自分自
身をコンパイルできるようになりました。
しかし、「callされたサブルーチンからさらにサブルーチンを呼ぶこともできます。
最高20回程度重複可能です。」という制限にひっかかってしまい、関数呼び出しの三
重にネストした程度の式でエラーになってしまいます。

他ではあまりニーズはないことと思うので恐縮ではあるのですが、この 20回という
制限を緩和してはいただけないでしょうか?

コンパイラは、自分自身をコンパイルして動かせるようになった段階でオープンソー
スとして公開したいと希望しております。

以上、よろしくお願いいたします。

[ ]
RE:01257 サブルーチンの呼び出しネスト回No.01258
秀丸担当 さん 17/06/26 09:30
 

サブルーチンのネストの上限は確かに20回の制限があります。
無制限にするとしたらプロセスをまたぐなどの都合があって面倒になるのですが、
単純に上限の数を増やすだけであれば簡単な修正でできると思います。

別言語からマクロを生成するというのはすごいですね。
三重ネストで20回消費するようなマクロが生成されるということだとしたら、
約7倍(140回)以上あればいいでしょうか。
それでよければ140回か、きりのいいところで200回くらいにしてみようかと思い
ます。

[ ]
RE:01258 サブルーチンの呼び出しネスト回No.01259
ockeghem さん 17/06/26 10:03
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>ます。

ありがとうございます。まずは200回あればなんとかなるとは思います。ネストの回
数制限は多ければ多いほどありがたいですが、無理のない範囲で対応お願いできれば
と思います。ぜひよろしくお願い致します。

[ ]
RE:01259 サブルーチンの呼び出しネスト回No.01264
ockeghem さん 17/07/11 21:38
 
>ありがとうございます。まずは200回あればなんとかなるとは思います。

すみません。β版でさっそく実装してくださっていたことを見落としていました。
今日気づいて試したのですが、サブルーチンのネストは20回のままのように見えます。
下記のサンプルで試しました。


func:
  insert str(##1) + "\n";
  call func ##1 + 1;
  return #n;

call func 0;

上記ですと、20まで表示して、「callのネストが深すぎます」とエラーになります。
ご確認のほど、よろしくお願いします。

[ ]
RE:01264 サブルーチンの呼び出しネスト回No.01265
秀丸担当 さん 17/07/12 16:50
 

ご確認ありがとうございます。
その通りでした。
手元では修正していたものが、公開されているバージョンには反映されていませ
んでした。
次のβ版では修正させていただきます。

[ ]
RE:01265 サブルーチンの呼び出しネスト回No.01266
ockeghem さん 17/07/12 22:23
 
>手元では修正していたものが、公開されているバージョンには反映されていません
>でした。
>次のβ版では修正させていただきます。

確認ありがとうございます。よろしくお願いいたします。

[ ]
RE:01266 サブルーチンの呼び出しネスト回No.01267
秀丸担当 さん 17/07/20 17:00
 

サブルーチンのネストのネストの修正について、タイミング的に正式となってし
まいましたが、V8.73の正式版で修正しています。

[ ]
RE:01267 サブルーチンの呼び出しネスト回No.01268
ockeghem さん 17/08/12 19:33
 
>
>サブルーチンのネストのネストの修正について、タイミング的に正式となってし
>まいましたが、V8.73の正式版で修正しています。

今回の件、本当にありがとうございました。おかけで、「秀スクリプト」の感性にこ
ぎつけました。ブログ記事を書きましたので、よろしければ、ご笑覧ください。

http://blog.tokumaru.org/2017/08/hidescript.html

[ ]