Ctrl K
ComunidadGuías…

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

感謝你的貢獻!