PL Definition
프로그래밍 언어 정의
- 프로그래밍 언어는 정확한 형식이 기술되어야 한다.
- 언어의 구조와 의미의 Formal한 기술 없이는 프로그래밍이 불가능하다.
- Ambiguity(모호성)*이 없는 언어를 위해서도 Formal Definition(형식 정의)가 필요하다.
- ANSI, ISO와 같은 표준 기구에서는 프로그래밍 언어의 표준 정의를 규정하고 있다.
* 모호성 - 애매성
- 모호성 : 외관(외연)이 불분명한 경우를 지칭하는 용어이다. PL에서는 구문과 연관되어진다.
- 애매성 : 내관(내연)이 불분명한 경우를 지칭하는 용어이다.
Category of PL Definition (언어 정의의 범주)
- 프로그래밍 언어 형식 정의에는 외부적 정의냐 내부적 정의냐에 따라 Syntax(구문론)와 Semantics(의미론)으로 나뉜다.
1. Syntax (구문론)
- 프로그래밍 언어의 문법을 정의하는 방법론이다.
- 언어의 외연적인 부분을 설계하는 것이기 때문에 형식화하기에 비교적 쉽다.
- 오늘날 대부분의 언어가 Context-Free 언어이다.
- PL의 Lexical Structure(어휘 구조)를 보통 Token(토큰)*이라고 한다.
* Token(토큰) : Pascal 구문에서 \(\texttt{if, else}\)와 같은 Keyword를 토큰이라고 한다.
Ex. BNF를 통해 정의된 Pascal의 \(\texttt{if}\) 구문 예시
<if문> ::= if<조건> then<문> [ else<문> ]
2. Semantics (의미론)
- 프로그램 실행 시 어떤 일이 일어나는가를 기술한다.
- 언어 의미론은 형식화하기에 어렵기 때문에 형식화가 잘 이루어져 있지 못하다.
- 의미론을 형식화하는 방법으로, Denotational Semantics와 Axiomatic Semantics 등이 있다.