67 lines
2.1 KiB
Bash
67 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
# 生成 Tree-sitter 解析器
|
|
echo "=== 生成 Tree-sitter 解析器 ==="
|
|
# tree-sitter generate || { echo "❌ tree-sitter generate 失败"; exit 1; }
|
|
|
|
# 要解析的根目录数组
|
|
ROOT_DIRS=(
|
|
# "/mnt/d/code/tinysoft/OfficeXml-dev/funcext/OfficeXml/autounit"
|
|
# "/mnt/d/code/tinysoft/OfficeXml-dev/funcext/OfficeXml/openxml"
|
|
# "/mnt/d/code/tinysoft/OfficeXml-dev/funcext/OfficeXml/utils"
|
|
# "/mnt/d/code/tinysoft/OfficeXml-dev/funcext/OfficeXml/docx"
|
|
# "/mnt/d/code/tinysoft/OfficeXml-dev/generator"
|
|
# "/mnt/d/code/tinysoft/tsoffice/"
|
|
# "/mnt/d/code/tinysoft/pdfconverter"
|
|
# "/mnt/c/Programs/Tinysoft/TSLGen2/funcext/other"
|
|
# "/mnt/c/Programs/Tinysoft/TSLGen2/funcext/tsword"
|
|
# "/mnt/c/Programs/Tinysoft/TSLGen2/funcext/word2arr"
|
|
# "/mnt/c/Programs/Tinysoft/TSLGen2/funcext/tsoffice"
|
|
# "/mnt/c/Programs/Tinysoft/TSLGen2/funcext/OfficeXml-dev"
|
|
# "/mnt/d/code/tinysoft/PdfConverter"
|
|
"/mnt/c/Programs/Tinysoft/TSLGen2/funcext"
|
|
# 可以添加更多目录
|
|
# "/path/to/third/directory"
|
|
)
|
|
|
|
echo "=== 开始递归解析所有 .tsf 文件 ==="
|
|
|
|
# 错误标志
|
|
has_error=false
|
|
|
|
# 遍历所有根目录
|
|
for root_dir in "${ROOT_DIRS[@]}"; do
|
|
echo "--- 处理目录: $root_dir"
|
|
|
|
# 检查目录是否存在
|
|
if [ ! -d "$root_dir" ]; then
|
|
echo "❌ 目录不存在: $root_dir"
|
|
has_error=true
|
|
continue
|
|
fi
|
|
|
|
# 遍历当前目录下的所有 .tsf 文件
|
|
while IFS= read -r -d '' file; do
|
|
echo "--- 正在解析: $file"
|
|
output=$(tree-sitter parse "$file" 2>&1)
|
|
if echo "$output" | grep -q "ERROR\|MISSING"; then
|
|
echo "❌ 语法错误在文件: $file"
|
|
echo "$output"
|
|
echo "--- 错误详情结束 ---"
|
|
has_error=true
|
|
# 如果希望遇到错误立即停止,取消注释下面这行
|
|
break
|
|
else
|
|
echo "✓ 解析成功: $file"
|
|
fi
|
|
done < <(find "$root_dir" -type f -name "*.tsf" -print0)
|
|
done
|
|
|
|
# 检查是否有错误
|
|
if [ "$has_error" = true ]; then
|
|
echo "❌ 解析过程中发现错误"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ 所有文件解析成功"
|