私は現在友人と言語を作成しており、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>
か? - そうでない場合、誰かが私が必要なことをする方法を知っていますか?