1

私は現在友人と言語を作成しており、jEdit で強調表示したいと考えています。その構文は実際には非常に単純です。関数は次のパターンにのみ一致します。 $function_name(arguments)

私たちのパーサーは現在、C スタイルのセミカラムのような終了タグなしで動作しており、この機能を維持したいと考えていることに注意してください。

jEdit モードを作成し、(ほぼ) でパターンをハイライトすることに成功しました<SPAN_REGEXP>。これが私がそれをした方法です:

<SPAN_REGEXP HASH_CAR="\$" TYPE="KEYWORD3" DELEGATE="ARGS">

<BEGIN>\$[A-Za_z0-9_]*\s*\(</BEGIN>

<END>)</END>

</SPAN_REGEXP>

しかし、それだけでは十分ではありません。

これが私が望むものです:

  • 関数スケルトン全体で同じ色:$func( )
  • inの特別な強調表示 (ARGSルール セット内で既に定義されている)%content1%$func(%content1%)
  • に続いていない括弧は強調表示されません$func
  • 次のような代替の複数行構文を承認します

$func

(

args

)

今のところ強調表示されていません。改行を受け入れるように正規表現を変更する必要があると思いまし<BEGIN>たが、jEdit は複数行の正規表現を強調表示に一致させることができないようですが、検索と置換では完全に一致させます。

回避策であるフラグ(?s)(?m)フラグを試しましたが、うまくいきません。[\d\D]*[\r\n]*

だから、ここに私の質問があります:

  • jEditモードで複数行の正規表現を一致させる方法を知っている人はいます<SPAN_REGEXP>か?
  • そうでない場合、誰かが私が必要なことをする方法を知っていますか?
4

1 に答える 1

1

ヘルプに記載されているように、SPAN_REGEXP は複数行の正規表現をサポートしていません。もちろん、複数行の正規表現を指定できますが、それらは個々の行に対してのみチェックされるため、一致することはありません。jEdit の Feature Request Tracker に Feature Request を投稿することもできますが、まだ投稿されていない場合でも構いません。

于 2012-03-01T21:25:36.393 に答える