お知らせ掲示板 | 質問掲示板 | 不具合報告掲示板 | 機能要望掲示板 | 雑談掲示板

  新規投稿 ┃全記事一覧 ┃検索 ┃設定 ┃サポートフォーラムトップ  
95 / 401 ツリー ←次へ | 前へ→

\命令()()の形 ご質問 2016/12/18(日) 12:47
Re:\命令()()の形 ぽてと 2016/12/20(火) 21:02
Re:\命令()()の形 ご質問 2016/12/28(水) 11:18
Re:\命令()()の形 ぽてと 2017/1/6(金) 0:50

\命令()()の形
 ご質問  - 2016/12/18(日) 12:47 -
  
今勉強させて頂いております。

それで質問なのですが、

\_strlen($TX)(@TX.RUBY.AnalyzeLen)

みたいに\命令()()となっているもので、二つ目の括弧はどう言う処理なのでしょうか

また$_MB〜$_MB10と言うのはどう言うパラメータなのでしょうか。
引用なし
パスワード

Re:\命令()()の形
 ぽてと  - 2016/12/20(火) 21:02 -
  
ぽてとです。


$_MBの説明については、開発履歴に書いてありますので、多少参考になるかもしれません。


開発履歴から抜粋
■2012/02/18 ver0.472/0.04
・\マクロの記述形式で、新たに \マクロ名(パラメータ,パラメータ2,…)(パラメータB,パラメータB2,…) という書き方が可能になった。

※他にも書いてありますが長くなるので抜粋しました。


■以下は推測による解説
作者ではないので詳細な挙動は分かりませんが、私の推測による認識で説明させていただきます。推測であり間違っている可能性がありますので参考程度でお願いします。


$_Mは第1パラメータ群(〜20)です。
$_MBは第2パラメータ群(〜20)です。

Yu-risから見た$_Mと$_MBの違いは()()による1番目の括弧か2番目の括弧かの記述位置の違いを区別する違いでしかないと考えてます。


ERISでの使用方法では下記のように記述しています。
macro[name=CG.EXIST name2=cg.exist str="GOSUB[#=es._cg.exist PSTR=$_M];$_MB" def="''" sufb="=@_RINT(1);"]

ERISでの使用方法で第2パラメータ群を戻り値として使用を制限することでマクロの引数と戻り値の記述を簡易化する事に成功しています。


ERISでは下記のようにマクロを記述する事が出来るようにしています。
\マクロ名(引数1〜20)(戻り値1〜20)

今回の場合、実態の記述としては下記のように記述が可能となっています。
\CG.EXIST(CGファイル名)(@r)
※@r は戻り値を格納する変数です。


$_MBを端的に説明すると$_Mだけでは足りない人向けのマクロ専用拡張システム変数です。
これをERISでは戻り値専用に使用しているという事です。
※戻り値以外で使用している場所は見つかっていないのでそう考えています。


■補足
$_MBとSUFBを使用しない場合のERISマクロの記述を書くと下記のようになります。
\CG.EXIST(CGファイル名);INT[@r=@_RINT(1)]



INT[@r]
\CG.EXIST(CGファイル名)
@r=@_RINT(1)


■最後に
内容については私の推測による回答ですので間違っている個所、過不足のある個所などが多分にあると思います。
その点についてはご容赦お願いします。


以上、お役に立てればと思います。
引用なし
パスワード

Re:\命令()()の形
 ご質問  - 2016/12/28(水) 11:18 -
  
ご説明ありがとうございます。
お返事が遅くなり大変申し訳ございません。

なんとなくは理解いたしました。
また開発履歴も確認いたしまして、漠然とは分かったのですが、

macro[name=CG.EXIST name2=cg.exist str="GOSUB[#=es._cg.exist PSTR=$_M];$_MB" def="''" sufb="=@_RINT(1);"]

このセミコロンの必然性がよくわかりませんでした。
セミコロンが行末の意味であり、またこれを入れないとエラーが発生するのは分かったのですが、なぜこれが必要なのかがわかりませんでした。
これに関する記述はマニュアルに何かございますでしょうか。
引用なし
パスワード

Re:\命令()()の形
 ぽてと  - 2017/1/6(金) 0:50 -
  
ぽてとです。

セミコロンについての必然性や説明については私が知る限りでは特段マニュアルにはないと思います。

Yu-ris側のマニュアルの「マクロ」項目や「MACRO」項目を読むと多少わかるかもしれません。


私の持論となりますが、下記観点から
・MACRO命令での一行で複数マクロの記述
・記述の統一性、視認性の観点から保守性の向上

セミコロンを使用してマクロの記述を\マクロ名に統一して使用していると思っています。


■持論の解説
行末でなければ、定義したマクロ名は下記のように記述する必要があります。
\[マクロ名]

行末の場合は下記となります。
\マクロ名

これらを併記した場合、\[マクロ名]はぱっと見た場合、Yu-ris命令なのかマクロ命令なのかが分かりにくいという問題があります。

行末の場合に[]を省略して記述できる理由はスクリプトを字句解析をしてマクロをYu-ris命令等に置換した場合にマクロの範囲がどこからどこまでという判定が行末でなければできないためです。

これを行中で行末であることを記述する場合にセミコロンを利用しています。
行末区切り文字にセミコロンを採用している理由は恐らくC/C++言語に合わせていると思います。

また、Yu-ris命令は命令中での改行は不可能だと思っています。
私の知る限り継続行区切り文字が存在しないため、MACRO命令中に複数のマクロを記述するためにもセミコロンによる区切り文字が必要ではないかと思います。
引用なし
パスワード

  新規投稿 ┃全記事一覧 ┃検索 ┃設定 ┃サポートフォーラムトップ  
95 / 401 ツリー ←次へ | 前へ→
59,455
(SS)C-BOARD v3.8.1β4 is Free.