Skip to content

Latest commit

 

History

History
85 lines (63 loc) · 3.09 KB

File metadata and controls

85 lines (63 loc) · 3.09 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 描述中清晰地描述你的更改。鏈接到任何相關的問題。

感謝你的貢獻!