프로그래밍언어의 두 가지 측면
- 구문론: 형태에 대하여
- 의미론: 수행 의미에 대하여
언어의 형식적 정의: 구문론과 의미론을 통해 언어를 정의한다.
프로그래밍 언어에서의 구문론: 프로그래밍 언어의 표면적인 구조를 정의한다. (어떤 형태로 작성할지)
의미론은 내용적인 효과를 정의 (어떤 일이 일어나는지)
프로그래밍언어에 구문이 정의되어있으면 그 구문을 통해 정상적인 프로그램 도출 가능
일반적으로 프로그래밍 언어에서는 문맥 자유 문법을 이용
문맥 자유 문법: 문맥에 영향을 받지 않는 문법
문맥 자유 문법의 구성 요소
1. 비단말 기호: 정의될 대상
2. 단말 기호: 언어에서 직접 사용되는 표현 (비단말 기호 및 메타 기호가 아닌 기호)
3. 시작 비단말 기호: 언어에서 독립적으로 사용될 수 있는 단위
4. 규칙: 비단말 기호를 단말 기호와 비단말 기호의 조합으로 구체적으로 정의하는 것
각 규칙은 하나의 비단말 기호만을 정의한다.
BNF(Backus-Naur Form)
3가지 메타 기호 사용
- ::=
- 정의
- ::= 기준으로 왼쪽 부분을 오른쪽 부분으로 정의
- |
- 택일
- <>
- BNF에서 비단말 기호는 메타 기호 <>로 묶인다.
EBNF(Extended BNF)
BNF에 추가적인 메타 기호 사용하여 규칙을 보다 간결하게 표현할 수 있도록 확장
추가로 사용되는 메타 기호 4가지
- [ ]
- 생략 가능
- [ ]로 묶인 부분을 사용해도 되고 생략해도 된다
- { }
- 0번 이상 반복
- ( )
- |와 함께 쓰여 한정된 범위의 택일 표현
- e.g., ( + | -
- ' '
'TIL > CS' 카테고리의 다른 글
자료구조 알아보기 (0) | 2024.12.16 |
---|---|
선형대수학의 본질 (3blue1brown) (0) | 2024.11.25 |
컴퓨터구조 알아보기 (0) | 2024.11.24 |
혼자 공부하는 컴퓨터 구조 + 운영체제 2장. 데이터 (1) | 2024.11.20 |
컴퓨터 명령어 (0) | 2024.11.16 |