بازگشت به صفحه اصلی
100%

مشخصات رسمی زبان

نحو رمزی آزرا (AZRA Cipher Syntax)

نسخه ۱.۰  ·  زبان برنامه‌نویسی آزرا

پروژه آزرا  |  azralang.online

نحو رمزی آزرا (AZRA Cipher Syntax)

مشخصات رسمی زبان — نسخه ۱.۰

Imvoke(:"system/64/user…")
World-type(:Azra , [ip = 1234])

        name       int, float
-- } space for main code
Extract : 123456
                 int, float
Extract(:Hello World)
                   *for more than 50 character use "str"
           str
Delog{int, float, str…}
                                              این خط برای وارد کردن متغیرهایی که به آن‌ها نیاز داریم استفاده می‌شود؛
                                              در غیر این صورت می‌توان این خط را حذف کرد.
Submit(:1.azr)

زبان برنامه‌نویسی آزرا
تعریف متغیر و قوانین نحوی

نسخه ۱.۰
نوع سند: مشخصات رسمی زبان


۱. ساختار کلی تعریف متغیرها

در آزرا، هر متغیر باید از یک الگوی دقیق و قابل تشخیص پیروی کند. این ساختار به سیستم اجازه می‌دهد تعریف متغیرها را به‌درستی تشخیص داده و تفسیر کند.

۱.۱ فرمت کلی

-<VariableNumber><VariableName> = <Value>-

کاراکترهای خط‌تیره ابتدایی و انتهایی (-) به‌عنوان مرزهای ساختاری عمل می‌کنند. اگر هرکدام از این خط‌تیره‌ها وجود نداشته باشد، سیستم قادر به تشخیص تعریف نخواهد بود و یک خطای نحوی (Syntax Error) رخ می‌دهد.


۲. قوانین پایه

قانون ۱ — الزام خط‌تیره ابتدایی

هر تعریف متغیر باید با یک خط‌تیره (-) شروع شود.

صحیح: -0x = 2-

غلط: 0x = 2

قانون ۲ — الزام شماره‌گذاری متغیر

هر متغیر باید دارای یک شاخص عددی باشد که دقیقاً قبل از نام متغیر قرار می‌گیرد.

  • شماره‌گذاری از 0 شروع می‌شود.
  • هر متغیر جدید باید به‌ترتیب افزایش یابد.
  • هیچ شکافی در شماره‌گذاری مجاز نیست.

مثال (سومین متغیر): -2msg = Hello-

نکته: مقادیر اعشاری بر قوانین شماره‌گذاری تأثیری ندارند.

قانون ۳ — بدون عدد اضافی پیش از نام

تنها عددی که پیش از نام متغیر مجاز است، شاخص همان متغیر است.

غلط: -42A = Hello-

قانون ۴ — اعداد درون نام متغیر

اعداد تنها زمانی می‌توانند درون نام متغیر ظاهر شوند که بعد از یک حرف بیایند.

صحیح: -1Am1r = 10-   -2x2 = 5-

قانون ۵ — الزام خط‌تیره پایانی

هر تعریف متغیر باید با یک خط‌تیره (-) پایان یابد.

صحیح: -3b = Hello World3-

غلط: -3b = Hello World3

عدم وجود خط‌تیره پایانی منجر به خطای نحوی متغیر باز (Open Variable Syntax Error) می‌شود.


۳. قوانین رشته‌ها

قانون ۶ — رشته‌های کوتاه‌تر از ۵۰ کاراکتر

رشته‌هایی با کمتر از ۵۰ کاراکتر می‌توانند بدون علامت نقل‌قول نوشته شوند.

مثال‌ها: -1y = Hello World-   -2z = Hi-

قانون ۷ — رشته‌های با ۵۰ کاراکتر یا بیشتر

رشته‌های با ۵۰ کاراکتر یا بیشتر باید داخل علامت نقل‌قول دوتایی (") قرار گیرند.

مثال: -3longMsg = "This is a long text containing more than fifty characters…"-

قانون ۸ — علامت تک‌نقل‌قول مجاز نیست

علامت تک‌نقل‌قول (' ') توسط آزرا شناخته نمی‌شود و باعث خطای نحوی می‌شود.

غلط: -1x = 'Hello'-

قانون ۹ — اعداد درون رشته‌ها

اگر رشته‌ای با ترکیب عدد و حرف شروع یا پایان یابد، همچنان به‌عنوان رشته در نظر گرفته می‌شود.

مثال‌های معتبر:

-1y = 1Hello World-
-2z = Hello 1 World-
-3b = Hello World3-

۴. قوانین انتساب مقدار

قانون ۱۰ — تشخیص خودکار نوع

سیستم نوع مقدار را با استفاده از منطق زیر تعیین می‌کند:

  • مقدار بدون نقل‌قول و بدون حرف ← عددی (Numeric)
  • مقدار داخل نقل‌قول دوتایی ← رشته‌ای (String)
  • مقداری که شامل حرف و عدد هر دو باشد ← رشته‌ای (String)
  • مقداری که شامل @ یا ref: باشد ← نماد / ارجاع (Symbol / Reference)
قانون ۱۱ — قوانین ارجاع / نماد

ارجاع‌هایی مانند @2 مقادیر مستقل نیستند. هنگام استفاده در دستورات پشتیبانی‌شده (مانند Extract) باید داخل پرانتز قرار گیرند.

صحیح: Extract(:@2)

غلط: Extract : @2

قانون ۱۲ — رشته‌های چندکلمه‌ای

اگر رشته‌ای شامل چند کلمه باشد، حتی اگر کمتر از ۵۰ کاراکتر باشد، استفاده از نقل‌قول دوتایی برای وضوح بیشتر توصیه می‌شود.

توصیه‌شده: -0name = "Amir Hosseini"-


۵. قوانین تکمیلی

قانون ۱۳ — فاصله‌گذاری اطراف علامت مساوی: فاصله‌گذاری اطراف = انعطاف‌پذیر و سلیقه‌ای است. همه این موارد معتبرند: -0x = 2- ، -0x = 2 - ، -0x=2-
قانون ۱۴ — یک تعریف در هر خط: هر تعریف متغیر باید در یک خط نوشته شود. تقسیم آن به چند خط یا قرار دادن چند تعریف در یک خط ممنوع است.
قانون ۱۵ — عدم پرش در شماره‌گذاری: شماره‌گذاری متغیرها باید متوالی باشد. غلط: -0x = 5- و سپس -2y = 10- (شاخص ۱ موجود نیست).
قانون ۱۶ — بدون شاخص منفی: شاخص متغیرها باید عدد صحیح غیرمنفی باشد. غلط: -1x = 5-
قانون ۱۷ — نام متغیر نمی‌تواند با عدد شروع شود: پس از شاخص متغیر، نام متغیر باید با یک حرف شروع شود. غلط: -0 1name = 2- ، -3 12x = ok-
قانون ۱۸ — کاراکترهای مجاز در نام متغیر: حروف بزرگ (A–Z)، حروف کوچک (a–z)، اعداد (فقط بعد از حرف) و زیرخط _. هیچ کاراکتر دیگری مجاز نیست.
قانون ۱۹ — مقادیر رشته‌ای شروع‌شده با عدد: اگر مقدار رشته‌ای با عدد شروع شود، باید یا داخل نقل‌قول دوتایی قرار گیرد یا بلافاصله بعد از عدد یک حرف بیاید. صحیح: -0a = "1Hello"- ، -1code = 1xTest-. غلط: -0a = 1-
قانون ۲۰ — نمادها را نمی‌توان مستقیم انتساب داد: نمادهایی مانند @2 را نمی‌توان مستقیماً به یک متغیر انتساب داد. غلط: -0ref = @2-. نمادها باید از طریق ساختارهای پشتیبانی‌شده استفاده شوند: Extract(:@n)

مدل مفهومی و معماری اصلی

ابرداده فایل (File Metadata)

سیستم هدف (Target System)

سیستم هدف به سیستمی گفته می‌شود که کد روی آن اجرا خواهد شد. این سیستم دو شکل ممکن دارد:

  1. همان سیستمی که کد در آن نوشته شده است.
  2. یک دستگاه اختصاصی که مخصوصاً برای اجرای زبان آزرا ساخته شده است.

نام فایل (Filename)

فایل حاوی کد باید تنها با استفاده از اعداد نام‌گذاری شود. مثال‌ها: 1.azr ، 561.azr. هیچ کاراکتر حرفی در نام فایل مجاز نیست.

وابستگی‌ها (Dependencies)

یک فایل آزرا فقط می‌تواند به فایل‌های دیگری که به همان زبان (AZR) نوشته شده‌اند متصل شود. اگر فایل نیاز به اتصال به کد خارجی یا فایل غیر AZR داشته باشد، ابتدا باید آن فایل به فرمت AZR تبدیل (کامپایل) شود. بنابراین، فایل‌های آزرا تنها با فایل‌های همان نوع ارتباط برقرار می‌کنند.

ابرداده پیش از اجرا (Pre Execution Metadata)

پیش از شروع بدنه اصلی کد، برخی ابرداده‌ها باید تعریف شوند. این موارد شامل: سیستم فراخوانی‌شده، نوع فایل (پیش‌فرض: azr)، شناسه سیستم برای مجوز اجرا، و نماد -- برای مشخص کردن آغاز بخش اصلی کد است.

Imvoke

در ابتدای هر فایل، دستور Imvoke باید ظاهر شود. این دستور مسئول فراخوانی سیستم اجرا، تعیین نسخه سیستم، تعیین سطح دسترسی و مشخص کردن اینکه کدام محیط مجاز به اجرای فایل است، می‌باشد.

مثال: Imvoke(:"system/64/user.001.alpha")

این خط به سیستم اطلاع می‌دهد که کدام محیط باید فایل را اجرا کند، چه نسخه‌ای مورد نیاز است و چه سطح دسترسی مجاز است. اگر سیستمی غیر از سیستم مشخص‌شده بخواهد فایل را اجرا کند، اجرا رد خواهد شد. بدون دستور Imvoke، فایل مجاز به اجرا نیست و رد می‌شود.

World-type

دستور World-type محیط اجرا و پیکربندی «جهان» را تعریف می‌کند.

مثال: World-type(:Azra | [ip = 1234])

این خط مشخص می‌کند که کد در جهان Azra با پارامترهای محیطی تعریف‌شده (مثلاً آدرس IP یا شناسه شبکه) اجرا می‌شود.

نکته مهم نحوی

در آزرا، نام متغیرها هرگز نباید حاوی فاصله باشند. مثال غلط: -0amir reza = 2- — این منجر به خطای نحوی می‌شود زیرا بین amir و reza فاصله وجود دارد.

روش صحیح برای نام‌های متغیر چندکلمه‌ای

برای جدا کردن کلمات درون نام متغیر، باید از کاراکتر زیرخط _ استفاده شود. نسخه صحیح: -0amir_reza = 2-. این نسخه هم معتبر است: -0amir-reza = 2-.

نکته: در World-type، قانون زیرخط اعمال نمی‌شود زیرا World-type یک دستور اصلی سیستمی است و تابع دستور زبان استاندارد متغیرهای آزرا نیست.

ابرداده پس از اجرا (بخش پایانی فایل)

در انتهای فایل، دستورات مشخصی باید اضافه شوند تا به سیستم اجرا اطلاع دهند چه داده‌هایی باید پردازش شوند و چه داده‌هایی نادیده گرفته شوند. این بخش معمولاً شامل دو دستور پایانی است: Delog{ … } و Submit.

Delog

فرمت کلی: Delog{int, str, …}

این دستور مشخص می‌کند کدام نوع داده‌ها از متغیرهای فایل باید در زمان کامپایل شناسایی شوند. این دستور تعیین می‌کند کامپایلر کدام نوع متغیرها (int، str، bool، ref و غیره) را پردازش کند، به کامپایلر دستور می‌دهد متغیرهای انواع دیگر را نادیده بگیرد، و تضمین می‌کند تنها انواعی که داخل {} فهرست شده‌اند در پردازش نهایی لحاظ شوند.

اگر Delog{...} وجود نداشته باشد، تمام متغیرهای فایل معتبر و ضروری در نظر گرفته می‌شوند. کامپایلر باید همه متغیرها را پردازش کند.

مثال: Delog{int, str} — یعنی تنها متغیرهای عددی و رشته‌ای مرتبط هستند. انواع دیگر (مثل bool یا ref) نادیده گرفته می‌شوند.

Submit

فرمت کلی: Submit(:<filename>)

مثال: Submit(:1.azr)

این دستور باید در انتهای فایل ظاهر شود. این دستور به‌طور رسمی پایان کد را مشخص می‌کند، اجرای موفق را تأیید می‌کند و نام فایل را برای گزارش‌دهی و پیگیری وابستگی‌ها ثبت می‌کند. هیچ دستور قابل‌اجرایی نمی‌تواند بعد از Submit بیاید.

ساختار پایانی استاندارد

در یک فایل استاندارد آزرا، پایان معمولاً به این شکل است:

Delog{int, str, ref}
        Submit(:123.azr)

روند اجرا: ۱. Delog مشخص می‌کند کدام انواع داده پردازش و کدام نادیده گرفته می‌شوند. ۲. Submit اجرای فایل را نهایی و به‌طور رسمی می‌بندد.

نکته پایانی

Delog و Submit مکمل یکدیگرند و بلوک پایانی رسمی یک فایل AZR را تشکیل می‌دهند. اگر هرکدام از آن‌ها وجود نداشته باشد، سیستم فایل را ناقص یا نامعتبر در نظر می‌گیرد.


آزرا – مشخصات قانون جداکننده بلوک خط‌تیره (DBS)

سند رسمی قوانین زبان

مقدمه

قانون DBS (جداکننده بلوک خط‌تیره) یکی از اصول ساختاری اصلی زبان برنامه‌نویسی آزرا است. هدف اصلی آن اعمال نظم، افزایش خوانایی و امکان بررسی ساختاری بلوک‌های کد در زمان کامپایل است. استفاده صحیح از DBS به کامپایلر امکان می‌دهد دقیقاً تشخیص دهد هر بلوک کد از کجا شروع و کجا تمام می‌شود.

قانون اصلی

پس از هر بلوک چندخطی، باید یک خط جداکننده متشکل از فقط کاراکترهای خط‌تیره (-) وجود داشته باشد. تعداد خط‌تیره‌ها در آن خط باید دقیقاً برابر با تعداد خطوط بلوک قبلی باشد. این خط به‌عنوان «امضای بلوک» عمل می‌کند و یکپارچگی ساختاری و کامل بودن آن بخش از کد را تأیید می‌کند.

تعریف بلوک

بلوک به مجموعه‌ای از خطوط متوالی گفته می‌شود که در کنار هم یک واحد منطقی واحد را در برنامه تشکیل می‌دهند. نمونه‌های رایج بلوک در آزرا عبارتند از: چند تعریف متغیر پشت سر هم، چند دستور Extract که در کنار هم گروه‌بندی شده‌اند، مجموعه‌ای از عملیات مرتبط، یا هر بخشی از کد که برنامه‌نویس آن را یک واحد منسجم در نظر می‌گیرد. پس از هر بلوک، درج یک خط DBS الزامی است. حذف خط DBS منجر به خطای کامپایل می‌شود.

مثال‌ها

مثال ۱: بلوک دو خطی

-0x = Hello World-
        Extract(:Hello World)
        --

چون بلوک شامل ۲ خط است، خط جداکننده شامل ۲ خط‌تیره (--) است.

مثال ۲: بلوک سه خطی

-1y = 1Hello World-
        -2z = Hello 1 World-
        -3b = Hello World3-
        ---

بلوک شامل ۳ خط است، بنابراین جداکننده از ۳ خط‌تیره (---) تشکیل شده است.

اهمیت DBS

DBS صرفاً یک جداکننده بصری نیست—بلکه چند نقش ساختاری حیاتی در زبان آزرا ایفا می‌کند:

  1. یکپارچگی ساختار فایل: اگر حتی یک خط درون یک بلوک جابه‌جا، اضافه یا حذف شود، کامپایلر بلافاصله با مقایسه تعداد خط‌تیره‌ها این ناسازگاری را تشخیص می‌دهد.
  2. اعتبارسنجی ترتیب بلوک: از آنجا که طول بلوک و طول جداکننده به هم پیوسته‌اند، عملاً جعل، دستکاری یا تعریف ناقص یک بلوک بدون شناسایی غیرممکن می‌شود.

انواع خطای DBS

کامپایلر موظف است خطاهای مرتبط با DBS زیر را تشخیص داده و گزارش دهد:

  1. عدم تطابق DBS: تعداد خط‌تیره‌های جداکننده با تعداد خطوط بلوک قبلی مطابقت ندارد.
  2. عدم وجود DBS: بلوک تمام شده اما خط DBS قرار داده نشده است.
  3. DBS نامعتبر: خط جداکننده شامل کاراکترهایی غیر از خط‌تیره (-) است.

جمع‌بندی

قانون جداکننده بلوک خط‌تیره (DBS) موارد زیر را تضمین می‌کند: پایداری ساختاری کد آزرا، تشخیص خودکار خطاهای ویرایش یا کپی، و تأیید کامل بودن بلوک در زمان کامپایل. با الزام DBS در پایان هر بلوک چندخطی، آزرا اعتبارسنجی ساختاری قطعی و یکپارچگی دقیق کامپایل را حفظ می‌کند.


آزرا — مشخصات: کلاس، متد، تابع

تعریف رسمی ساختاری و رفتاری

۱. تعریف کلاس در آزرا

یک کلاس (Class) در آزرا برای تعریف یک نوع داده سفارشی استفاده می‌شود. یک کلاس شامل: نام کلاس، فهرستی از ویژگی‌ها، و بدنه‌های متد اختیاری است.

ساختار کلی:

Class(:ClassName | [prop1:type , prop2:type , …])

پرانتز اول نام کلاس را نگه می‌دارد. بلوک براکت شامل فهرست ویژگی‌ها است. پس از تعریف یک کلاس، باید یک خط DBS با دقیقاً ۱ خط‌تیره قرار گیرد، زیرا تعریف کلاس یک خط ساختاری واحد در نظر گرفته می‌شود.

مثال:

Class(:Person | [name:str , age:int])
        -

این ساختار یک کلاس Person با دو ویژگی می‌سازد: name و age.

۲. تعریف متد در آزرا

متد (Method) تابعی است که به یک کلاس مرتبط است و رفتار یک شیء را توصیف می‌کند.

ساختار کلی:

Method(:methodName) ->returnType
        -[variable definitions and operations]-
        turn(:value)

قوانین: یک متد همیشه باید با کلیدواژه Method شروع شود. returnType نوع خروجی متد را تعیین می‌کند. متغیرهای داخلی باید از قوانین تعریف متغیر آزرا پیروی کنند. خروجی باید با استفاده از turn تولید شود. متد باید با یک خط DBS پایان یابد که تعداد خط‌تیره‌های آن برابر تعداد خطوط داخلی است.

مثال:

Method(:greet) ->str
        -0msg = "Hello" + name-
        turn(:msg)
        --

(۲ خط داخلی ← --)

۳. تعریف تابع در آزرا

یک تابع (Func) قطعه کدی مستقل است که خارج از کلاس‌ها قرار دارد و اغلب برای منطق سطح‌بالا یا جریان اصلی برنامه استفاده می‌شود.

ساختار کلی:

Func(:functionName)
        -[variable definitions and operations]-
        turn(optional)

قوانین: یک تابع با Func شروع می‌شود. می‌تواند شامل متغیرها، عملیات‌ها، فراخوانی متد و Extract باشد. خروجی با turn تعریف می‌شود؛ می‌تواند خالی باشد. DBS پایانی باید تعداد خط‌تیره برابر با تعداد خطوط داخلی داشته باشد.

مثال:

Func(:main)
        -0p = Person("Amir" , 20)-
        -1result = p:greet()-
        Extract(:@1)
        turn()
        ----

(۴ خط داخلی ← ----)

۴. فراخوانی متد

متدها با استفاده از عملگر : فراخوانی می‌شوند. فرم کلی: object:method(). مثال: p:greet() — این دستور متد greet را روی شیء p اجرا می‌کند.

۵. نمونه‌سازی شیء

اشیاء با استفاده از نام کلاس به همراه آرگومان‌ها ساخته می‌شوند. ساختار کلی: variable = ClassName(arg1 , arg2 , …). مثال: -0p = Person("Amir" , 20)-

۶. دستور turn

دستور turn خروجی یک متد یا تابع را تعیین می‌کند. فرم‌ها: turn(:value) یا turn() (بدون خروجی).

۷. نقش DBS در کلاس‌ها، متدها و توابع

تمام تعاریف کلاس، متد و تابع باید با یک خط DBS پایان یابند. تعداد خط‌تیره‌ها باید دقیقاً با تعداد خطوط منطقی داخلی بلوک مطابقت داشته باشد. این امر اعتبارسنجی ساختاری، تشخیص خطوط گم‌شده، اضافی یا جابه‌جا‌شده، و یکپارچگی بلوک را در زمان کامپایل تضمین می‌کند.


مشخصات ساختار شرطی (is / reply / shoot / wall)

مروری کلی

در آزرا، تصمیم‌گیری منطقی از طریق یک زنجیره شرطی چهار بخشی متشکل از کلیدواژه‌های رزرو‌شده زیر انجام می‌شود: is، reply، shoot، wall(). این ترتیب هرگز نباید تغییر کند. هرگونه تغییر در ترتیب منجر به خطای نحوی می‌شود.

۱. is — شرط اصلی

ساختار شرطی همیشه با is شروع می‌شود. این کلیدواژه شرط منطقی اصلی را تعریف می‌کند. اگر شرط درست ارزیابی شود، بلوک آن اجرا می‌شود. پس از اجرا، کل زنجیره پایان می‌یابد. اگر نادرست باشد، اجرا به مرحله بعدی (reply) منتقل می‌شود.

۲. reply — شاخه(های) شرطی اضافی

صفر یا چند بخش reply می‌تواند پس از is بیاید. هر reply شرط مستقل خود را دارد. یک reply تنها در صورتی ارزیابی می‌شود که تمام شرط‌های قبلی نادرست بوده باشند. اگر درست باشد، بلوک آن اجرا شده و زنجیره پایان می‌یابد. اگر نادرست باشد، reply بعدی بررسی می‌شود.

۳. shoot — مسیر پیش‌فرض

اگر هیچ‌کدام از شرط‌های قبلی (is یا هر reply) درست نباشند، اجرا وارد بلوک shoot می‌شود. shoot به‌عنوان مسیر بازگشتی نهایی عمل می‌کند و همیشه پس از تمام reply ها ظاهر می‌شود.

۴. ()wall — پایان‌دهنده زنجیره شرطی

زنجیره شرطی باید با wall() پایان یابد. این دستور پایان رسمی بلوک شرطی را مشخص می‌کند و به کامپایلر اجازه می‌دهد ساختار را به‌درستی ببندد. اگر wall() وجود نداشته باشد، خطای نحوی رخ می‌دهد زیرا کامپایلر نمی‌تواند تشخیص دهد ساختار تصمیم‌گیری کجا پایان می‌یابد.

خلاصه جریان اجرا

  1. ارزیابی is ← اگر درست ← اجرا ← پایان
  2. در غیر این صورت، ارزیابی هر reply به‌ترتیب ← اولین reply درست ← اجرا ← پایان
  3. در غیر این صورت، اجرای shoot
  4. اجرای wall() برای بستن رسمی ساختار
  5. در نهایت، یک خط DBS باید بیاید

الزام DBS

پس از پایان زنجیره شرطی (بلافاصله بعد از wall())، یک خط DBS باید ظاهر شود. تعداد خط‌تیره‌ها باید با مجموع خطوط منطقی داخل بلوک شرطی مطابقت داشته باشد. عدم تطابق منجر به خطای DBS می‌شود.


تعریف رسمی ساختار شرطی

مشخصات ساختار شرطی — زبان آزرا

۱. اجزای ساختاری زنجیره شرطی

۱.۱ عناصر اصلی

ساختار شرطی در آزرا شامل چهار جزء است: is، reply، shoot، wall(). این چهار عنصر در کنار هم زنجیره کامل تصمیم‌گیری منطقی را تشکیل می‌دهند.

۱.۲ بخش "is"

کلیدواژه is اولین عنصر زنجیره شرطی است. شرط اصلی ساختار درون این بخش تعریف می‌شود. اگر شرط داخل is درست ارزیابی شود، بلوک متناظر آن اجرا می‌شود. پس از اجرای بلوک is، زنجیره شرطی بلافاصله پایان می‌یابد.

۱.۳ بخش "reply"

کلیدواژه reply برای تعریف شرط‌های اضافی پس از is استفاده می‌شود. هر reply تنها زمانی ارزیابی می‌شود که تمام شرط‌های قبلی نادرست بوده باشند. چندین بخش reply در یک زنجیره شرطی واحد مجاز است. بخش‌های reply دقیقاً به همان ترتیبی که نوشته شده‌اند ارزیابی می‌شوند. اولین reply که شرطش درست ارزیابی شود، بلوک خود را اجرا می‌کند و زنجیره در همان‌جا پایان می‌یابد.

۱.۴ بخش "shoot"

کلیدواژه shoot مسیر بازگشتی (پیش‌فرض) زنجیره شرطی را تعریف می‌کند. shoot تنها زمانی اجرا می‌شود که هیچ‌کدام از شرط‌های is یا هر reply درست نباشند. تعریف shoot اختیاری است. اگر shoot تعریف نشده باشد و هیچ شرطی درست ارزیابی نشود، زنجیره بدون اجرای هیچ بلوکی پایان می‌یابد. shoot دو فرم نحوی دارد: فرم کامل shoot() -> و فرم کوتاه shoot ->.

۱.۵ بخش "()wall"

کلیدواژه wall() پایان رسمی زنجیره شرطی را مشخص می‌کند. حضور wall() در انتهای ساختار شرطی الزامی است. حذف wall() منجر به خطای نحوی می‌شود.

۲. ترتیب عناصر درون ساختار شرطی

۲.۱ ترتیب معتبر و صحیح

isreply (صفر یا چند بار) ← shoot (اختیاری) ← wall()

۲.۲ قوانین ترتیب

ترتیب تعریف‌شده باید دقیقاً رعایت شود. هرگونه تغییر ترتیب، تکرار نامعتبر یا جایگذاری نادرست عناصر منجر به خطای نحوی می‌شود. تنها اولین شاخه‌ای که شرط آن درست ارزیابی شود اجرا می‌گردد. تمام شاخه‌های بعدی نادیده گرفته می‌شوند.

— پایان مشخصات نحو رمزی آزرا (AZRA Cipher Syntax) —
برای دانلود فایل PDF اینجا کلیک کنید