Ctrl K
ComunidadGuías…

translations/CONTRIBUTING_ZH_CN.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# 为 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 描述中清晰地描述你的更改。链接到任何相关的问题。

感谢你的贡献!