• 「文法」狩り

以前紹介したコンソールで動くエディタであるMicrosoft Edit(以下Edit)がバージョンアップした(写真01)。きちんとしたインストールパッケージになってWinget経由でも入手できるようになったのも大きな変更点だが、文法ハイライトに対応したというのも大きな改良点だ。

  • 写真01: 独自の文法ハイライト機能を搭載したMicrosoft Edit Ver.2.0

    写真01: 独自の文法ハイライト機能を搭載したMicrosoft Edit Ver.2.0

まずは、インストールだが、初期バージョンであるEdit Ver.1.xは、実行ファイルとpdbファイルをZIPファイルに入れたものが配布されていた。このため、インストール先フォルダは、人により異なる。コマンドライン内で実行できるように通常はPATH環境変数に実行ファイルのあるフォルダが登録されているはずだ。現在、Ver.1.xを「edit」だけで起動できるなら、where.exeコマンドでインストール先を調べられる。

今回配布されているEditは、パッケージ化されているものの、前のバージョンがZIPファイルインストールなので、アップグレードができない。Editの前バージョンを使っていた場合には、実行ファイルを直接削除し、環境変数の設定(設定 ⇒ システム ⇒ バージョン情報 ⇒ システムの詳細設定 ⇒ 環境変数ボタン)で、ユーザーまたはシステム環境変数にあるPath中のEdit.exeを含むフォルダを削除する。パスの登録さえ削除すれば実行ファイルはそのまま残っていてもよい。老婆心ながら申し上げると、Edit.exeがWindows既定の実行ファイルディレクトリ「C:\Windows」または、「C:\Windows\System32」にある場合には、Path環境変数に該当ディレクトリが登録されていても削除してはならない。

Edit Ver.1.xのパス登録を削除したら、Edit Ver.2をインストールする。それには、以下のWingetコマンドを使う。


winget install microsoft.edit

文法ハイライトとは、簡単にいうと、言語に対応して、キーワードや文字列、数値、変数や関数などを「色分け」することだ。色分けにより、たとえば、制御構文が見やすくなる、あるいはコードを読むときに注釈や文字列部分を簡単に区別できるといったメリットがある。

すでに、文法ハイライトを行うためのライブラリなどが独立したプロジェクトとして、いくつも開発されており、これらを利用することで、Webページやエディタ、テキストビューアーなどに文法ハイライト機能を付加することが可能だ。

しかし、Microsoft Editは、ここであえて、文法ハイライト機能を独自にフルスクラッチで作るという選択を行った。作成された言語ハイライト機能は「LSH(Lightweight Syntax Highlighter)」という。LSH独自の定義ファイルを専用コンパイラでバイトコードに変換して実行するものだ。バイトコードインタプリタさえ移植できれば、他の言語でも利用ができる(はずである)。ただし、ゼロから作ったものなので、いまのところ対応言語は限定的である。前記のGitHubリポジトリに定義ファイル(~.lsh)があるが、そのファイル名から対応言語がわかる。

LSHの定義ファイルは、拡張子から言語を特定し、言語用に定義されたプログラムを実行していく。これは、行を左から右(先頭から末尾へ)見ていく。このとき正規表現でパターンを検出して、パターンの表示色を指定する。複数行にまたがる要素(たとえばブロック注釈)の指定や、変数を使った状態記憶などが可能。正規表現で検出したパターンに対して色を付けていくものであって、文法を解釈しているわけではない。

今回のタイトルネタは、山田正紀の「神狩り」(早川書房他)である。初出は、SFマガジン(1974年)である。本作品には人には理解できない文法を持つ言語が登場する。この点をもって、言語SFといえなくもないが、ガジェットあるいはマクガフィン的な扱いで筆者的には、言語SFとは言い難い。とはいえ、筆者は、この本でウィトゲンシュタインを知った。