편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
13번째 줄: | 13번째 줄: | ||
== 절차 == | == 절차 == | ||
처음 절차 이후의 개발에 있어서는 해당 언어의 수정이 있으면 그 전의 규격을 가지고 컴파일러를 만들어내면 될 뿐이지만, 처음 만든 언어의 컴파일러가 있을리가 없으므로, 첫 절차만큼은 복잡하다. 첫 절차는 대개 다음 방법 등이 사용된다. | 처음 절차 이후의 개발에 있어서는 해당 언어의 수정이 있으면 그 전의 규격을 가지고 컴파일러를 만들어내면 될 뿐이지만, 처음 만든 언어의 컴파일러가 있을리가 없으므로, 첫 절차만큼은 복잡하다. 첫 절차는 대개 다음 방법 등이 사용된다. | ||
* 만들고자 하는 언어를 최대한 간략화(Abstract)한다. <span style="color: red;">간략화된 언어</span>로 <span style="color: blue;">원래 언어의 컴파일러</span>를 작성한 뒤, 컴파일러가 있는 언어로 <span style="color: red;">간략화된 언어의 컴파일러</span>를 작성한다. 그 후 <span style="color: red;">간략화된 언어의 컴파일러</span>로 <span style="color: blue;">원래 언어의 컴파일러</span>를 컴파일한다. 처음에는 생산성이 나빠 최적화가 부실하지만, 반복할수록 최적화된 컴파일러를 얻는다. [[PyPy]]가 RPython을 만드는 식으로 이 방법을 사용하였다(엄밀하게는 컴파일러는 아니지만...). | * 만들고자 하는 언어를 최대한 간략화(Abstract)한다. <span style="color: red;">간략화된 언어</span>로 <span style="color: blue;">원래 언어의 컴파일러</span>를 작성한 뒤, 컴파일러가 있는 언어로 <span style="color: red;">간략화된 언어의 컴파일러</span>를 작성한다. 그 후 <span style="color: red;">간략화된 언어의 컴파일러</span>로 <span style="color: blue;">원래 언어의 컴파일러</span>를 컴파일한다. 처음에는 생산성이 나빠 최적화가 부실하지만, 반복할수록 최적화된 컴파일러를 얻는다. [[PyPy]]가 RPython을 만드는 식으로 이 방법을 사용하였다(엄밀하게는 컴파일러는 아니지만...). | ||
* 아예 처음부터 다른 고생산성 언어(인터프리터 포함)로 작성한다. 파스칼 컴파일러의 최초 버전은 포트란으로 작성되었다. | * 아예 처음부터 다른 고생산성 언어(인터프리터 포함)로 작성한다. 파스칼 컴파일러의 최초 버전은 포트란으로 작성되었다. | ||
[[분류:컴퓨터 프로그래밍]] | [[분류:컴퓨터 프로그래밍]] |