재 구현 생략


12

Emacs는 사실상 참조 구현의 역할을하는 C에서 elisp에 대한 인터프리터를 구현합니다. 다른 언어 (특히 Javascript)로 된 elisp의 다른 구현이 있습니까? elisp를 완전히 다시 구현하는 데 필요한 최소 기본 요소는 무엇입니까? 그렇게하는 데있어 가장 어려운 점은 무엇입니까 (예 : 동적 범위 지정)?


좋은 출발점은 다음과 같습니다. en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours 계획과 elisp에는 차이점이 있지만 위의 내용은 필요한 기본 사항을 이해하기에 좋은 시작이라고 생각합니다.
Renan Ranelli

답변:


5

Guile Emacs 는 최초의 Emacs Lisp 인터프리터가 최근 libguile로 대체 된 Emacs 구현입니다. 여전히 상호 운용성 문제가 있지만 (Guile과 Emacs는 예를 들어 문자열에 대해 다른 아이디어를 가지고 있지만) 기존 Emacs Lisp 코드는 이미 사용할 수 있습니다 (성능 회귀는 다소 위축되지만).

또는 nicferrier 's Ejit가 있습니다. README는 Emacs에서만 컨텍스트를 만드는 특정한 것들과 Emacs Lisp를 Javascript로 컴파일하기 전에 최소한의 프리미티브 세트를 선택하는 방법과 같은 어려움을 설명합니다. 따라서 실제로 다시 구현하는 것은 아니지만 후자의 질문에 대답하는 데 도움이 될 수 있습니다.


참고 사항 : Ejit는 JS로 컴파일되며 JS로 작성되지 않습니다.
Malabarba

예, 그 단락은 JS로 컴파일하기 전에 가능한 한 많이 인식하고 단순화하는 것이기 때문에 최소한의 기본 요소가 무엇인지에 대한 질문에 대한 응답으로 의도되었습니다. 어려움과 같은 어려움 (버퍼와 그 속성이 덜 이해되는 것)도 설명되어 있습니다.
wasamasa

2
나는 당신이 Guile 자체를 가리키고 싶다고 생각합니다. 중요한 유스 케이스 인 Guile Emacs 프로젝트는 여기서 더 많은 참고 사항입니다.
phils
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.