translations/CONTRIBUTING_ZH_CN.md
Rama main · réplica de lectura del repositorio original.
# 为 Zen C 做贡献
首先,感谢你考虑为 Zen C 做贡献!正是像你这样的人让这个项目变得伟大。
我们欢迎各类贡献!无论是修复 Bug、完善文档,改进新功能,或者只是反馈问题。
## 如何贡献
贡献的一般工作流程如下:
1. **Fork 仓库**:使用标准的 GitHub 工作流程将仓库 Fork 到你自己的账户。
2. **创建功能分支**:为你的功能或 Bug 修复创建一个新分支。这有助于保持你的更改井然有序,并与主分支分离。
```bash
git checkout -b feature/NewThing
```
3. **进行更改**:编写你的代码或文档更改。
4. **验证**:确保你的更改按预期工作,并且没有破坏现有功能(参见 [运行测试](#运行测试))。
5. **提交拉取请求**:将你的分支推送到你的 Fork,并向 Zen C 主仓库提交拉取请求 (PR)。
## 问题 (Issues) 和 拉取请求 (Pull Requests)
我们使用 GitHub Issues 和 Pull Requests 来跟踪错误和功能。为了帮助我们保持质量:
- **使用模板**: 打开 Issue 或 PR 时,请使用提供的模板。
- **错误报告**: 用于报告错误。
- **功能请求**: 用于建议新功能。
- **拉取请求**: 用于提交代码更改。
- **描述详细**: 请提供尽可能多的细节。
- **自动检查**: 我们有一个自动工作流程,用于检查新 Issues 和 PRs 的描述长度。如果描述太短(< 50 个字符),它将自动关闭。这是为了确保我们有足够的信息来帮助您。
## 开发指南
### 代码规范
- 遵循代码库中现有的 C 风格。保持一致性是关键。
- 你可以使用提供的 `.clang-format` 文件来格式化你的代码。
- 保持代码整洁可读。
### 项目结构
如果你想扩展编译器,这里有一个代码库的快速导览:
* **解析器 (Parser)**:`src/parser/` - 包含递归下降解析器的实现。
* **代码生成 (Codegen)**:`src/codegen/` - 包含将 Zen C 转换为 GNU C/C11 的转译逻辑。
* **标准库 (Standard Library)**:`std/` - 标准库模块,使用 Zen C 本身编写。
## 运行测试
在开发过程中,测试套件是你最好的朋友。请在提交 PR 之前确保所有测试通过。
### 运行所有测试
使用默认编译器(通常是 GCC)运行完整的测试套件:
```bash
make test
```
### 运行特定测试
为了在开发过程中节省时间,可以运行单个测试文件:
```bash
./zc run tests/test_match.zc
```
### 使用不同的后端进行测试
Zen C 支持多种 C 编译器作为后端。你可以专门针对它们运行测试:
**Clang**:
```bash
./tests/run_tests.sh --cc clang
```
**Zig (cc)**:
```bash
./tests/run_tests.sh --cc zig
```
**TCC (Tiny C Compiler)**:
```bash
./tests/run_tests.sh --cc tcc
```
## 拉取请求流程
1. 确保你为任何新功能添加了测试。
2. 确保所有现有测试通过。
3. 如果合适,更新文档(`docs/`、`translations/` 或 `README.md` 中的 Markdown 文件)。
4. 在 PR 描述中清晰地描述你的更改。链接到任何相关的问题。
感谢你的贡献!