Skip to content

Commit a50de04

Browse files
committed
docs: add Persian README (README_fa.md)
Full translation of README.md mirroring the layout, build, quick start, CLI, syntax overview, adapter docs, examples, phase status and development sections. Code blocks and the syntax table are left in LTR blocks so the Noor/Go side-by-side comparison reads naturally.
1 parent 9e163a6 commit a50de04

1 file changed

Lines changed: 185 additions & 0 deletions

File tree

README_fa.md

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
<div dir="rtl">
2+
3+
# نور (Noor)
4+
5+
یک زبان برنامه‌نویسی با نحو فارسی که به Go ترجمه می‌شود. فایل‌های منبع
6+
(`.noor` یا `.نور`) واژگانی‌سازی، تجزیه، نوع‌سنجی و سپس به یک واحد
7+
ترجمهٔ Go تبدیل می‌شوند و در نهایت به ابزار میزبان `go` برای ساخت نهایی
8+
سپرده می‌شوند.
9+
10+
نور از پروژهٔ [Hormoz](https://github.com/...) جدا شد، پس از آنکه طراحی
11+
آن حول backend مبتنی بر Go تثبیت شد. این دو پروژه الگوهای مشترکی دارند
12+
(واژگانی‌ساز آگاه از grapheme، تجزیه‌گر گردآورندهٔ تشخیص، کتابخانهٔ
13+
استاندارد adapter-driven) اما نور تلاش بلندمدت است.
14+
15+
## ساختار مخزن
16+
17+
```
18+
noor-core/ # واژگانی‌ساز، تجزیه‌گر، AST، نوع‌سنجی، go_gen، رجیستری adapter
19+
noor-bin/ # درایور CLI با نام‌های `noor` / `نور`
20+
examples/ # ۱۴ برنامهٔ نمونه + هارنس run_all.sh
21+
adapters/ # نمونه فایل‌های TOML برای بسته‌های stdlib در Go
22+
```
23+
24+
## ساخت
25+
26+
```sh
27+
cargo build --workspace --release
28+
```
29+
30+
باینری‌ها در مسیر `target/release/` ساخته می‌شوند:
31+
32+
- `noor` و `نور` — درایور (تجزیه + تولید Go + فراخوانی `go`).
33+
34+
## شروع سریع
35+
36+
```noor
37+
بسته اصلی
38+
39+
کتابخانه («فرمت»)
40+
41+
کار نخست() {
42+
فرمت.چاپ(«سلام، جهان»)
43+
}
44+
```
45+
46+
```sh
47+
./target/debug/noor run hello.noor
48+
# → سلام، جهان
49+
```
50+
51+
## واسط خط فرمان (CLI)
52+
53+
```
54+
noor parse <file.noor> چاپ AST تجزیه‌شده
55+
noor emit <file.noor> چاپ سورس Go تولیدشده
56+
noor build <file.noor> تولید `<file>.go` در کنار سورس
57+
noor run <file.noor> تولید Go و سپس `go run` آن
58+
noor adapter list فهرست adapter‌های نصب‌شده
59+
noor adapter add <file>.toml نصب یک adapter
60+
noor adapter remove <alias> حذف adapter بر اساس alias
61+
```
62+
63+
## نمای کلی نحو
64+
65+
<div dir="ltr">
66+
67+
| Source-level feature | Noor keyword | Go equivalent |
68+
|---|---|---|
69+
| package decl | `بسته` | `package` |
70+
| import block | `کتابخانه («pkg»)` | `import "pkg"` |
71+
| public marker | `عمومی` before decl | uppercase first letter |
72+
| function decl | `کار نام(...)` | `func name(...)` |
73+
| method decl | `کار (recv T) Name(...)` | `func (recv T) Name(...)` |
74+
| return | `بازگشت e1, e2` | `return e1, e2` |
75+
| value binding | `متغیر`, `:=` | `var`, `:=` |
76+
| primitives | `صحیح۳۲` etc. | `int32`, … |
77+
| string | `«...»` interpreted | `"..."` |
78+
| nil / unit | `هیچ` | `nil` (Go has no `void`) |
79+
| bools | `درست` / `غلط` | `true` / `false` |
80+
| if/else | `اگر cond { } وگرنه cond { } وگرنه { }` | `if`/`else if`/`else` |
81+
| if with init | `اگر init؛ cond { ... }` | `if init; cond { ... }` |
82+
| for loops | `برای { }`, `برای cond { }` | `for {}`, `for cond {}` |
83+
| switch | `انتخاب`, `مورد`, `پیشفرض` | `switch`, `case`, `default` |
84+
| struct decl | `ساختار نام { ... }` | `type Name struct {...}` |
85+
| slice / map | `[]T`, `نقشه[K]V` | `[]T`, `map[K]V` |
86+
| interface | `رابط نام { ... }` | `type Name interface {...}` |
87+
| pointer | `*T` | `*T` |
88+
| address-of | `نشانی x` | `&x` |
89+
| chan | `جریان T` | `chan T` |
90+
| goroutine | `همرو f()` | `go f()` |
91+
| send/recv | `ch <- v`, `<-ch` | identical |
92+
| make | `بساز(T, ...)` | `make(T, ...)` |
93+
| defer | `موکول f()` | `defer f()` |
94+
| panic / recover | `وحشت(...)`, `بازیابی()` | identical |
95+
| variadic | `args ...T` | identical |
96+
| closure | `کار(p T) R { ... }` | `func(p T) R { ... }` |
97+
| iota equivalent | `شمارنده` | `iota` |
98+
| error type | `خطا` | `error` |
99+
100+
</div>
101+
102+
### قواعد مهم
103+
104+
- **بدون نقطه‌ویرگول ASCII.** خط‌جدید پایان‌دهندهٔ گزاره است. جداکنندهٔ
105+
داخلی در بندهای init مربوط به `for`/`if` نقطه‌ویرگول عربی `؛`
106+
(U+061B) است.
107+
- **ارقام.** ارقام ASCII (`0`-`9`)، فارسی (`۰`-`۹`) و عربی-هندی
108+
(`٠`-`٩`) همگی به‌عنوان رقم صحیح واژگانی می‌شوند و پیش از تجزیه به
109+
ASCII نرمال می‌شوند. ترکیب ارقام در یک توکن مجاز است.
110+
- **شناسه‌ها** پذیرای ZWNJ (U+200C) و خط‌تیره هستند
111+
(مثلاً `می‌خواهم`، `چاپ-با-فرمت`).
112+
- **مرئیت (visibility)** بر اساس کلیدواژه است نه حروف بزرگ، چون فارسی
113+
حروف بزرگ ندارد. `عمومی` پیش از `کار`/`ساختار`/`رابط` آن تعریف را
114+
export می‌کند. mangling شناسه یک `X` به ابتدای نام‌های export شده
115+
می‌افزاید تا نماد Go تولیدشده قاعدهٔ Go در مورد حرف اول بزرگ را برآورده
116+
کند.
117+
118+
## بسته‌های adapter-driven
119+
120+
نور alias های فارسی بسته‌ها را از طریق یک رجیستری به import های Go
121+
نگاشت می‌کند. ورودی‌های توکار (`فرمت``fmt`، `سیستم``os`) درون
122+
باینری قرار دارند. کاربران می‌توانند با افزودن فایل TOML در
123+
`~/.noor/adapters/` adapter بیشتری اضافه کنند:
124+
125+
<div dir="ltr">
126+
127+
```toml
128+
[package]
129+
alias = "ریاضی"
130+
go_path = "math"
131+
132+
[[functions]]
133+
alias = "حداکثر"
134+
go_name = "Max"
135+
136+
[[functions]]
137+
alias = "ریشه"
138+
go_name = "Sqrt"
139+
```
140+
141+
</div>
142+
143+
نصب با `noor adapter add path/to/file.toml`. نمونه adapter ها در
144+
پوشهٔ `adapters/` این مخزن قرار دارند.
145+
146+
## مثال‌ها
147+
148+
دستور `bash examples/run_all.sh` هر فایل `.noor` را به Go ترجمه
149+
می‌کند، با `go build` می‌سازد، اجرا می‌کند و خروجی مورد انتظار را
150+
تأیید می‌کند. برای جدول کامل به
151+
[`examples/README.md`](examples/README.md) مراجعه کنید.
152+
153+
## وضعیت فازها
154+
155+
پیاده‌سازی در ۱۴ فاز رشد کرده (قابل مشاهده در `git log`):
156+
157+
1. اسکفولد + واژگانی‌ساز/تجزیه‌گر شکل‌گرفته بر مبنای Go
158+
2. اِمیتر «سلام جهان» در Go
159+
3. متغیرها (`متغیر` + `:=`) + حساب دودویی
160+
4. کنترل جریان (if/else، for، switch، break/continue، مقایسه‌ها)
161+
5. نوع‌های مرکب (struct، slice، map)
162+
6. چندبازگشتی، variadic، بستار، اعلان کوتاه چندنامی
163+
7. خطاها به‌عنوان مقدار (`خطا`، `هیچ`، if-with-init)
164+
8. متدها + رابط‌ها + نوع‌های اشاره‌گر
165+
9. هم‌روندی (`همرو`، `جریان`، `<-`، `بساز`)
166+
10. Defer + panic + recover
167+
11. رجیستری بسته‌های adapter-driven (توکار + `~/.noor/adapters/`)
168+
12. نوع‌سنج MVP (importها/متغیرهای استفاده‌نشده، arity فراخوانی/بازگشت)
169+
13. هارنس مثال‌ها + مستندات
170+
14. جدا کردن مخزن (همین تاریخچهٔ commit)
171+
172+
## توسعه
173+
174+
```sh
175+
cargo build --workspace
176+
cargo test --workspace
177+
cargo fmt --all --check
178+
cargo clippy --workspace --all-targets -- -D warnings
179+
```
180+
181+
## مجوز
182+
183+
MIT. مراجعه به [LICENSE](LICENSE).
184+
185+
</div>

0 commit comments

Comments
 (0)