چهارده برنامهٔ تدریجی، از یک تابع خالی تا concurrency و
panic/recover. هر فایل با کامنت فارسی شروع میشود که خروجی مورد
انتظار را شرح میدهد. مفسر noor همهٔ اینها را به Go ترجمه میکند
و سپس go build آنها را به باینری اصلی تبدیل میکند.
cargo build --workspace
bash noor/examples/run_all.shهاسنس داخلی هر برنامه را:
- به Go با
noor emitترجمه میکند - با
go buildبه باینری تبدیل میکند - اجرا میکند و خروجی/کد خروج را با جدول EXPECT میسنجد
go run کد خروج زیرفرایند را در ۱ خلاصه میکند، پس استفاده از
go build به علاوهٔ اجرای مستقیم باینری ضروری است (مثلاً مثال ۲ باید
کد خروج ۴۲ را برگرداند).
| فایل | نشان میدهد | انتظار |
|---|---|---|
01_hello.noor |
کوچکترین برنامه (بدنهٔ خالی) | exit 0 |
02_return_int.noor |
سیستم.بیرون(۴۲) برای کد خروج |
exit 42 |
03_hello_world.noor |
کتابخانه («فرمت») + فرمت.چاپ |
سلام، جهان |
04_arithmetic.noor |
متغیر/:= و حساب پایه |
9 |
05_fibonacci.noor |
حلقهٔ شرطی + تخصیص | 55 |
06_fizzbuzz.noor |
زنجیرهٔ وگرنه شرط { } (بدون اگر پس از وگرنه) |
شامل FizzBuzz |
07_switch.noor |
انتخاب/مورد/پیشفرض با چند مقدار در یک بازو |
دوشنبه |
08_numerals.noor |
ارقام انگلیسی + فارسی + عربی-هندی در یک برنامه | 126 |
09_composites.noor |
ساختار، برش []T، نقشه نقشه[K]V، اندیس |
25 |
10_functions.noor |
چندبازگشتی، variadic، بستار | 42 |
11_errors.noor |
الگوی (T, خطا) + اگر init؛ cond { } + هیچ |
شامل تقسیم بر صفر |
12_methods_interfaces.noor |
متدها (مقدار و اشارهگر) + رابط |
شامل (نقطه) |
13_concurrency.noor |
همرو، جریان، <-، بساز |
42 |
14_defer_panic_recover.noor |
موکول، وحشت، بازیابی |
شامل بازیابی شد |
- ارقام فارسی (
۰-۹) و ارقام عربی-هندی (٠-٩) به ASCII نرمال میشوند. میتوانید هر سه را در یک برنامه به کار ببرید (مثال ۸). - نقطهویرگول فارسی
؛فقط جداکنندهٔ داخلی است، نه پایانبخش دستور. درون اوّلبنداگر/برایبه کار میرود (مثال ۱۱). ASCII;از سوی لکسر رد میشود. - شناسهها میتوانند شامل ZWNJ (U+200C) و خط فاصله باشند
(مانند
چاپ-با-فرمتیامیخواهم). عمومیقبل ازکار،ساختار، یارابطآن را قابل صدور میکند — معادل بزرگحرف Go برای اسامی فارسی است که حروف بزرگ و کوچک ندارند.
run_all.sh بهطور خودکار خروجی Go را تولید و کامپایل میکند، پس
نیازی به ذخیره نمونههای .go در مخزن نیست. اگر میخواهید
بهصورت دستی Go معادل را ببینید:
./target/debug/noor emit noor/examples/13_concurrency.noor