translations/CONTRIBUTING_ZH_TW.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 描述中清晰地描述你的更改。鏈接到任何相關的問題。
感謝你的貢獻!