奇妙な字句構文
- 今月、42個のプログラミング言語を学んで、llamafile 向けの新しいシンタックスハイライターを作成した。ハロウィーンに合わせて、最も驚くべき構文を共有したい。
- サポートする言語は Ada、Assembly、BASIC、C、C#、C++、COBOL、CSS、D、FORTH、FORTRAN、Go、Haskell、HTML、Java、JavaScript、Julia、JSON、Kotlin、ld、LISP、Lua、m4、Make、Markdown、MATLAB、Pascal、Perl、PHP、Python、R、Ruby、Rust、Scala、Shell、SQL、Swift、Tcl、TeX、TXT、TypeScript、Zig。
シンタックスハイライターのコーディング方法
- シンタックスハイライターの実装は難しくない。C++ と GNU gperf が便利なツールである。
- gperf は完全ハッシュテーブルを生成し、性能を最大化できる。
- 基本的なシンタックスハイライターは有限状態機械で実装でき、文字列、コメント、キーワードに重点を置く。
デモ
- llamafile の新しいシンタックスハイライターは、ollama より強力な利点を持っている。
- Windows 10 上で Meta LLaMA 3.2 3B Instruct モデルを使い、さまざまなプログラミング言語でコードを生成するデモを提供している。
驚くべき字句構文の例
- C: C 言語は単純だと主張されるが、トライグラフのような複雑な要素がある。
- Haskell: ネストしたコメントを許可する。
- Tcl: 識別子に引用符を含めることができる。
- JavaScript: 正規表現構文があり、UNICODE 文字を改行文字として使う。
- Shell: heredoc 構文をさまざまな方法で使える。
- String Interpolation: Kotlin、Scala、TypeScript は文字列内へのコード挿入を許可する。
- Swift: 文字列を複数の # で囲める。
- C#: 複数の引用符を使って文字列を囲める。
- FORTH: すべてを空白区切りでトークン化する。
- FORTRAN と COBOL: llamafile はこれらの言語のシンタックスハイライトをサポートする。
- Zig: 複数行文字列を 2 つのバックスラッシュで開始する。
- Lua: 複数行文字列に角括弧とイコールを使う。
- Assembly: 多様な方言があり、シンタックスハイライトが難しい。
- Ada: シングルクォートをさまざまな用途で使う。
- BASIC: 文字列の末尾に引用符が不要である。
- Perl: 正規表現構文が独特である。
- Ruby: 構文が複雑で理解しにくい。
サポート言語の複雑さ
- FORTH が最も単純で、Ruby が最も複雑な言語である。
- 各言語のシンタックスハイライト用コードの行数で複雑さを評価している。
GN⁺ のまとめ
- この記事は、さまざまなプログラミング言語の独特な構文を探り、シンタックスハイライターの実装に必要な洞察を提供する。
- llamafile のシンタックスハイライターは多様な言語をサポートし、特に古い言語の保守に役立つ可能性がある。
- プログラミング言語の構文の複雑さを理解する助けになり、シンタックスハイライター開発に関心のある人にとって有益だろう。
- 類似機能を持つプロジェクトとしては Pygments と Emacs がある。
1件のコメント
Hacker Newsの意見
||論理演算子を使った短絡評価の規則の説明