はじめに Visual Studio CodeやAtomに言語のシンタックスハイライトを加えるにはtextmateというエディターが採用している記法で構文を定義します。 なぜtextmateの方法が採用されているのかは知らないのですが,どういうわけか広く利用されているようです。 構文を定義する textmate的構文定義は .tmLanguage .json .plist など様々な方法で記述できるようです。 個人的にはJSON版が扱いやすそうです。 英語ですが公式のドキュメントがあるので,重要そうな部分だけを説明します。 概要 構文は再帰的に定義できます。 あるブロックを認識してそのブロックは3つの構文に分解され最初の構文は別の構文によって処理される...のように記述できます。 定数を数値定数と文字列定数に分けるなど,できるだけ細かい単位で構文を作っておくと include機能を使って使
![Visual Studio CodeやAtomのシンタックスハイライト拡張機能を作る - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/ca62f65fc44b126cc61d57c55c8266c890012de5/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9VmlzdWFsJTIwU3R1ZGlvJTIwQ29kZSVFMyU4MiU4NEF0b20lRTMlODElQUUlRTMlODIlQjclRTMlODMlQjMlRTMlODIlQkYlRTMlODMlODMlRTMlODIlQUYlRTMlODIlQjklRTMlODMlOEYlRTMlODIlQTQlRTMlODMlQTklRTMlODIlQTQlRTMlODMlODglRTYlOEIlQTElRTUlQkMlQjUlRTYlQTklOUYlRTglODMlQkQlRTMlODIlOTIlRTQlQkQlOUMlRTMlODIlOEImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWE3NTAwYWU3YzZlMDZmZmI0ZTJiZDFmOGZlMWU2ZDZl%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbWF4ZmllMWQmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTNhOGYzNDJkNGFkMTU5MjUyYWU1NmE3M2E0NWFjOGZi%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D756e8a91b8f67ad93aad616c298912e0)