▼ 2015/1/6 (火) 02:17:19 もか | |
[2231] Re7: ダブルクォーテーション文字列の判定が変 |
>コードを読まないと何やってんのかわからないのでは、
>読む側は時間がかかるばっかりで嫌になっちゃうよ。
どちらかというと変な日本語読んで混乱しているより、
さくっとコード差分みるのが早いとおもうんだけど、違うかな。
特にこのパッチは簡単な部類の処理なのでC++アレルギーとかCOBOLしかわからんとかでなければ。
最近はかなりの量をコミットしてるので、全部見るのは相当しんどいと思うけど。
>正規表現とか擬似コードに頼らずに日本語で書いて欲しいな。
それBNFで定義してるHTML5とかRFCとかディスってるの?
俺に日本語期待しても無駄だぞ。
>\b(u8|u|U|L|)R"[^(]*\(
>^|[!"#$%&'()=@{};:<>?,.*/\-\+\[\]\\s]
挑戦してみた。
!"#$%&'()=@{};:<>?,.*/-+[] 半角スペース および タブ文字 のいずれかの文字
または 行頭だった場合 かつ、
それに「u8R"」「uR"」「ULR"」「LR"」「R"」のいずれかの文字列が続きかつ、
その後ろに0文字以上「(」以外の任意の文字列が続きかつ、
さらにその後ろで改行までに「(」が現れた場合に、
Raw String とみなします。
いままでは、
「R"」の後で0文字以上の任意の文字列の後に、「(」が現れた場合に、
Raw String とみなしていました。
>(サクラエディタのコードはうんこなんだから、できるだけヒントは欲しい。今北産業で。)
(否定はしないが)汚い言葉を書く以上は、ぜひSuzzさんのウルトラスーパーすばらしいコードをですね、
と思いちょっと#if 0のコードを読ませてもらいました。よければポートしたいですし。
「#if 0」「#if 1」でタブだった場合とか2文字以上スペースがある場合は考慮されてない。
#とif, else, endifの間にスペースがある場合は考慮しなくていいのかな。
wmemicmpになってるけど、「#IF 0」とかも認識しちゃうけどいいのかな(プリプロセッサの仕様は詳しく知らない)。
あとはもし、完璧を目指すなら、文字列中のコメントらしい文字は文字列になるはずなので、その考慮が必要かも。
一か所 $endifになってる。
CColor_Comment_Cpp_If1::Match_CommentTo とかのwmemicmpがバッファオーバーランしてるところがある
ちゃんと見てないけど、colorStrategyStateの取り回しは良さそう。
実行は試していない15分斜め読みクオリティーなので、間違ってる所あるかも。
ちなみに「#if 0」をコメント開始「#e」をコメント終了にしてしのいでます。
|
|