LISP와 유사한 스크립팅 언어를 만들었습니다.

그래서 어제 저는 "LispLike"(Creativity run in my blood)이라는 Lisp와 유사한 언어의 소스 코드를 Javascript로 변환하여 공개했습니다.

왜요?



왜 안돼?
대부분의 스크립팅 언어(JavaScript 자체 포함)의 논리를 더 잘 이해하는 데 도움이 되었습니다. 이것은 "재귀"를 더 잘 이해하는 데 도움이 되었습니다. 전반적으로 그것은 좋은 정신 운동이었습니다.

언어



이 언어는 Javascript와 Lisp의 조합입니다. 구문은 Lisp와 유사하지만 Javascript와 유사한 연산자 및 점 표기법을 사용합니다. Javascript로 변환되어 점 표기법을 사용하기 때문에 Javascript에서 제공하는 메서드와 클래스를 사용할 수 있습니다. 좋은 점은 코드를 ".lisp"확장자로 저장하여 Lisp 코드 강조 표시를 사용할 수 있다는 것입니다. 그것을 변환하려면 "transpiler.js"모듈에서 "lispLike"함수를 가져오고 LispLike 코드를 문자열로 전달하면 변환된 코드가 출력됩니다.

다음은 오래된 "Hello World"예입니다.

( ;; Progam Begins
  (print "Hello world") ;; its how you do it in LispLike
) ;; Program Ends


자바스크립트 코드:

console.log("Hello world")


기본 수학

(
  (print (+ 1 2 (- 5 6)))
)


자바스크립트 코드:

console.log(1 + 2 + 5 - 6)


변수

(
  (let name "World")
  (print (+ "Hello " name)) ;; prints "Hello World"
  (= name "Universe")
  (print (+ "Hello " name)) ;; prints "Hello Universe"
)


자바스크립트 코드:

let name = "World"

console.log("Hello " + name)
name = "Universe"
console.log("Hello " + name)


기능

(
 (defun greet (name) 
   (do
     (print (+ "Hello " name))
     (return "something")
   )
 )

 (greet "World") ;; prints "Hello World"
 (greet "Universe") ;; prints "Hello Universe"
)


자바스크립트 코드:

function greet (name) {
    console.log("Hello " + name)
    return "something"
}

greet("World")
greet("Universe")


배열 및 Foreach 루프

(
  (let names (array "Ram" "Shyam" "Mohan"))
  (loop names (key value)
    (do
      (print (+ "Hello " value))
    )
  )
)

;; output
;; Hello Ram
;; Hello Shyam
;; Hello Mohan


자바 스크립트 코드:

let names = ["Ram","Shyam","Mohan"]

names.forEach((value, key) => {
  console.log("Hello " + value)
})


동안 루프
foreach 루프 외에도 while 루프도 사용할 수 있습니다. "for"루프는 아직 사용할 수 없습니다.

(
  ;; it prints numbers from 1 to 10
  (let i 1)
  (while (<= i 10)
    (do
      (print i)
      (+= i 1)
    )
  )
)


자바스크립트 코드:

let i = 1

while(i <= 10) {
  console.log(i)
  i += 1
}


If-Else 문

(
  (let age 18)

  (if (< age 18) ;; condition
    (do ;; if block
      (print "You are below 18 years of age")
    )
    (   ;; else block
      (print "You age is 18 years or above")
    )
  )
)


자바스크립트 코드:

let age = 18

if(age < 18) {
  console.log("You are below 18 years of age")
} else {
  console.log("You age is 18 years or above")
}




(
  (defun Student (name rollno cls) 
    (do
      (= this.name name)
      (= this.rollno rollno)
      (= this.cls cls)

      (= this.greet (defun (name)
        (do (print (+ "Hello " name "!"))) 
      ))
    )
  )

  (let john (new Student ("John Doe" 1234 "High school")))
  (print john.name) ;; John Doe
  (john.greet "Joe") ;; Hello Joe!
)


로 변환됩니다.

function Student (name,rollno,cls) {
    this.name = name
    this.rollno = rollno
    this.cls = cls
    this.greet = function(name) {
        console.log("Hello " + name + "!")
    }

}

let john = new Student("John Doe",1234,"High school")

console.log(john.name)
john.greet("Joe")

좋은 웹페이지 즐겨찾기