1) Syntax 정의하기
- Concrete Syntax
- Abstract Syntax : compiler가 이용하며, semantic도 abstract syntax 기반으로 정의
2) Semantic 정의하기
- English Specification (자연어로 정의)
- Reference Implementation
- Formal Language
AE 언어에 Negation Operator을 추가해 보자.
AE의 Negation Operator를 Negation and AE(NAE)라고 정의하자.
맨 마지막 예시와 같이 NAE 연산자를 추가하기 위해서는, 먼저 NAE의 Concrete Syntax를 정의해야 한다.
-> NEG 노드 추가
프로그램에 대해서 다음과 같은 Tree가 나오도록 parser을 update한다.
(parser에 대하여 구체적으로 배우지는 않아도 parser가 해당 operator을 핸들링한다고 가정)
다음과 같이 semantic을 update할 수 있다.
AE 언어를 NAE로 Update하는 과정은 다음과 같은 단계를 거친다.
1) concrete syntax 업데이트
2) abstract syntax 업데이트
3) semantics 업데이트
4) interpreter 업데이트