프로그램 설계
- 원시 요소들을 조합해서 복합 객체를 만듦
- 복합 객체들을 추상화해서 고수준의 프로그램 구축 요소들을 만듦
- 시스템 구조에 적합한 거시규모 관점들을 채용하여 모듈성을 유지
프로그램이 복잡해질수록 자바스크립트가 아닌 다른 언어로 설계하면 더 효과적으로 풀 수 있는 경우가 많다.
언어로 언어를 만드는 메타언어적 추상화metalinguistic abstraction
- 프로그래밍 언어의 평가기evaluator(혹은 해석기interpreter)는 해당 언어로 된 문장 혹은 표현식을 받아 이를 평가하는 하나의 프로그램이다.
- 즉 해석기는 프로그램이므로, 우리 스스로도 프로그래밍 언어를 설계할 수 있음
자바스크립트 자체에 대한 평가기를 구축해 본다.
4.1 메타순환적 평가기
평가 대상 언어와 같은 언어로 작성된 평가기를 메타순환적metacircular 평가기라 한다
자바스크립트 프로그램을 평가하는 평가기를 자바스크립트로 구현
평가의 환경 모형을 자바스크립트로 정식화
함수 적용 표현식 평가의 규칙
- 함수 적용 평가 시 → 함수 적용 표현식을 구성하는 부분 표현식(부분식)들을 평가하고, 그 다음 이 함수 부분식의 값을 인수 부분식들의 값들에 적용