正規表現に関しての質問No.03748
チョッパー さん 99/07/23 11:41
 
Chopperと申します。

私はアセンブリ言語として68Kを使っています。
そして、68Kでは、データレジスタがD0〜D7(小文字も可)の8個、
アドレスレジスタがA0〜A7(小文字も可)の8個です。

私にとっては、レジスタが強調された方がプログラムが見やすい、
ミスタッチが防げる、ということで、正規表現で検索文字列を
[ADad][0-7]
とし、さらに単語検索にして強調しているのですが、16進数でも
強調される場合があります。

D0   強調される
D078 強調されない
78D0 D0の部分だけ強調される
7D08 強調されない
D0D0 右側のD0だけ強調される

という状況です。

なお、68Kでは、16進数の数値であるということを表すために
数値の頭に"$"を付けます。

私の理想は

D0    強調される
$D0   強調されない
$D078 強調されない
$78D0 強調されない
$7D08 強調されない
$D0D0 強調されない

なのですが、何か上手い方法はありませんか?

 # 私が解らないだけで、きっと上手い方法が
 # あるんだろうなぁ・・・

よろしくお願いします。

[ ]
RE:03748 正規表現に関しての質問No.03749
KITA さん 99/07/23 14:29
 
ソースファイルのコード部分って条件なら、前後も判定してやったら?

[^a-zA-Z0-9$][A-Da-d][0-7][^a-zA-Z0-9$]
前後に日本語とかあると強調しちゃうけど・・・

[ ,\t][A-Da-d][0-7][ ,\t]
ソースの条件だけ考えてレジスタの前後には空白かカンマしか
無いなーんて決め付けちゃってしまうとか (^^;

[ ]
RE:03749 正規表現に関しての質問No.03750
チョッパー さん 99/07/23 15:04
 
Chopperです。

>ソースファイルのコード部分って条件なら、前後も判定してやったら?

やっぱり、そういう方法になりますよね。

引用の順序が逆になりますが、
>[ ,\t][A-Da-d][0-7][ ,\t]
>ソースの条件だけ考えてレジスタの前後には空白かカンマしか
>無いなーんて決め付けちゃってしまうとか (^^;

こういう手も使ってみようと思った(実際にはやっていない)のですが、
この場合、カンマも強調されちゃうんですよね。
それがイヤで他にいい方法を探しているんですよ。
 # 最初に思い浮かんだときは喜んだんですけどね。

>[^a-zA-Z0-9$][A-Da-d][0-7][^a-zA-Z0-9$]
>前後に日本語とかあると強調しちゃうけど・・・

漢字(全角文字)のコードも含めちゃえば上手くいきそうですね。
やってみます。
ありがとうございました。

ところで、単語検索の「単語」とは、どういうものを指すのでしょうか?

[ ]
RE:03748 正規表現に関しての質問No.03751
きいろいまふらあ さん 99/07/23 15:46
 
きいろいまふらあです。

文字列の強調関係をあまりいじったことはないのですが、

>なのですが、何か上手い方法はありませんか?

正規表現に前後の空白or行頭or行末を
含めてしまうということはできませんかね?
^[ADad][0-7][  \t\n]
および
 [ADad][0-7][  \t\n]
を強調する設定にする、と。

だめかな?

まふ

[ ]
RE:03750 正規表現に関しての質問No.03753
KITA さん 99/07/23 17:24
 
>ところで、単語検索の「単語」とは、どういうものを指すのでしょうか?
単語検索に指定すれば後ろの判定は要らないです。

[ ]
RE:03748 正規表現に関しての質問No.03756
安久津 さん 99/07/23 18:16
 
こんにちは Chopper さん、安久津といいます。

>D0   強調される
>D078 強調されない
>78D0 D0の部分だけ強調される
>7D08 強調されない
>D0D0 右側のD0だけ強調される

// 途中省略

>私の理想は
>D0    強調される
>$D0   強調されない
>$D078 強調されない
>$78D0 強調されない
>$7D08 強調されない
>$D0D0 強調されない

強調表示指定文字列1
[ADad][0-7]

強調表示指定文字列2
($|[A-Za-z0-9])[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]*

「強調表示指定文字列2」を「強調表示指定文字列1」よりも、
優先度の高い強調表示( 行の強調でないもの )に設定します。
それで「強調表示指定文字列2」の色とスタイルを「普通」と
同じにします。

ではでは。
# ちょっと重いかな。

[ ]
RE:03750 正規表現に関しての質問No.03763
アルビレオ さん 99/07/23 21:15
 
アルビレオです

>この場合、カンマも強調されちゃうんですよね。

>>[^a-zA-Z0-9$][A-Da-d][0-7][^a-zA-Z0-9$]
>>前後に日本語とかあると強調しちゃうけど・・・
>
>漢字(全角文字)のコードも含めちゃえば上手くいきそうですね。

この場合もカンマは強調されてしまいます。
秀丸自体の仕様では、16進文字も強調されるほうを取るか
カンマが強調される方を取るかのどちらかしかできないと思います。

普通は後者の方がましですね。

それと強調表示に正規表現で書くとタブもヒットします。
ヘルプでも
『強調表示中では「\t」は使わないでください。』
と書かれています。

アドレス参照も考えると、
[ ,(][ADad][0-7]\)?
で単語の検索をONにしておくのが一番無難だと思います。

68kのアドレス参照は () でしたよね?
もう覚えてないです。

[ ]