0

** 해석이 컴파일 단계를 따르는 지 여부는 프로그램이 실행될 때 발생합니다 ** 이러한 것들이 다른 경우 번역 전에 해석 검사를 수행 할 것입니다. 읽기 파이썬은 해석 된 언어 다음에 무엇에 의해 수행 된 문장을 검사합니까?컴파일러와 인터프리터의 관계

답변

2

당신은 두 가지 옵션이 있습니다

  • 컴파일 된 언어를
  • 해석 언어, 당신은 입력으로 소스 코드를 가져오고 바이너리를 생성하는 컴파일러를 필요로 언어 컴파일 에서

주어진 대상 플랫폼에서 실행할 수있는 출력으로. 예를 들어, C, C++ 또는 Java는 컴파일 된 언어입니다. 컴파일러가 바이너리을 생성 한 후 해당 플랫폼에서 바이너리을 실행합니다. 바이너리을 생성하는 컴파일 프로세스의 주요 단계는 어휘, 구문 및 의미 분석 및 코드 생성입니다.

컴파일러는 네이티브 플랫폼에서 실행되며 지정된 대상 플랫폼에 대한 코드를 생성하는 프로그램 (바이너리)입니다. 당신은 두 가지 옵션이 있습니다 : 당신이 x86_64의 데스크탑 PC가있는 경우

* target_platform == native_platform (native-compiler) 
* target_platform != native_platform (cross-compiler). 

를, 컴파일러는 네이티브 컴파일러를 가지고, x86_64의 실행 및 x86_64의 실행 코드를 생성합니다. 이 경우 컴파일러는 원시 시스템 코드를 생성합니다.

x86_64 데스크탑 PC를 사용하는 경우 컴파일러는 x86_64에서 실행되며 다른 플랫폼 (예 : JVM)에서 실행되는 코드를 생성하므로 크로스 컴파일러가 있습니다. Java 언어는 Java 언어를 입력으로 사용하는 교차 컴파일러를 사용하고 x86_64 시스템이 아닌 JVM에서 실행되는 바이트 코드를 출력으로 생성한다는 점을 알아야합니다.

arm-linux-gcc, mips-linux-gcc, ppc-linux-gcc 등과 같은 다른 크로스 컴파일러는 C 소스 코드를 입력으로 받아서 적절한 타겟 플랫폼 (ARM, MIPS, PPC).

해석 언어에서 컴파일러를 사용하지 않아도 코드를 생성 할 수 있으므로 프로세스가 끝날 때 바이너리가 생성되지 않습니다. bash와 python은 해석 된 언어입니다. 언어의 해석기 (/ bin/bash 또는/usr/bin/python과 같이 PC에 설치된 바이너리)는 입력 소스 코드를 받아 해석하고 출력을 생성하기 위해 실행합니다. 인터프리터가 코드를 생성하지 않고 단지 분석 한 후에 실행하기만하면 소스 코드를 해석하는 단계는 컴파일러 다음과 동일합니다.

얼마 전 파이썬을 사용하여 사용자 정의 언어의 인터프리터를 작성하는 방법을 설명하는 기사를 작성했습니다. 이 기사는 스페인어로 작성되었지만 전체 과정이 단계별로 설명되어 있으므로 관심이 있다면 많이 배울 수 있습니다. 기사 끝 부분에서 다운로드 및 테스트 할 소스 코드를 찾을 수 있습니다. 소스 코드는 github에서 사용할 수 있습니다. 이 문서는 현재 이용 가능합니다 link

희망이 있습니다. :)

+0

이 바이너리는 무엇을 의미합니까? 바이트 코드입니까? 통역사가 누가 구문을 점검할까요? 잘못된 구문을 작성하면 오류가 올바르게 표시됩니까? – user104853

+0

링크가 작동하지 않습니다 – user104853

+0

링크를 다시 확인하십시오, 그것은 나를 위해 작동합니다.나는 나의 대답을 편집하여 더 많은 정보를 추가했다. 희망이 당신을 돕는다! – aicastell