Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

CLI 工具参考手册

Cavvy 6.1.0 提供 16 个 CLI 入口;其中 cay-setup 是可独立构建和发布的工具链安装器,不依赖主编译器的 LLVM 构建环境。


总览

二进制文件功能源文件
cayc一站式编译器:.cay.exesrc/bin/cayc.rs
cay-ir仅生成 LLVM IR(.cay.llsrc/bin/cay-ir.rs
ir2exeLLVM IR → 可执行文件(.ll.exesrc/bin/ir2exe.rs
cay-check仅语法 + 语义检查src/bin/cay-check.rs
cay-run编译 + 运行一步完成src/bin/cay-run.rs
cay-rcpl交互式编程环境src/bin/cay-rcpl.rs
cay-bcgenCayBC 字节码生成src/bin/cay-bcgen.rs
cay-lspLSP 语言服务器src/bin/cay-lsp.rs
cavly包管理器src/bin/cavly.rs
cay-dtToken显示工具src/bin/cay-dt.rs
cay-dpParser显示工具src/bin/cay-dp.rs
cay-pre独立预处理器src/bin/cay-pre.rs
cay-astAST 查看与 JSON 导出src/bin/cay-ast.rs
cay-pl预处理结果查看src/bin/cay-pl.rs
cay-sir语义 IR 查看src/bin/cay-sir.rs
cay-setup安装、更新、检查和卸载工具链cay-setup/src/main.rs

cay-setup — 工具链安装器

直接运行且不传参数时,安装最新稳定版:

cay-setup

常用管理命令:

cay-setup install --version 6.1.0
cay-setup update
cay-setup show
cay-setup doctor
cay-setup uninstall

自动化环境使用 --yes 跳过确认,使用 --no-modify-path 禁止修改用户 PATH。可以通过 CAVVY_HOME--root 更改默认的 ~/.cavvy 安装根目录;showdoctoruninstall 同样接受 --rootdoctor 会实际编译一个最小程序,以验证 LLVM 后端和 链接库,而不只是打印版本号。每个版本安装到 ~/.cavvy/toolchains/<版本>,完成校验后 才切换 PATH;管理器来自 Release 的独立 cay-setup-<平台>-<架构> 资产。


1. cayc — 一站式编译器

.cay 源文件直接编译为可执行文件。

cayc <input.cay> [选项]

选项

选项描述
-o <file>指定输出文件路径
-O0 / -O1 / -O2 / -O3优化级别(默认 -O0
--emit-llvm同时保留 .ll 文件
--verbose显示详细编译日志
--stage <stage>只运行到指定阶段
--target <triple>目标三元组
--print-stages打印编译流水线阶段并退出
-I <dir>添加包含路径
-D <macro>预定义宏
-h / --help显示帮助

示例

cayc hello.cay
cayc hello.cay -o hello.exe
cayc hello.cay --emit-llvm -O2
cayc hello.cay -I ./include -D DEBUG

2. cay-ir — LLVM IR 生成器

.cay 源文件生成 LLVM IR 文本文件(.ll),不进行后续编译。

cay-ir <input.cay> [选项]

选项

选项描述
-o <file>输出 .ll 文件路径
--stdout输出到标准输出
-O0 / -O1 / -O2 / -O3优化级别
-I <dir>添加包含路径
--verbose显示详细日志

示例

cay-ir input.cay -o output.ll
cay-ir input.cay --stdout        # 直接查看生成的 IR
cay-ir input.cay -O2 -o optimized.ll

3. ir2exe — LLVM IR → 可执行文件

将 LLVM IR 文本文件编译为可执行文件。

ir2exe <input.ll> [选项]

选项

选项描述
-o <file>输出可执行文件路径
-O0 / -O1 / -O2 / -O3优化级别
--verbose显示详细日志

示例

ir2exe output.ll -o program.exe
ir2exe output.ll -O2 -o optimized.exe

4. cay-check — 语法和语义检查

仅执行编译流水线的前端(预处理 → 词法分析 → 解析 → 语义分析),不生成代码。用于快速验证源文件的正确性。

cay-check <input.cay> [选项]

选项

选项描述
-I <dir>添加包含路径
--verbose显示详细日志

退出码

  • 0 — 源文件正确
  • 1 — 存在编译错误

示例

cay-check source.cay
cay-check source.cay -I ./include

5. cay-run — 编译并运行

编译源代码并直接运行生成的可执行文件。

cay-run <input.cay> [程序参数...]

选项

选项描述
-I <dir>添加包含路径
--verbose显示详细日志

所有非选项参数会传递给生成的可执行文件。

示例

cay-run hello.cay
cay-run program.cay arg1 arg2 arg3

6. cay-rcpl — 交互式编程环境

启动交互式 REPL 环境,支持逐行输入和执行 Cavvy 代码。

cay-rcpl [选项]

选项

选项描述
-I <dir>添加包含路径
--verbose显示详细日志

支持的命令

命令描述
任意表达式计算并输出结果
变量声明在会话上下文中持久化
类/接口定义实时定义新类型
控制流语句即时执行
#include导入文件
:exit / :quit退出 RCPL
:help显示帮助

示例

> cay-rcpl
Cavvy RCPL v6.1.0
> int x = 42
> x * 2
84
> println("Hello from RCPL!")
Hello from RCPL!
> :exit

7. cay-bcgen — 字节码生成器

.cay 源文件编译为 CayBC 字节码。

cay-bcgen <input.cay> [选项]

选项

选项描述
-o <file>输出 .caybc 文件路径
--obfuscate启用字节码混淆
--obfuscation-level <0-3>混淆级别
-I <dir>添加包含路径
--verbose显示详细日志

示例

cay-bcgen input.cay -o output.caybc
cay-bcgen input.cay --obfuscate -o obfuscated.caybc

8. cay-lsp — LSP 语言服务器

启动 LSP 协议语言服务器,与支持 LSP 的编辑器(如 VS Code)配合使用。

cay-lsp

选项:无命令行选项(通过 LSP 协议通信)。

编辑器配置(VS Code 扩展位于 vscode-extension/):

工具链中包含 VS Code 扩展,提供:

  • 语法高亮
  • 自动补全
  • 诊断信息(错误和警告)
  • 跳转到定义
  • 悬停信息

9. cavly — 包管理器

完整的包管理工具,用于创建、构建和管理 Cavvy 项目。

cavly <子命令> [选项]

子命令

子命令描述
new <name>创建新项目
init在当前目录初始化项目
build构建项目
run构建并运行
test运行测试
clean清理构建产物
add <dependency>添加依赖
remove <dependency>移除依赖
publish发布包
install安装依赖
workspace工作区管理
help显示帮助

示例

cavly new my-project
cd my-project
cavly add some-lib
cavly build
cavly run
cavly test

详见 Cavly 文档


10. cay-dt — 文档工具

从源码注释生成文档。

cay-dt <input.cay> [选项]

选项

选项描述
-o <dir>输出目录
--format <fmt>输出格式(html / markdown)
-I <dir>添加包含路径
--verbose显示详细日志

11. cay-dp — 依赖分析工具

分析项目的依赖关系图。

cay-dp <input.cay> [选项]

选项

选项描述
--graph输出 DOT 格式的依赖图
--json输出 JSON 格式
-I <dir>添加包含路径
--verbose显示详细日志

12. cay-pre — 独立预处理器

仅执行预处理阶段,输出预处理后的源代码。

cay-pre <input.cay> [选项]

选项

选项描述
-o <file>输出文件
--stdout输出到标准输出
-I <dir>添加包含路径
-D <macro>预定义宏
--keep-comments保留注释
--verbose显示详细信息

示例

cay-pre input.cay -o output_preprocessed.cay
cay-pre input.cay --stdout | grep "MAIN"
cay-pre input.cay -D DEBUG -D VERSION=2

通用行为

错误报告

所有工具使用 miette 进行格式化错误输出,提供:

  • 彩色源码片段
  • 错误位置标注
  • 详细的错误描述和建议

退出码

退出码含义
0成功
1编译错误
2运行时错误
3文件未找到
4内部错误(应报告为 bug)

环境变量

变量描述
CAVVC_PATHcayc 编译器路径(用于测试)
CAVVY_HOMECavvy 安装目录
CAVVY_LIB_PATH标准库路径
CAVVY_LLVM_PATHLLVM 工具链路径