対応言語

これは big-code-analysis がパースするプログラミング言語の一覧です。以下の各エントリは(src/langs.rsmk_langs! 呼び出しで定義される)実際の LANG バリアントであり、言語ごとの Cargo フィーチャ に記載された、対応する言語別 Cargo フィーチャの背後にゲートされています。

  • Bash
  • C
  • C/C++
  • C#
  • Elixir
  • Go
  • Groovy
  • Irules
  • Java
  • JavaScript
  • Kotlin
  • Lua
  • Mozcpp
  • Mozjs
  • Objective-C
  • Perl
  • Php
  • Python
  • Ruby
  • Rust
  • Tcl
  • Tsx
  • Typescript

一部のエントリは、共有の文法パイプラインのバリアントです。JavaScript(アップストリームの tree-sitter-javascript 文法)は .js.mjs.cjs.jsx ファイルのデフォルトです。Mozjs は Mozilla / SpiderMonkey フォークで、現在はオプトインです — .jsm(Firefox モジュール)拡張子のみを所有し、正規のスラッグ mozjs を報告します。両者は通常の JavaScript に対してメトリクス的に等価です。Tsx は JSX 構文を有効にした Typescript であり、別個のスラッグ tsx を報告します。#721 以降、C には独自のバリアント C(スラッグ c、アップストリームの tree-sitter-c)があり、.c と emacs モード c を所有します。C/C++ バリアント(スラッグ cpp、#720 以降はアップストリームの tree-sitter-cpp)は .cpp / .cc / .h とその他を引き続き受け持ちます。.h は意図的に Cpp のままです。C++ ヘッダーを C 文法に通すと class / template で ERROR が連鎖するのに対し、C ヘッダーを C++ 文法に通しても C++ キーワードと同名の識別子でつまずくだけだからです。Mozilla/Gecko の C++ 方言はオプトインの Mozcpp バリアント(スラッグ mozcpp)で、ファイル拡張子を所有せず、名前でのみ選択されます — ちょうど MozjsJavaScript の関係と同じです(C# は csharp を報告します)。#724 以降、Objective-C(スラッグ objc、アップストリームの tree-sitter-objc)は .m と emacs モード objc / objective-c を所有します。Objective-C++(.mm)は Cpp のままです。.mm ファイルには Objective-C と C++ が混在しており、tree-sitter-objc 文法は C++ 側(テンプレート、名前空間、::)をパースできないため、Objective-C の接合部分でしかつまずかない C++ 文法のほうが、この場合はより穏やかに劣化します — .h と同じトレードオフです。したがって .mm ファイルの Objective-C 部分のメトリクスは近似値です。各バリアントのスラッグはその LANG::name であり、小文字かつ句読点を含まないため、FromStr を通じてラウンドトリップできます。

内部ヘルパーバリアント

以下の LANG バリアントはユーザー向けの言語ではありません — C ファミリー分析パイプラインの内部ヘルパーであり(すべての C ファミリー Cargo フィーチャ cppcmozcpp に同梱されます)、ソースファイルの分析時に直接選択されることはありません:

  • Ccomment — C/C++ のコメントに特化しています。
  • Preproc — C/C++ のプリプロセッサマクロに特化しています。

注: #720 以降、Mozilla/Gecko の C++ 方言は Mozcpp LANG バリアントとして公開されています(ベンダリングされた bca-tree-sitter-mozcpp クレートに支えられ、オプトインの mozcpp フィーチャで取り込まれます)。ファイル拡張子を所有しない、名前で選択可能な完全に公開の言語であり、上記の Ccomment / Preproc ヘルパーとは異なり、内部用では 「ありません」 。