2017-01-25 5 views
2

학사 과정에서 컴파일러 디자인 과정을 수강하고 있습니다. 학습 과정의 일부로 언어에 대한 컴파일러를 개발해야합니다.배쉬 용 컴파일러

Bash 용 컴파일러를 작성할 수 있습니까? C/C++와 같은 일반적인 프로그래밍 언어 용 컴파일러를 설계하는 것보다 어렵지 않으므로 적어도 초보자는 생각할 수 없습니까?

+2

실질적으로 모든 언어를 컴파일 할 수 있습니다. 일반적인 기술은 모든 언어에서 동일합니다. 컴파일러는 코드를 파싱하고 프로그램이 수행하는 작업을 파악하여 실행 코드를 생성합니다. bash'for' 루프와 C'for' 루프를 컴파일하는 데 별다른 차이가 없습니다. – Barmar

+1

"어떻게"부분이 당신이 수업에 기대고있는 것이 아닌가요? 언어를 선택 하시겠습니까? 언어가 처방 될 수 있습니다. – puhlen

+0

내 의견에 무슨 일이 일어 났는지 아는 사람 있습니까? – melpomene

답변

6

컴파일러는 Bash 용으로 작성할 수 있습니까?

예. (존재 증명 - shc)

그렇다면 어떻게됩니까?

그건 어려운 부분입니다.

POSIX 셸 언어는 백틱, 변수 대체, 따옴표 등의 영향으로 인해 일반적인 프로그래밍 언어와 매우 다릅니다.

이것을 무시하고 어려운 기능을 생략하거나 POSIX 동작을 따르지 않는 방식으로 "bash like"언어를 구현할 수 있습니다.

다음 ... 실행 가능한 것을 생성하는 방법에 문제가 있습니다. 다시 말하지만, 위와 같은 것이 가능합니다. 그러나 목표가 일반 쉘보다 빠르다면 컴파일 된 코드에서 일반적인 Linux 명령의 동작을 에뮬레이션해야합니다. 그것은 거대한 작업입니다.


나는이 나쁜 프로젝트 말하는 게 아니에요,하지만 당신은을 포함하여 많은 작업을 수행해야합니다 POSIX의 쉘 사양을 읽고 (완전히) 이해

  • 발견 명령을 직접 구현해야 리눅스
  • 가 파악 POSIX의 특이 사항을 다루는 파서를 구현하고
  • 이 사람과 거래를하는 방법을 알아내는 방법을 연구
  • 당신 하지 마라. 예 : 모든 복잡한 파이프 라인.
+0

ccsh는 컴파일 쉘 스크립트를 자랑하는 비 자유 프로젝트입니다. – louigi600

+0

감사합니다. 그러나 한 가지 예만이 존재 증명에 필요합니다. –