2

많은 사람들이 매크로, 함수, 더 간단한 함수 이름을 사용하여 더 쉽게 프로그래밍 할 수있는 스크립팅 언어를 만드는 아이디어가 있습니다. 단순한 사람이라면 더 쉽게 작업 할 수 있습니다. 이 코드 (사용자 정의 스크립팅 언어)는 간단한 C 언어로 번역되어야합니다. 좋아요 :C 코드로 변환되는 스크립팅 언어를 작성할 수 있습니까?

Scripting: 
IO[9].high 
@include "lib" 
for (int i=0 to 55) 

end 
C: 
IO |= (1<<9); 
#include "lib.h" 
int i = 0; 
for (i=0; i<55; i++) { 

} 

이 매크로/스크립팅 언어를 어떻게하면 효율적으로 작성하여 c 코드로 출력 할 수 있습니까?

+4

예, 그것은 가능 : http://doc.pypy.org/en/latest/translation.html

는 스크립팅 언어로 파이썬을 지정 질문은 기본적으로 다음과 같은 질문을 참조하십시오 :

더 자세한 내용은 다음 참조를 참조하십시오. 그러나 쉽지 않습니다. –

+12

물론 가능합니다. 결국 텍스트를 텍스트로 간단하게 변환하는 것입니다. C 프로그램을 대표하는 또 다른 구문이 필요하다고 생각하십니까? – dasblinkenlight

+0

이렇게 할 수도 있지만 대개 올바른 해결책은 아닙니다. clang/llvm과 같은 것을 위해 프론트 엔드를 작성하는 것이 더 나을 것입니다 (아마도). [예] (https://donsbot.wordpress.com/2010/02/21/smoking-fast-haskell-code-using-ghcs-new-llvm-codegen/) – Flexo

답변

3

물론입니다. C로 컴파일 된 (또는 컴파일 된) 일부 언어는 Eiffel, Haskell (GHC), Vala 및 Squeak를 포함합니다. 이전 버전의 C++은 C++에서 C 로의 번역기 (CFront)로 구현되었습니다.

일반적인 개념은 intermediate language입니다. C는 used as an intermediate language; C 컴파일러를 사용하여 많은 언어와 라이브러리와 바이너리 호환성을 확보하고 자신 만의 컴파일러를 작성하지 않아도됩니다. Ritchie는 C를 "portable assembly language"으로 사용한다고 설명합니다.

그러나 C++ 에서처럼 C 타겟팅이 지나치게 제한적이라는 사실을 빠르게 알 수 있습니다. GHC는 C--이라는 전용 중간 언어로 이동하고 있습니다. LLVM toolchain (본질적으로 LLVM 중간 표현을 대상으로 함)을 사용하면 멀티 플랫폼 호환성을위한 더 나은 접근 방법이 될 수 있습니다.

+0

문제는 내가 8 비트 마이크로 컨트롤러 용으로이 "언어"를 개발하고 있으며 llvm과 다른 멋진 것들을 사용할 수 없다는 것입니다. 저는 avr-gcc에 매우 제한적입니다. 이제는 솔루션 만이 많은 것들을 preg_match하고 C 등가물로 대체 할 수 있다고 생각합니다. –

1

예를 들어, netsnmp?에서 mib2c 스크립트를 보았습니까? 그것은 스크립트를 사용하여 C 소스를 생성합니다. 더 많은 아이디어를 얻으려면이를 참조하십시오.