| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- photon fusion2
- 보안
- Multiplay
- unity
- local prediction
- UI
- 언리얼엔진
- widget
- 유니티
- MAC
- stride
- rpc
- gameplay tag
- CTF
- gas
- 언리얼 엔진
- Replication
- 게임 개발
- linear regression
- ability task
- gameplay effect
- Aegis
- animation
- attribute
- gameplay ability system
- C++
- os
- Unreal Engine
- 게임개발
- listen server
- Today
- Total
Replicated
문법의 표기법 2 (문법 도표, BNF, EBNF) 본문
문법 도표
- 쉽게 이해할 수 있도록 문법을 도식화하는 방법
- 문법 도표는 사각형과 타원, 연결하는 간선(edge)으로 구성
그리는 방법
1. 터미널 기호 b는 원 안에 b로 표기하고, 다음 기호를 보기 위해 나가는 간선을 그림

2. 논터미널 기호 B는 사각형 안에 B를 표기하고 터미널 기호의 표기법과 같이 간선을 그림

3. 생성 규칙 A -> X1X2...Xn은 다음과 같이 문법 도표로 표시. (Xi가 터미널 기호일 경우 원 사용, 논터미널이면 사각형)

4. 생성 규칙 A -> X1 | X2 | ... | Xn인 경우 다음과 같이 문법 도표로 표시. (Xi가 터미널 기호일 경우 원 사용, 논터미널이면 사각형)

5. 정규 표현 A -> α*는 다음과 같은 문법 도표로 표현

BNF (Backus - Naur Form) 표기법
- 프로그래밍 언어의 형식적 정의(formal definition)을 위해 가장 널리 사용되는 방법
- 이 표기법은 현재 ALGOL 60의 문법을 표현하기 위해 가장 먼저 사용
- 현재에는 대부분의 언어들을 표현하는데 가장 많이 사용
- 메타 기호로 세 가지 기호를 사용
- 논터미널 기호는 <, >로 묶어서 사용
- 대체(replacement)를 나타내기 위해 ::= 사용
- 양자 택일을 나타내기 위해서 | 을 사용
- 그런데 문제는, 반복되는 부분 그냥 다 써야 하니까 문제가 있음
EBNF (Extended BNF)
- 반복되는 부분을 BNF 표기법보다 읽기 쉽고 간결하게 표현 ( {<기호>} 에 위첨자가 최대 아래첨자 최소 )
- 반복되는 부분을 나타내기 위해서 메타 기호로 {}와 <, >를 사용
- {a}는 a가 0번 이강 반복될 수 있다는 것을 의미
- 정규 표현 a*와 같은 의미로 생각
- 또한 선택적인 부분을 표시할 때는 []로 표현
- [x]는 x가 나타나지 않거나 한 번 나타날 수 있음을 의미
- [x]는 {x}와 같은 의미
- 메타 기호를 터미널 기호로 사용하는 경우에는 그 기호를 작은 따옴표(')로 묶어서 표현
- {}[]|<>)::= 이런 것들
'학부 > 오토마타와 컴파일러' 카테고리의 다른 글
| 결정적 유한 오토마타(DFA), 비결정적 유한 오토마타(NFA) (0) | 2025.10.11 |
|---|---|
| 유한 오토마타 - 상태전이도 & 형식적 표현 (0) | 2025.10.10 |
| 문법의 표기법 1 (정규 표현) (0) | 2025.10.09 |
| 형식 문법 (0) | 2025.10.08 |
| 형식 언어 (0) | 2025.10.04 |