Pascal関係でもう一つNo.08184
いいじま さん 14/01/30 22:22
 
いいじまです。

Pascal関係でもうひとつ要望があります。

C系の言語では ';' は文の終わりですが、Pascalでは文の区切りです。
ですので、Cでは

int min(int a, int b)
{
    if (a<b) {return a;}
    else     {return b;}
}

の2つの ';' はどちらも「あるのが正しい」ものです。

ところが、Pascalで

function min(a,b:integer):integer;
begin
    if a<b then min:=a;
           else min:=b;
end;

と書くと、then節の';'は「あってはならないもの」、else節の
';'は「あってもいいいけど、なくてもいいもの」です。
then節の';'は、「そこでif節は終わり、else節はない」の
意味になりますので、特に入れ子のif-then-elseでは問題です。

#師匠曰く、必ず begin〜end で囲めば間違いはないとw

というわけで、「;[\s\n]*else」を警告表示できないでしょうか。
よろしくお願いします。

[ ]
RE:08184 Pascal関係でもう一つNo.08187
秀丸担当 さん 14/01/31 08:39
 
エラーになるような書き方を強調表示ができたらいいということかと思いますが、複
数にまたがる条件だと強調表示させることは難しいです。
「複数行コメント」のユーザー定義でもこれを定義することは難しいと思います。

V8.40β2で追加した検索機能で、すべての候補を色付け(強調表示ではなくカラー
マーカー)がありますが、これを使って「;[\s\n]*else」を色付けすることを一定の
タイミングか任意のタイミングで実行して、その部分に色を付けることは可能だと思
います。
マクロに関することは現時点であまり整備されていなくて、マクロの整備もV8.40β
の期間中に検討していきます。

[ ]