Skip to content

Latest commit

 

History

History
64 lines (52 loc) · 3.79 KB

File metadata and controls

64 lines (52 loc) · 3.79 KB

نمونه‌های نور

چهارده برنامهٔ تدریجی، از یک تابع خالی تا concurrency و panic/recover. هر فایل با کامنت فارسی شروع می‌شود که خروجی مورد انتظار را شرح می‌دهد. مفسر noor همهٔ این‌ها را به Go ترجمه می‌کند و سپس go build آن‌ها را به باینری اصلی تبدیل می‌کند.

اجرای همه با هم

cargo build --workspace
bash noor/examples/run_all.sh

هاسنس داخلی هر برنامه را:

  1. به Go با noor emit ترجمه می‌کند
  2. با go build به باینری تبدیل می‌کند
  3. اجرا می‌کند و خروجی/کد خروج را با جدول 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 برای اسامی فارسی است که حروف بزرگ و کوچک ندارند.

بازسازی .go (در صورت تغییر کدگذار)

run_all.sh به‌طور خودکار خروجی Go را تولید و کامپایل می‌کند، پس نیازی به ذخیره نمونه‌های .go در مخزن نیست. اگر می‌خواهید به‌صورت دستی Go معادل را ببینید:

./target/debug/noor emit noor/examples/13_concurrency.noor