2013-08-28 6 views
0

간단한 프로그래밍 언어를 다른 프로그래밍 언어로 번역하고 싶습니다. 코드 생성 부분에서 나올 수 있도록 출력이 구문 적으로 만 유효해야합니다.프로그래밍 언어 번역

C로 파이썬의 하위 집합인데, 나는 약간의 속임수를 쓸 수 있고 대부분의 코드를 복사하여 붙여 넣을 수 있다고 생각하지만 파이썬의 목록/문자열 접합을 C로 변환했다. 그것은 중요하지 않습니다 (나를 위해, 순간에).

필자는 하향식 재귀 적 파서 (실제 문법 보류 중)에이 방법을 사용했습니다. 다음에 무엇을해야합니까? 나는 드래곤 북 (2 차 에디션)의 사본을 가지고 있지만, 지금 내가 어디에 있는지 미리 보지 않고, 나는 이것을 어떻게 할 수 있는지, 동시에 코드 생성을 도저히 볼 수는 없다. 도랑을 파는 것이 가능한지 확실치 않지만 실행 파일을 생성하거나 중간 코드가 필요한 다른 출력 언어의 프로그램을 확장 할 필요가 없습니다.

막혔습니다. 프로그램은 C로 작성됩니다.

+1

문법적으로 유효한 출력 만 필요한 경우 "main() {}"을 생성하고 완료 할 수 있습니다. 요점은 결코 그렇게 쉽지는 않다는 것입니다. 소스 코드의 개념을 대상 언어의 동등한 개념으로 변환해야합니다. 어떻게해야하는지 항상 명확한 것은 아니며 한 지점에서의 번역은 코드의 "멀리있는"정보에 달려 있습니다. 나는 "나는 조금을 속일 수있는 것처럼 떨어졌다"라고 생각한다. 훨씬 더 나아 가기 전에 진지한 컴파일러 책을 읽으라고 제안하십시오. –

+0

이 질문은 더 이상의 대답없이 다시 나타났습니다. OP가 언어 번역자 (특히 "지저분한"언어)를 만드는 것에 대한이 토론에 관심이있을 수 있습니다. http://stackoverflow.com/questions/3455456/what-kinds-of-patterns-could-i-force-on-the-code -to-make-it-easy-to-translat/3460977 # 3460977 –

+0

이 작업을 수행하기 전에 LLVM을 사용했습니다. 귀하의 언어에 대한 LLVM 프론트 엔드를 가지고 있거나 (또는 ​​하나를 쓸 수있는 경우) LLVM 패스를 작성하여 다른 언어의 소스 코드를 생성 할 수 있습니다. – silverclaw

답변

0

여러 Python-to-C compilers이 이미 개발되었습니다. 예를 들어, C로 자동 변환 될 수있는 RPython이라는 Python 서브 세트가 있습니다.