Skip to content

Instantly share code, notes, and snippets.

@athos
Last active August 29, 2015 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save athos/6bd392d3833b0ce9eccf to your computer and use it in GitHub Desktop.
Save athos/6bd392d3833b0ce9eccf to your computer and use it in GitHub Desktop.

genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター

シンタックスハイライトは、キーワードを強調表示し、ソースコードの可読性を高めるためのものであり、今や多くのテキストエディタやコードビューアが標準で備える基本的機能である。シンタックスハイライターは、シンタックスハイライトをするモジュールであり、一般的には簡易的な字句解析により実現される。

しかし、多くの動的言語のシンタックスハイライターは、そのような簡易的な実現手段では不十分である。動的言語では、ひとつのフォームが他のコードの意味に影響を及ぼしうる。そのため、より正確なシンタックスハイライトをするには字句解析や構文解析だけでなく、プログラムの意味を解析する必要がある。

Lisp系言語におけるマクロも、Lispコードのシンタックスハイライトを困難にするひとつの要因である。マクロを使えばユーザが独自に構文を定義できるため、一般のLispコードでは字面上のどのシンボルがローカルな束縛を表しているのかを識別することすら難しい。

本発表では、この課題を解決するために開発中の、マクロを認識するClojure向けのシンタックスハイライターであるgenuine-highlighterと、その基盤ととなっている解析器symbol-analyzerの仕組みについて述べる。また、genuine-highlighterをビルドツールLeiningenから使用できるようにするプラグインについてもデモにより紹介する。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment