Syntax Flexibility

مرحبا

نتحدث في هذه المقالة عن مميزات لغة البرمجة Ring،تلك المميزات التي جعلتها تتفوق علي غيرها-ووصلت بتلك المميزات الي ترتيب متقدم ضمن اول 100 لغة علي مستوي العالم  في الترتيب العالمي  ونأمل لها الترتيب الأول مستقبلا باذن الله.

مميزات لغة البرمجة Ring

تحدثنا في مقالات سابقة عن الكثير من المميزات الموجودة في اللغة. واليوم نتحدث عن مميزات أخري للغة تفوقت بها عن اللغات الأخرى وجعلتها أكثر مرونة لكل من المبرمج والمستخدم العادي بل وكل مستخدم من أي بلد كان، حتى لا يشعر بالاختلاف والصعوبة في التعلم.

Syntax Flexibility

تحتوي اللغة على “Styles” تتشابه مع اللغات الأخرى حتى تكون طبيعية مع المبرمجين، و”Styles” أخري سوف نذكرها اليوم في مدونتنا، وكذلك تستطيع عمل مترجم للغات أخري بكل سهولة للكلمات وكذلك المعاملات البرمجية.

Types of Styles

سوف اذكر ال “Styles” مع مثال واحد وهو: الامر الخاص بالطباعة على الشاشة.

1-ال “Styles” الطبيعي للمستخدم العربي مثل See/Give

2-ال “Styles” الطبيعي للمستخدم الانجليزي مثل Put/Get

3-ال “Styles” الطبيعي للمبرمج مثل () print مع استخدام تلك المكتبة stdlib.ring

1-Styles of Control Structures

1-عن طريق استخدام كلمات خاصة” Special Keywords ” لإنهاء جمل التحكم “control structure”:

  • If statement
  • For loop
  • Switch
  • While
  • Try-Catch

Special Keywords

  • كلمة ok لإنهاء جملة if الشرطية
  • كلمة Off لإنهاء جملة Switch
  • كلمة End لإنهاء While /Try-Catch/For

2-عن طريق استخدام كلمة “ End ” لإنهاء جمل التحكم “control structure“.

ملاحظات:

  • في جملة “if” الشرطية: يمكنك استبدال “but” ب “elseif
  • وفي جملة “Switch” يمكنك استخدام “else” بدل “other“& “Case“بدلا من “On

3-عن طريق استخدام الاقواس” braces {}

يمكنك استخدام الاقواس {} لإنهاء جمل التحكم المختلفة بدلا من استخدام “end”.

مثال1:

if statement#
using "special Keywords" ,using "ok" to end#
x=7
if x =1
see "True"+nl
but x=0
see "False"+nl
else
see "Error"+nl
ok
"Using "elseif" as "but#
x=1
if x =1
see "True"+nl
elseif x=0
see "False"+nl
else
see "Error"+nl
ok
"Using "{}" as "special Keyword#
x=0
}if x =1
see "True"+nl
elseif x=0
see "False"+nl
else
see "Error"+nl
{

مثال2:

switch statement#
using "put/Get" and "off" to end switch#
"put "Enter the number
Get num
Switch num
on 1
see "True"+nl
on 0
see "False"+nl
other
see "Error"+nl
off
===========================#
"using "see/Get" and "case as on" , I mix between styles "on,case#
"put "Enter the number
Get $num
Switch $num
case 1
see "True"+nl
on 0
see "False"+nl
other
see "Error"+nl
off
===========================#

using "see/Get" and "case as on" ,"else as other", braces "{}" to end switch,I mix between styles#

"see "Enter the number
Get @num
}Switch @num
case 1
see "True"+nl
on 0
see "False"+nl
else
see "Error"+nl
{

مثال3:

for and while statements#
"using special keyword "next#
for x=1 to 5
see x+nl
next
==============#
"using "end" as "next#
for x=5 to 1 step -1
see x+nl
end
==============#
"using "{}" to end as "next , end#
}for x=1 to 5 step 1
see x+nl
{
"using "end#
x=0
while x< 5
see x+nl
++x
end
==============#
#using "{}" to end
x=0
}while x< 5
see x+nl
++x
{

 

2-Styles of Functions and Object-Oriented

1-عن طريق استخدام كلمات خاصةSpecial Keywords

  • نستخدم endpackage/endclass/endfunc لإنهاء Packages/Classes/Functions
  • نستخدم كلمة def/func لتعريف الدالة.

ملاحظة: يمكنك استخدام الاقواس () حول ال parameters الخاصة بالدالة(اختيارية)

2-عن طريق استخدام كلمة “ End “لإنهاء Packages/Classes/Functions

3-عن طريق استخدام الاقواس” braces {}

  • يمكنك استخدام الاقواس {} لتحديد بداية ونهاية كل من Packages/Classes/Functions
  • استخدام الاقواس {} لإدخال attributes، methods لل object

ملاحظة

  • يمكنك التنوع في ال Styles في نفس الملف.
  • وكذلك يمكنك عمل ملف يحتوي على Styles معينه، مع Styles مختلفة أخري في المشروع الواحد.

مثال1:

import numbers
}o1=new opr
num1=10
num2=5
 ()add() mul() sub
{
}package numbers
Class opr
num1 num2    
func add    
result=num1+num2        
see result+nl        
end    
func mul    
result=num1+num2       
see result+nl       
endfunc    
}def sub    
result=num1-num2       
see result+nl       
{    
endclass
{

Change Language Keywords and Operators

لا تقييد في تعلم اللغة، فكما أنها تتيح لك بعض الكلمات الخاصة في ال Styles، فهي تتيح لك أيضا حرية اختيار الكلمات البرمجية مثل While، For، If، …. الخ وبالتالي في تسمح لك بعمل مترجم لكل اللغات ولكل مستخدم من أي مكان.

  • نستطيع أن نغير الكلمات من خلال الامر ChangeRingKeyword.
  • نستطيع أن نغير المعاملات من خلال الامر ChangeRingOperator.
<ChangeRingKeyword <oldkeyword> <newkeyword
<ChangeRingOperator <oldkeyword> <newkeyword

ملحوظة:

  • يمكنك تغيير الكلمات والمعاملات أثناء التشغيل من خلال الامر ()Eval
  • ينبغي علي فريق العمل أن يتفقوا علي كلمات ومعاملات موحدة في المشروع.

مثال توضيحي:

3.jpg

Load Syntax Files

يمكنك عمل ملف يحتوي على مجموعة من الكلمات والمعاملات الجديدة  ثم استدعاء هذا الملف في أي مشروع  وذلك عن طريق الامر LoadSyntax

"LoadSyntax      "syntaxfile.ring

ملحوظة:

  • ينبغي عند عمل هذا الملف لتغيير ال “Syntax”الا يحتوي الا علي تلك الأوامر الخاصة بتغغير الكلمات والمعاملات.

مثال:

في هذا المثال قد أنشأت مترجم لجمل التحكم في اللغة باللغة العربية.

تستطيع الاطلاع علي هذا الملف  بالضغط  هنا

وسميت هذا الملف باسم “SyntaxFile” بامتداد اللغة “ring.” ثم استدعيت هذا الملف في مشروع أخر.

"Loadsyntax "SyntaxFile.ring
x=0
طالما x<10
اطبع x+nl
x++
انهاء
=================#
x=1 y=1
اذاكان x=1 او y=0
اطبع "True"
واذاكان x=0 او y=0
اطبع "False"
غير ذلك
اطبع"خطأ"
حسنا

وهناك الكثير من المميزات ذكرناها في الشرح في مقالات سابقة ومنها:

  • اللغة غير حساسة لحالة الاحرف “Capital or Small”
  • تستطيع عمل تعليق عن طريق // أو # وكذلك عن طريق /* */ لأكثر من سطر.
  • اللغة لا تحتاج الي عمل فاصلة “;” للفصل بين السطور البرمجية ولا تحتاج لعمل Enter,Tab
  • اللغة Lexical Scoping، Weakly Typed
  • يمكنك استخدام المتغيرات دون قيود كما في بعض اللغات تستخدم علامات مثل @، $ قبل المتغير.
  • وكذلك يمكنك استخدام علامة “+” للدمج بين السلسة الحرفية والرقمية وتقوم اللغة تلقائيا بالتحويل من رقمي الي حرفي والعكس طبقا لشكل الكتابة كما ذكرنا من قبل.

وقد وصلنا الي نهاية المقالة والي اللقاء

للاطلاع علي  المقالات الاخري للغة من هذاالرابط    https://goo.gl/ZL39jc

موقع اللغة http://ring-lang.net

Advertisements

فكرة واحدة على ”Syntax Flexibility

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s