مدل مفهومی و ساختار اصلی زبان AZRA

Metadata فایل، سیستم هدف، و دستورات اصلی

۱. Metadata فایل

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

سیستمی که قرار است کد روی آن اجرا شود. این سیستم دو حالت دارد:

  • ۱- سیستمی که کد در آن نوشته می‌شود
  • ۲- دستگاه مخصوصی که برای اجرای زبان ساخته شده است

نام فایل (Filename)

فایلی که کد داخل آن قرار می‌گیرد فقط با عدد نام‌گذاری می‌شود.

مثال:

1.azr
561.azr

فایل‌های وابسته (Dependencies)

این فایل می‌تواند به چه فایل‌هایی متصل شود؟

فقط به فایل‌هایی که با زبان خود (AZR) نوشته شده‌اند.

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

در نتیجه این فایل فقط با فایل‌های هم‌جنس خود ارتباط دارد.

۲. اطلاعات اضافی قبل از شروع کد

هر اطلاعاتی که باید قبل از شروع کد مشخص شود، شامل:

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

Imvoke

در ابتدای هر فایل، دستور Imvoke قرار می‌گیرد.

این دستور برای فراخوانی سیستم اجرایی و مشخص‌کردن سطح دسترسی یا نسخهٔ سیستم است.

نمونه:

Imvoke(:"system/64/user.001.alpha")

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

بدون حضور Imvoke، فایل مجاز به اجرا نیست و سیستم آن را رد می‌کند.

World-type

دستور World-type برای تعیین نوع "جهان اجرایی" و مشخصات محیط استفاده می‌شود.

به عنوان مثال:

World-type(:Azra | [ip = 1234])

این خط مشخص می‌کند که کد در «جهان Azra» و با مشخصات محیط مشخص‌شده (مثلاً IP یا شناسهٔ شبکه) اجرا می‌شود.

۳. نکتهٔ نحوی مهم

در AZRA، نام متغیرها (Variable Names) به هیچ عنوان نباید فاصله داشته باشند.

نمونهٔ غلط:

-0amir reza = 2-

این خط Syntax Error است چون بین amir و reza فاصله وجود دارد.

روش درست

برای جدا کردن کلمه‌ها داخل نام متغیر، باید از علامت زیر استفاده شود:

  • _

پس نسخهٔ صحیح مثال:

-0amir_reza = 2-

یا این نسخه هم مجاز است:

-0amir-reza = 2-

نکته: در world-type که _ استفاده نشد به این دلیل است که این یک دستور اصلی است و ربطی به گرامر سینتکس Azra ندارد.

۴. اطلاعات اضافی آخر کد

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

این بخش معمولاً شامل دو دستور نهایی است:

  • Delog{ ... }
  • Submit

Delog

فرمت کلی:

Delog{int, str, ...}

این دستور نشان می‌دهد که چه نوع داده‌هایی از متغیرهای فایل در فرایند کامپایل باید فراخوانی و شناسایی شوند.

کارکرد:

  • لیستی از نوع متغیرهایی (مثلاً int, str, bool, …) را که برنامه باید به آن‌ها توجه کند مشخص می‌کند.
  • به کامپایلر اطلاع می‌دهد: اگر متغیرهایی غیر از این نوع‌ها در فایل مشاهده شد، نادیده بگیر (ignore).
  • یعنی فقط متغیرهای ذکرشده درون {} در پردازش نهایی لحاظ شوند.

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

نمونه:

Delog{int, str}

به معنی آن است که فقط متغیرهای عددی و رشته‌ای اهمیت دارند و سایر نوع‌ها (مثلاً bool یا ref) نادیده گرفته می‌شوند.

Submit

فرمت کلی:

Submit(:<filename>)

مثلاً:

Submit(:1.azr)

این دستور در آخر فایل قرار می‌گیرد و وظیفه‌اش اعلام پایان کد و ثبت رسمی فایل است.

کارکرد:

  • به سیستم می‌گوید فایل با موفقیت اجرا و آمادهٔ ثبت است.
  • نام فایل را برای گزارش و Dependencyها ثبت می‌کند.
  • پس از Submit دیگر هیچ بخش اجرایی نباید نوشته شود.

ترتیب اجرای بخش انتهایی

در ساختار استاندارد فایل AZRA، انتهای کد معمولاً به این شکل است:

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

در این حالت:

  1. Delog تعیین می‌کند چه داده‌هایی پردازش و چه داده‌هایی نادیده گرفته شوند.
  2. Submit فایل را ثبت و اجرای نهایی را پایان می‌دهد.

این دو دستور، مکمل هم و بخش «خاتمه‌دهندهٔ رسمی فایل AZR» هستند.

نبود هر دوی آن‌ها باعث می‌شود سیستم، اجرای فایل را ناقص یا نامعتبر در نظر بگیرد.