SuperAPI AI 工具集

tree-sitter-language-pack-detecting-languages

编程与开发

查看项目

更新于 10-16 07:18

技能介绍

用途:判断某个文件或代码片段属于哪种编程语言,是 tree-sitter-language-pack 在解析或提取前的语言确认环节。该包把文件映射到 372 种受支持语言之一,检测可基于文件路径、裸扩展名,或通过 SDK 基于文件内容本身。

CLI 隐式检测:没有独立的 ts-pack detect 命令,parse 和 process 会根据文件扩展名自动检测语言并执行,例如 ts-pack parse src/app.ts 会检测为 typescript 并解析,ts-pack process app.py 会检测为 python 并提取。当检测失败(无扩展名、有歧义或来自 stdin)时,需显式传入 --language,例如 cat snippet | ts-pack parse - --language go。

查看支持情况:用 list 和 info 在不解析的前提下确认语言名是否受支持及是否已缓存,例如 ts-pack list --filter type(名称含 type 的语言)、ts-pack list --manifest(远程清单中的全部语言)、ts-pack info typescript(是否已知、是否已下载、缓存路径)。

SDK 显式检测:核心暴露三个检测函数,其中基于内容的检测是 CLI 未提供的。detect_language_from_path(path) 从完整路径(用扩展名)检测;detect_language_from_extension(ext) 从裸扩展名如 "rs" 检测;detect_language_from_content(content) 从原始源码文本检测,无需路径。每个函数返回语言名,无匹配语法时返回 null/None。Python 用法为 from tree_sitter_language_pack import detect_language_from_path, detect_language_from_extension, detect_language_from_content;Node.js / TypeScript 用法为 import { detectLanguageFromPath, detectLanguageFromContent } from "@xberg-io/tree-sitter-language-pack"。

CLI 与 SDK 的选择:只需路径或扩展名且为一次性操作,直接用 ts-pack parse/process 自动检测即可;只有原始内容(粘贴的片段、流、无扩展名文件)时,用 SDK 的 detect_language_from_content 检测,再按需把结果作为 --language 传给 CLI。

后续衔接:语言确定后可交给解析源码(语法树)或提取代码结构(元数据)的相关技能;如需查看或预取某语言的解析器,参见管理解析器相关技能。

限制:CLI 无独立检测命令;无扩展名、有歧义的输入或 stdin 需手动指定语言;SDK 的路径、扩展名与内容检测在无匹配语法时返回空值。