Click here to see English version...

قانون Dash Block Separator (DBS) – مشخصات رسمی زبان AZRA

AZRA – Dash Block Separator (DBS) Rule Specification

۱. مقدمه

قانون DBS (Dash Block Separator) یکی از عناصر اصلی ساختاردهی در زبان برنامه‌نویسی AZRA است. هدف از این قانون ایجاد نظم، افزایش خوانایی، و فراهم‌کردن امکان تأیید ساختاری بلاک‌ها در زمان کامپایل است. استفاده صحیح از DBS باعث می‌شود کامپایلر بتواند دقیقاً تشخیص دهد هر بخش از کد کجا شروع می‌شود و کجا پایان می‌یابد.

۲. اصل قانون

پس از پایان هر بلاک چندخطی، باید یک خط جداکننده قرار داده شود که فقط از کاراکتر «-» تشکیل شده باشد.

تعداد دش‌ها باید دقیقاً برابر با تعداد خطوط بلاکی باشد که پیش از آن قرار گرفته است.

این خط در واقع نقش «امضای بلاک» را دارد و نشان‌دهندهٔ صحت و کامل‌بودن آن بخش از کد است.

۳. تعریف بلاک

«بلاک» مجموعه‌ای از خطوط متوالی است که از دید نویسندهٔ برنامه، یک واحد منطقی را تشکیل می‌دهد. نمونه‌های رایج بلاک در AZRA شامل موارد زیر هستند:

  • چند تعریف متغیر پشت سر هم
  • چند دستور Extract
  • چند عملیات مرتبط
  • هر بخشی که نویسنده آن را یک واحد منسجم در نظر بگیرد

پس از پایان هر بلاک، قرار دادن خط DBS الزامی است. نبودن DBS خطا محسوب می‌شود.

۴. مثال‌ها

مثال ۱: بلاک ۲ خطی

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

در این مثال:

  • بلاک شامل ۲ خط است
  • خط جداکننده شامل ۲ دش (--) است
  • تعداد دش‌ها با تعداد خطوط بلاک مطابقت دارد

مثال ۲: بلاک ۳ خطی

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

در این مثال:

  • بلاک شامل ۳ خط است
  • خط جداکننده شامل ۳ دش (---) است
  • تعداد دش‌ها با تعداد خطوط بلاک مطابقت دارد

۵. اهمیت DBS

DBS فقط یک جداکنندهٔ ظاهری نیست، بلکه نقش‌های حیاتی زیر را در ساختار AZRA ایفا می‌کند:

۱. حفاظت از ساختار فایل

اگر حتی یک خط در بلاک جابه‌جا، حذف یا اضافه شود، کامپایلر از طریق اختلاف تعداد دش‌ها فوراً متوجه می‌شود.

۲. تضمین صحت و ترتیب بلاک‌ها

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

۶. خطاهای مربوط به DBS

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

DBS-Mismatch

تعداد دش‌ها با تعداد واقعی خطوط بلاک مطابقت ندارد.

مثال:

-0x = Hello-
-1y = World-
--
// خطا: بلاک ۲ خطی است اما فقط ۲ دش وجود دارد (باید ۲ دش باشد)
// در این مثال درست است، اما اگر ۳ دش بود خطا بود

DBS-Missing

بلاک پایان یافته، اما خط DBS قرار داده نشده است.

مثال:

-0x = Hello-
-1y = World-
// خطا: خط جداکننده وجود ندارد

DBS-Invalid

خط جداکننده شامل کاراکتری غیر از دش است.

مثال:

-0x = Hello-
-1y = World-
--x
// خطا: کاراکتر 'x' در خط جداکننده مجاز نیست