ファイルタイプ別の設定の文字列の認識No.19343
秀○ さん 05/05/18 16:43
 
 例えば、C言語/Javaモードで
(実際は Unix シェルモードですが)
文字列の色を変更するように設定したとします。

aaa = " a b c \" d e f ";

というような場合はちゃんと
[ a b c \" d e f ] の部分だけが
文字列の色になります。これはOK。

正規表現などでは、
"" 内で \" を使うのではなく
// 内で \" を使う場合があります。
下のような場合です。
# Cには gsub はないかもしれませんが
# 例は Unix の awk コマンドです。

gsub(/\"/,"abc",\$i);

この場合、 [/,] がまず文字列の色になり、
さらに [,\$i);] も文字列の色になってしまいます。

[abc] だけを文字列の色にする方法はないでしょうか?

[ ]
RE:19343 ファイルタイプ別の設定の文字列No.19344
秀丸担当 さん 05/05/18 17:26
 

>正規表現などでは、
>"" 内で \" を使うのではなく
>// 内で \" を使う場合があります。

UNIXシェルスクリプトの文法を完全に把握していないのでわかりませんが、認識
するためのルールがわかれば対応できると思います。
解析が複雑になる場合は困難かもしれません。

""の外であっても\"をエスケープするように修正すれば問題ないでしょうか。
\"という二文字が続いていても文字列の開始となりうる場合があるのであればさ
らなる解析が必要になってきます。

perlと似ているような感じですが、perlでも同様の問題があるようです。
perlでも同じ手法で回避できるでしょうか。
perlの文法解析は複雑で、完全には解析できておらず、妥協している点がありま
す。

[ ]
RE:19344 ファイルタイプ別の設定の文字列No.19345
秀○ さん 05/05/18 18:35
 
> ""の外であっても\"をエスケープするように

>\"という二文字が続いていても文字列の開始と
>なりうる場合があるのであればさらなる解析が必要になってきます。

私の理想としては、
\" の場合は、文字列の開始や終了としては
認識させないようにできれば一番良いのですが・・・

何か、良い方法はないでしょうか?

[ ]
RE:19345 ファイルタイプ別の設定の文字列No.19348
秀丸担当 さん 05/05/19 11:38
 

>私の理想としては、
>\" の場合は、文字列の開始や終了としては
>認識させないようにできれば一番良いのですが・・・
>
>何か、良い方法はないでしょうか?

とりあえず、V5.00βのほうで""の外であっても\"をエスケープするようにして
みようと思います。
少し調べてみたのですが、おそらく問題が無いように思います。

[ ]