مشخصات کامل زبان برنامه‌نویسی AZRA

قوانین ساختاری، سینتکس، متادیتا، سیستم کلاس، و سیستم شرطی

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

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

فرمت کلی به شکل زیر است:

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

خط تیرهٔ ابتدایی و انتهایی نقش «مرز» دارند و نشان می‌دهند که تعریف متغیر از کجا شروع و کجا پایان می‌یابد. اگر هرکدام از این دو Dash حذف شود، سیستم نمی‌تواند تعریف را تشخیص دهد و Syntax Error می‌دهد.

۲. قوانین پایه (Basic Rules)

Rule 1 — الزام Dash در ابتدای خط

هر متغیر باید حتماً با یک Dash در ابتدای خط شروع شود. این موضوع برای جلوگیری از اشتباهات و تشخیص درست ساختار کد ضروری است.

مثلاً:

-0x = 2-

درست است، اما اگر Dash حذف شود:

0x = 2

این دیگر تعریف متغیر نیست و سیستم آن را رد می‌کند.

Rule 2 — شماره‌گذاری اجباری متغیر

هر متغیر باید یک شمارهٔ مخصوص به خودش داشته باشد که دقیقاً قبل از نام متغیر می‌آید. این شماره از صفر شروع می‌شود و هر متغیر جدید باید یکی بیشتر از قبلی باشد. مثلاً سومین متغیری که می‌نویسید باید شمارهٔ ۲ داشته باشد.

-2msg = Hello-

نکتهٔ مهم: اعداد اعشاری (float) در مقدارگذاری شامل این قانون نمی‌شوند و مشکلی ندارند.

Rule 3 — جلوگیری از اعداد اضافی در ابتدای نام

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

مثل:

-42A = Hello-

این کاملاً اشتباه است.

Rule 4 — استفاده از عدد داخل نام (بعد از حرف)

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

مثل:

-1Am1r = 10-
-2x2 = 5-

Rule 5 — الزام Dash پایانی

همان‌طور که در ابتدای متغیر باید Dash باشد، در انتهای تعریف هم وجود Dash ضروری است. اگر پایان تعریف متغیر بسته نشود، سیستم فکر می‌کند تعریف ادامه دارد و نتیجه‌اش خطای «متغیر باز مانده» است.

-3b = Hello World3-

درست است، اما اگر Dash آخر حذف شود:

-3b = Hello World3

این دستور ناقص محسوب می‌شود.

۳. قوانین مربوط به رشته‌ها (String Rules)

Rule 6 — رشته‌های کوتاه‌تر از ۵۰ کاراکتر

اگر رشته‌ای که می‌نویسید کمتر از ۵۰ کاراکتر باشد، می‌توانید آن را بدون علامت " " هم بنویسید.

-1y = Hello World-
-2z = Hi-

بدون مشکل پذیرفته می‌شوند.

Rule 7 — رشته‌های ۵۰ کاراکتر یا بیشتر

هر رشته‌ای که طولش به ۵۰ کاراکتر برسد یا بیشتر شود، باید حتماً داخل " " قرار بگیرد تا سیستم آن را به عنوان string دقیقا تشخیص دهد.

مثال:

-3longMsg = "This is a long text with more than fifty characters..."-

Rule 8 — ممنوعیت استفاده از ' '

قرار دادن رشته داخل تک‌کوتیشن (' ') باعث Syntax Error می‌شود. سیستم AZRA تک‌کوتیشن را به رسمیت نمی‌شناسد.

مثل:

-1x = 'Hello'-

این دستور اشتباه است.

Rule 9 — رفتار سیستم با اعداد داخل رشته

اگر رشته‌ای در ابتدا یا انتهای خودش ترکیب عدد+حرف داشته باشد، باز هم رشته محسوب می‌شود و به عنوان string در نظر گرفته می‌شود.

نمونه‌ها:

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

هر سه صحیح هستند.

۴. قوانین مقداردهی (Value Rules)

Rule 10 — روش تشخیص نوع مقدار

سیستم به شکل زیر تشخیص می‌دهد مقدار چیست:

  • مقدار بدون quote و بدون حرف → عدد
  • مقدار داخل " " → رشته
  • مقدار شامل حرف و عدد → رشته
  • مقدار شامل @ یا ref: → symbol / reference

این تشخیص خودکار به خوانایی و سرعت پردازش کمک می‌کند.

Rule 11 — قوانین مربوط به Reference / Symbol

مقادیر یا اشاره‌گرهایی مثل @2 یک مقدار مستقل نیستند. به همین دلیل برای استفاده از آن‌ها باید داخل پرانتز نوشته شوند، معمولاً در دستورهایی مثل Extract.

مثال درست:

Extract(:@2)

و مثال اشتباه:

Extract : @2

Rule 12 — رشته‌های چندکلمه‌ای

حتی اگر رشته کمتر از ۵۰ کاراکتر باشد، ولی شامل چند کلمه باشد (مثلاً دو یا سه کلمه)، بهتر است داخل " " نوشته شود تا خوانایی فایل بالاتر برود.

مثال:

-0name = "Amir Hosseini"-

۵. قوانین عمومی و تکمیلی (Extended Rules)

Rule 13 — فاصله در اطراف '='

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

مثال درست:

-0x = 2-
-0x  =  2 -
-0x=2-

Rule 14 — یک تعریف در یک خط

تعریف متغیر فقط باید در یک خط نوشته شود. نوشتن چند متغیر در یک خط، یا شکستن تعریف در چند خط، ممنوع است.

Rule 15 — ممنوعیت پرش در شماره‌گذاری

شماره‌گذاری باید پشت‌سرهم و بدون پرش باشد.

مثال غلط:

-0x = 5-
-2y = 10-

چون شمارهٔ ۱ جا افتاده.

Rule 16 — ممنوعیت شمارهٔ منفی

شمارهٔ متغیر باید یک عدد غیرمنفی باشد. اعداد منفی قابل قبول نیستند.

--1x = 5-

این کاملاً اشتباه است.

Rule 17 — نام متغیر نباید با عدد شروع شود

بعد از شمارهٔ متغیر، نام فقط باید با حرف آغاز شود.

مثال غلط:

-0 1name = 2-
-3 12x = ok-

Rule 18 — کاراکترهای مجاز در نام متغیر

نام متغیر فقط می‌تواند شامل موارد زیر باشد:

  • حروف A–Z
  • حروف a–z
  • عدد، آن هم فقط بعد از حرف
  • کاراکتر _

هیچ علامت دیگری مجاز نیست.

Rule 19 — مقداردهی رشته‌ای که با عدد شروع می‌شود

اگر مقدار رشته با عدد شروع شود، باید یا داخل " " قرار بگیرد یا بعد از عدد یک حرف بیاید تا string تشخیص داده شود.

مثال درست:

-0a = "1Hello"-
-1code = 1xTest-

و مثال غلط:

-0a = 1-

چون این مقدار دیگر رشته نیست و یک literal عددی است.

Rule 20 — رفتار Symbol در مقداردهی متغیر

Symbol به تنهایی مقدار محسوب نمی‌شود و نمی‌توان آن را مستقیماً به یک متغیر نسبت داد.

مثلاً:

-0ref = @2-

اشتباه است، چون این مقدار باید با ساختارهای مخصوص خودش (مثل Extract) فراخوانی شود.

Extract(:@n)