هناك جافا سكريبت - شيء رائع. وهي جميلة في معظمها لأن أدوات تصحيح الأخطاء وأدوات التصحيح مدمجة في كل متصفح. بدون مصحح و مفتش شجرة DOM ، كان من الصعب تطوير أي شيء في JavaScript.
لذلك قررت أن أصاب Lisp الخاص بي ، ولكن مع مصحح جيد. أخذت قطعة صغيرة وبسيطة وأعيدت هيكلتها بنسبة 99٪. لقد قمت بشحذها عن طريق التنفيذ خطوة بخطوة وقمت بإنشاء IDE الخاص بي ، وهو بسيط ولكنه يعمل.
والنتيجة هي ما يلي.

تحولت اللغة نفسها إلى مزيج من Lisp و JavaScript ، لأنني كنت أعرف Lisp بشكل سيئ ، وكانت JavaScript جيدة :)
مزيد من أمثلة التعليمات البرمجية.
(alert document.location.href)
(setq x "ok!")
(alert (x.substring 0 2))
(setq x (prompt "Value of X:"))
(if (x == null)
(setq x "(none)")
(alert (+ "x = " x))
:else
(alert (+ "x = " x))
)
(setq i 0)
(while (i < 10)
(console.log i)
(++ i)
)
(x < 2)
((x < 2) && (x > -1))
((x < 2) || (x > -1))
(x + 1 2 3)
(x ++)
(++ x y z)
(setq obj1 (new Object))
(setq obj1.a 123 obj1.b "abc")
(setq name "c")
(setq obj1.@name ())
(setq obj1.@name.0 111)
(setq obj1.@name.1 222)
(setq obj1.@name.2 333)
(alert (obj1.c.join " "))
(defclass
:extends Object
:instvars "_ "
:classvars ""
:constructor init
)
(setq . 0)
(defmeth .init ( ) (
(setq this. )
(setq this._ )
(. ++)
))
(defmeth . () (
(window.alert (+ " №" this. " " this._ " !"))
))
(setq 1 (new 9 " "))
(1.)
(alert (+ " : " .))
((lambda (x y) (alert (x + y)) "a" "b")
(defun f1 (x) (alert (x + " - ok!")))
(f1 "f1")
((new Function "msg" "alert(msg);") document.title)
(catch (a.b))
في الواقع ، مشروع github نفسه موجود هنا: https://github.com/SaemonZixel/littlelisp.js
في النهاية ، سأقول أن الشفرة تجريبية حتى الآن (اعتبارًا من 17 مايو 2020). هناك العديد من الأخطاء حتى الآن وأجدها ببطء وأصححها :(
ولكن بعد ذلك تمكن المصحح تقريبًا كما هو الحال في بيئات تطوير Smalltalk! :)
يمكنك إحضار الرمز مباشرة في المصحح. حدد أي جزء رمز وعرض النتيجة أو تشغيل مصحح أخطاء متداخلة.