LISP와 유사한 스크립팅 언어를 만들었습니다.
16371 단어 javascriptprogramminglisptranspiled
왜요?
왜 안돼?
대부분의 스크립팅 언어(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")
Reference
이 문제에 관하여(LISP와 유사한 스크립팅 언어를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theharshsingh/so-i-created-a-lisp-like-language-40bg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)