일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 220821
- React
- 개발공부
- cording
- html
- Java
- 자격증
- knockon
- 정보처리기능사
- CodeIgniter
- bootcamp
- 프로그래밍언어론
- 오답풀이
- study
- 개인서버
- C
- WPF
- 외부접속
- php
- 방화벽
- Mac
- Developer
- CSS
- 홈서버
- 매크로
- 프로그래밍 언어론
- plan
- windows
- 개발
- git
- Today
- Total
bunta의 보조기억장치
[프로그래밍 언어론] 4-2 구문의 표현 본문
구문론
→ 프로그램의 표면적인 구조를 정의
→ 정의된 구문을 통해 모든 정상적인 프로그램을 도출
→ 작성된 프로그램이 정의된 구문에 맞는 프로그램인지 확인
구문의 표현
→ 구문의 정의는 문법을 활용하여 명확하게 표현
→ 일반적으로 프로그래밍 언어에서는 문맥 자유 문법을 이용
* 문맥 자유 문법: 문맥하고 상관이 없는 문법
예로 변수는 문법과 상관없이 아무 위치에서 정의되어도 됨
문맥 자유 문법(CFG: Context-Free Grammar)
구성 요소
→ 비단말 기호: 정의될 대상
ex) <if문> ::= if <논리식> then <문장>
→ 단말 기호: 언어에서 직접 사용되는 표현
ex) <if문> ::= if <논리식> then <문장>
→ 시작 비단말 기호: 언어에서 독립적으로 사용될 수 있는 단위
ex) <if문> ::= if <논리식> then <문장>
<if문>은 비단말 기호이면서 시작 비단말 기호
→ 규칙: 비단말 기호를 단말 기호와 비단말 기호의 조합으로 정의
* 각 규칙은 하나의 비단말 기호만을 정의
문맥 자유 문법의 다양한 표현 방법
→ BNF
→ EBNF
→ 구문 도표
BNF(Backus-Naur Form)
→ Algol의 구문을 정의하기 위해 사용된 표현법
→ 세 가지 메타 기호
::= 정의
| 택일
< > 비단말 기호
비단말 기호
→ < > 로 묶인 기호
단말 기호
→ 비단말 기호 및 메타 기호가 아닌 기호
규칙
→ ::=를 기준으로 왼쪽 부분을 오른쪽 부분으로 정의
EBNF(Extended Backus-Naur Form)
→ BNF에 추가적인 메타 기호를 사용하여 규칙을 보다 간결하게 표현
→ 추가된 메타 기호
[ ] 생략가능
{ } 0번 이상 반복
( ) |과 함께 쓰여 한정된 범위의 택일
' ' 메타 기호를 단말 기호로 사용
ex) <if문> ::= if <논리식> then <문장> [ else <문장> ]
→ [ else <문장> ] 부분 생략 가능함
* BNF 표현일 경우
→ <if문> ::= if <논리식> then <문장> | if <논리식> then <문장> else <문장>
ex) <unsigned integer> ::= <digit> { <digit> }
→ 몇자리 숫자를 표현해야할지 모르는 상태이기 때문에 { } 로 묶어서 0번 이상 반복될 수 있음을 나타냄
한자리의 숫자일 경우 { <digit> } 이 없는 것과 동일
* BNF 표현일 경우
→ <unsigned integer> ::= <digit> | <unsigned integer> <digit>
ex) <수식> ::= <수식> ( + | - | * | / ) <수식>
* BNF 표현일 경우
→ <수식> ::= <수식> + <수식> | <수식> - <수식> | <수식> * <수식> | <수식> / <수식>
ex) <BNF 규칙> ::= <왼쪽 부분> '::=' <오른쪽 부분>
→ '::=' 를 메타 기호인 ::= 가 아니라 그냥 :, :, = 가 합쳐진 단말 기호로 해석함
구문 도표(syntax diagram)
→ 초기 Pascal의 사용자 설명서에 사용된 표현법
→ 순서도와 유사하게 그림으로 구문을 표현
한국방송통신대학 [프로그래밍 언어론] 강의 필기입니다.
'Study > 필기' 카테고리의 다른 글
[프로그래밍 언어론] 4-3 의미의 표현 (0) | 2022.10.05 |
---|---|
[프로그래밍 언어론] 4-1 구문론과 의미론 (0) | 2022.10.05 |
[프로그래밍 언어론] 3-4 프로그래밍 언어와 프로그래밍 패러다임 (0) | 2022.10.05 |
[프로그래밍 언어론] 3-3 여러 패러다임의 프로그램 예 (0) | 2022.10.05 |
[프로그래밍 언어론] 3-2 프로그래밍 언어의 패러다임 (0) | 2022.10.05 |