Skip to content

Latest commit

 

History

History
85 lines (63 loc) · 3.11 KB

File metadata and controls

85 lines (63 loc) · 3.11 KB

为 Zen C 做贡献

首先,感谢你考虑为 Zen C 做贡献!正是像你这样的人让这个项目变得伟大。

我们欢迎各类贡献!无论是修复 Bug、完善文档,改进新功能,或者只是反馈问题。

如何贡献

贡献的一般工作流程如下:

  1. Fork 仓库:使用标准的 GitHub 工作流程将仓库 Fork 到你自己的账户。
  2. 创建功能分支:为你的功能或 Bug 修复创建一个新分支。这有助于保持你的更改井然有序,并与主分支分离。
    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)运行完整的测试套件:

make test

运行特定测试

为了在开发过程中节省时间,可以运行单个测试文件:

./zc run tests/test_match.zc

使用不同的后端进行测试

Zen C 支持多种 C 编译器作为后端。你可以专门针对它们运行测试:

Clang:

./tests/run_tests.sh --cc clang

Zig (cc):

./tests/run_tests.sh --cc zig

TCC (Tiny C Compiler):

./tests/run_tests.sh --cc tcc

拉取请求流程

  1. 确保你为任何新功能添加了测试。
  2. 确保所有现有测试通过。
  3. 如果合适,更新文档(docs/translations/README.md 中的 Markdown 文件)。
  4. 在 PR 描述中清晰地描述你的更改。链接到任何相关的问题。

感谢你的贡献!