۱. عناصر سازندهٔ ساختار شرطی
ساختار شرطی در زبان AZRA از چهار جزء تشکیل میشود:
"is" ، "reply" ، "shoot" ، "wall"
۲. بخش "is"
۲.۱. عبارت "is" اولین بخش زنجیرهٔ شرطی است
شرط اصلی ساختار در این بخش تعریف میشود.
۲.۲. اگر مقدار شرط در "is" درست باشد
بلاک مربوط به آن اجرا میشود.
۲.۳. پس از اجرای بلاک "is"
زنجیرهٔ شرطی خاتمه مییابد.
۳. بخش "reply"
۳.۱. عبارت "reply" برای تعریف شرایط پس از "is" استفاده میشود
هر "reply" تنها در صورتی بررسی میشود که تمام شرطهای قبلی برقرار نشده باشند.
۳.۲. وجود چندین "reply" در یک زنجیره مجاز است
"reply"ها به ترتیب نوشتاری ارزیابی میشوند.
۳.۳. اولین "reply" با نتیجهٔ درست
اجرا شده و زنجیره در همان نقطه پایان مییابد.
قوانین کلیدی:
- عبارت "reply" برای تعریف شرایط پس از "is" استفاده میشود
- هر "reply" تنها در صورتی بررسی میشود که تمام شرطهای قبلی برقرار نشده باشند
- وجود چندین "reply" در یک زنجیره مجاز است
- "reply"ها به ترتیب نوشتاری ارزیابی میشوند
- اولین "reply" با نتیجهٔ درست اجرا شده و زنجیره در همان نقطه پایان مییابد
۴. بخش "shoot"
۴.۱. عبارت "shoot" مسیر پیشفرض (Fallback) زنجیرهٔ شرطی است
"shoot" تنها زمانی اجرا میشود که هیچیک از شروط "is" یا "reply" مقدار درست نداشته باشند.
۴.۲. تعریف "shoot" اختیاری است
در صورت نبودن "shoot"، و برقرار نشدن هیچکدام از شروط، زنجیره بدون اجرا پایان مییابد.
۴.۳. "shoot" دو شکل دارد:
- شکل کامل:
shoot() -> - شکل کوتاه:
shoot ->
قوانین کلیدی:
- عبارت "shoot" مسیر پیشفرض (Fallback) زنجیرهٔ شرطی است
- "shoot" تنها زمانی اجرا میشود که هیچیک از شروط "is" یا "reply" مقدار درست نداشته باشند
- تعریف "shoot" اختیاری است
- در صورت نبودن "shoot"، و برقرار نشدن هیچکدام از شروط، زنجیره بدون اجرا پایان مییابد
۵. بخش "wall()"
۵.۱. عبارت "wall()" پایان رسمی زنجیرهٔ شرطی را مشخص میکند
وجود "wall()" در انتهای ساختار شرطی اجباری است.
۵.۲. نبود "wall()" خطای نحوی محسوب میشود
کامپایلر بدون "wall()" قادر به تشخیص پایان بلاک شرطی نخواهد بود.
قوانین کلیدی:
- عبارت "wall()" پایان رسمی زنجیرهٔ شرطی را مشخص میکند
- وجود "wall()" در انتهای ساختار شرطی اجباری است
- نبود "wall()" خطای نحوی محسوب میشود
۶. ترتیب عناصر در ساختار شرطی
۶.۱. ترتیب صحیح و مجاز
"is" → "reply" (صفر یا چند بار) → "shoot" (اختیاری) → "wall()"
۶.۲. قوانین مربوط به ترتیب
- ترتیب معرفیشده باید دقیقاً رعایت شود
- هرگونه جابجایی، تکرار نامعتبر یا قرارگیری عنصر در جای اشتباه، خطای نحوی ایجاد میکند
- بلاک شرطی تنها در اولین بخش دارای نتیجهٔ درست اجرا میشود و مسیرهای بعدی نادیده گرفته میشوند
۶.۳. نمودار جریان اجرا
- ارزیابی شرط "is"
- اگر درست → اجرای بلاک "is" و پایان زنجیره
- اگر نادرست → بررسی "reply" اول
- اگر "reply" درست → اجرا و پایان
- اگر نادرست → بررسی "reply" بعدی
- اگر همه نادرست → اجرای "shoot" (در صورت وجود)
- پایان با "wall()"