2011-02-05 6 views
4

AspectJ는 새로운 개념으로 자바 언어를 확장합니다.동시에 여러 언어를 확장하는 프로그래밍 언어가 있습니까? [Question Edited]

동시에 여러 언어를 확장하는 다른 언어가 있습니까? 그렇다면 예를 들어주십시오.

.


편집 : 나는 충분히 명확하지 않았다. Java 프로그램은 여전히 ​​올바른 AspectJ 프로그램으로 간주됩니다.

나는 연장의이 종류를 찾고 있어요 :

BC 있지만 B 또는 C로 작성된 프로그램을 확장하는 언어 A는 여전히이 A의 유효한 프로그램입니다.

+1

대부분의 언어는 특별히 하나 또는 여러 언어를 확장하지 않습니다. 이들은 여러 출처에서 영감을 얻지 만, 이들 모두와는 완전히 다른 독립된 언어로 간주됩니다. – delnan

+0

사실, 대부분합니다. 적어도 하나 이상 존재한다는 것을 알아야합니다. –

+0

내 대답 업데이트 –

답변

2

PFront (기본 언어는 MBase) (직접 Csharp와 유사한 임베디드 DSL을 통해) .NET CLR,이 CLR에서 실행되는 Lisp 및 LLVM IR (효과적으로 모든 대상 플랫폼 지원 LLVM에 의해) C와 같은 임베디드 DSL을 통해.

이 프레임 워크에서 작성된 언어는 기본 플랫폼 또는 언어를 대상으로하며 다른 언어로 확장 될 수 있습니다. 즉, 언어는 하나 이상의 이미 정의 된 언어로 확장되는 모든 새로운 언어로 계층 구조를 형성합니다.

업데이트 : 업데이트 된 질문을 반영하기 위해 - pfront에서 언어를 확장하는 두 가지 방법이 있습니다. 첫째, 새로운 구성과 형식을 추가하여 언어를 분명하게 확장하는 것입니다. 두 번째는 대상 언어의 하위 집합 만 허용하는 언어의 제한된 수퍼 집합을 구현하는 것입니다. 두 가지 방법이 모두 사용됩니다. 예를 들어 대부분의 Csharp 프로그램은 Lisp 프로그램뿐만 아니라 PFront의 유효한 하위 집합입니다.

+0

Lisp 프로그램과 C# 프로그램이 모두 유효한 PFront 프로그램이되도록 C# 및 Lisp 구성 요소를 동시에 ** 확장하여 PFront를 확장 할 수 있습니까? –

+0

예, 언어를 혼합 할 수 있습니다. 그것은 모든 PEG 분석 엔진의 멋진 속성입니다. –

1

Clojure은 JVM에서 실행되는 Lisp 언어입니다. JRuby은 JVM에서 실행되는 Ruby 구현입니다. Scala은 JVM에서 실행되는 아주 멋진 언어입니다. 모두는 기존 Java API를 호출 할 수 있으므로 Java 언어를 '확장'한다고 생각할 수 있습니다.

0

Fantom은 JVM을 대상으로하는 (따라서 "Java 확장"이라고도 함) CLR (따라서 "C# 확장"이라고도 함) 및 JavaScript to, well, "JavaScript 확장").

Mercury은 C를 대상으로하고 (따라서 "C 확장"이라고 할 수 있음) Java (C#은 "확장 가능"이라고 할 수 있음) 논리 프로그래밍 언어로서 C# ")와 Erlang (현재"Erlang "확장이라고 할 수 있음)을 사용하여 현재 활성화 된 4 개의 백엔드에 대해 설명합니다.

그건 내 머리 꼭대기에서 두 가지 언어입니다. 만약 당신이 빤히 보았다면 나는 다양한 플랫폼을 대상으로하는 여러 방언 (Ruby, JRuby, IronRuby 등) 때문에 Ruby가이를 수행한다고 말할 수 있다고 확신 할 수 있습니다. 따라서 이러한 플랫폼의 기본 언어를 확장한다고 할 수 있습니다. 아마도 다른 많은 것들이있을 것입니다.

관련 문제