[PL] Language Extension : AE -> NAE

parkheeddong·2023년 6월 3일
0
post-thumbnail

🌱 지난 내용 복습 ..

프로그래밍 언어 AE(Arithmetic Expression) 정의하기

1) Syntax 정의하기

  • Concrete Syntax
  • Abstract Syntax : compiler가 이용하며, semantic도 abstract syntax 기반으로 정의

2) Semantic 정의하기

  • English Specification (자연어로 정의)
  • Reference Implementation
  • Formal Language

📌 AE 확장 : NAE

AE 언어에 Negation Operator을 추가해 보자.
AE의 Negation Operator를 Negation and AE(NAE)라고 정의하자.

맨 마지막 예시와 같이 NAE 연산자를 추가하기 위해서는, 먼저 NAE의 Concrete Syntax를 정의해야 한다.

1. Update Concrete Syntax of NAE

2. Update Abstract Syntax of NAE

-> NEG 노드 추가

3. Update Parser

프로그램에 대해서 다음과 같은 Tree가 나오도록 parser을 update한다.
(parser에 대하여 구체적으로 배우지는 않아도 parser가 해당 operator을 핸들링한다고 가정)

4. Update Semantics

다음과 같이 semantic을 update할 수 있다.

🔔 정리: Extension From AE to NAE

AE 언어를 NAE로 Update하는 과정은 다음과 같은 단계를 거친다.
1) concrete syntax 업데이트
2) abstract syntax 업데이트
3) semantics 업데이트
4) interpreter 업데이트

0개의 댓글