Saya sedang mengerjakan penyorotan sintaksis untuk bahasa pemrograman yang tidak didukung oleh Visual Studio Code. Penyorotannya berfungsi dengan baik, tetapi saya menghadapi masalah saat menyorot potongan kode berikut:
pool[] Test1 t1;
pool[1] Test2 t2;
pool[10] Test3 t3;
Saya menyorot kata "pool" menggunakan:
"storages": {
"patterns": [{
"name": "storage.type.ceu",
"match": "\\bpool\\b"
}]
},
dan itu berhasil, tapi saya ingin menyorot kata Test1, Test2 dan Test3 juga.
Satu-satunya ide saya adalah menggunakan pandangan negatif ke belakang, seperti ini:
(?<=pool\[\d*\]\s+)([A-Z])\w+
Saya membuat tautan online dengan ide ini: https://regexr.com/4793u
Namun oniguruma (regex yang digunakan oleh TextMate - dan juga Ruby) tidak mengizinkan penggunaan pencarian. Dari doc:
(?=subexp) look-ahead
(?!subexp) negative look-ahead
(?<=subexp) look-behind
(?<!subexp) negative look-behind
Subexp of look-behind must be fixed-width.
But top-level alternatives can be of various lengths.
ex. (?<=a|bc) is OK. (?<=aaa(?:b|cd)) is not allowed.
In negative look-behind, capturing group isn't allowed,
but non-capturing group (?:) is allowed.
Adakah yang tahu alternatif lain untuk menyorot sintaks ini?