perlヒアドキュメントの不具合No.06269
tarox さん 05/03/02 13:34
 
秀丸ver.5.00β1の試用で、perlのヒアドキュメントに関しまして、
問題点を指摘させていただきます。
たとえば、

print <<"aaa" if $OK;
ああああ
いいいい
aaaa

としますと、

if $OK;

の部分までヒアドキュメントと判定してしまいます。
あくまで、次の行からがヒアドキュメントですので、

ああああ
いいいい

だけをヒアドキュメントと判定すべきです。

あと、現状カラー設定はScriptをそのまま利用しているようですが、
少なくとも、カラー一覧のところに

Script/ヒアドキュメント

などとしない限り、どこをいじれば変更できるかが、わからないと思います。

[ ]
RE:06269 perlヒアドキュメントの不具合No.06282
tarox さん 05/03/02 16:02
 
>秀丸ver.5.00β1の試用で、perlのヒアドキュメントに関しまして、
>問題点を指摘させていただきます。
>たとえば、
>
>print <<"aaa" if $OK;
>ああああ
>いいいい
>aaaa
>
>としますと、
>
>if $OK;
>
>の部分までヒアドキュメントと判定してしまいます。
>あくまで、次の行からがヒアドキュメントですので、
>
>ああああ
>いいいい
>
>だけをヒアドキュメントと判定すべきです。

後から気がついたのですが、これは上で書いたように単純に次の行から、ではありま
せんでした。

たとえば、後置のif(やらunlessやらandやらの)文を(その前や中で)改行した場
合、というのも考える必要があります。

たとえば、

print <<"aaa"
 if ($OK or $OK2 or $OK3) and
    ($NG_SKIP or $NG_SKIP2);
あああ
いいい
aaa

というようなものです。

ですから、文の終わりの';'を判定して、その次からがヒアドキュメント、という判
定が必要になります。

一見、簡単そうですが、実は厄介な問題を含んでます。
たとえば、以下のようにif文内で文字定数や正規表現内で';'が使われると、判定が
とたんに難しくなります。

print <<"aaa"
 if ($OK or $OK2 or $OK3 or $PARAMETER eq 'OK;1') and
    ($NG_SKIP or $NG_SKIP2) ;
あああ
いいい
aaa

この辺は、Perlコメント同様、あるところまでで妥協する必要がありそうですが、
どの辺までフォローすべきかは、意見を集めてみないとわからないですね。

私自身は、最低文字定数('', "", ``)だけは判定してやって、
あとは文字定数以外で';'がある行を見つけたら、
その次の行からヒアドキュメント、
くらいの妥協点がいいかと思います。


[ ]
RE:06282 perlヒアドキュメントの不具合No.06302
秀丸担当 さん 05/03/02 18:37
 

>私自身は、最低文字定数('', "", ``)だけは判定してやって、
>あとは文字定数以外で';'がある行を見つけたら、
>その次の行からヒアドキュメント、
>くらいの妥協点がいいかと思います。

秀丸エディタの会議室でも話題になっていましたが、perlの文法は非常に複雑で
す。
もともと、文字定数の判断やコメントの判断も完全にはできていません。
なので、妥協を前提として、できないよりかはできたほうがいいと考えていただ
けたら幸いです。

秀丸エディタの会議室で要望がありましたが、これに加えて、文字定数の判断の
有効/無効、コメントの有効/無効のチェックボックスを付けようかと検討してい
ます。
もし問題がある場合は無効にするといった使い方です。

カラー設定については、ヒアドキュメントと書くと長くなってしまうので、ヘル
プを見ていただければいいと思います。言い訳ですが、スクリプトという言葉も
英語的にはニュアンスが近いのでは。

[ ]
RE:06302 perlヒアドキュメントの不具合No.06338
tarox さん 05/03/03 16:08
 
>なので、妥協を前提として、できないよりかはできたほうがいいと考えていただ
>けたら幸いです。

perlに関しては、この姿勢が必要ですね。

>カラー設定については、ヒアドキュメントと書くと長くなってしまうので、ヘル
>プを見ていただければいいと思います。言い訳ですが、スクリプトという言葉も
>英語的にはニュアンスが近いのでは。

とはいっても、perl自体がスクリプトなんで、かなり意味不明だと思います。
そもそも本来は、別扱いにしたほうがすっきりしますね。
なぜなら、perlのヒアドキュメントのHTML内のJavaScript、なんてのも考えられるか
らです。

この辺は、強調の数を増やす件とともに、要望としておきます。

[ ]