프로그래밍/TIL(Today I Learned)

3강 프로그래밍 언어의 구문

가라멜 2018. 8. 28. 17:45
반응형

1. 프로그래밍 언어의 구조

 문자 > 어휘 > 구문

문자 : 영어 알파벳과 아라비아 숫자를 근간으로 작성

어휘 : 프로그래밍 언어 문자로 구성된 단어, 토큰

구문 : 프로그래밍 언어로 프로그램을 작성하는 규칙


어휘 구조와 구문 구조

- 서로 별개이지만 밀접한 관련

어휘 분석 > 입력 프로그램의 일련의 문자를 토큰으로 구분

구문 분서 > 토큰을 처리하여 구문 구조를 결정



2. BNF(Backus-Naur Form)

BNF 란?

- 구문에 대한 형식 정의를 하는 방법

- 생성 규칙들의 집합

- 왼쪽 부분 : 정의될 대상(Object)

- 오른쪽 부분 : 그 대상에 대한 정의

BNF 표기법

- 비단말 기호

- 각괄호 < > 로 묶인 기호

- 다시 정의될 대상임을 의미

- 단말 기호

- 각괄호로 묶이지 않은 기호

- 알파벳 문자 집합, 예약어

- 메타 기호

- 언어를 표현하려고 사용된 특수 기호들(::==, |, <>)

- ::== : 정의

- | : 택일

>> ex) <letter> ::== A|B|C|....|X|Y|Z 


<문맥 자유 문법>

- 모든 생성 규칙에서 정의될 대상이 하나의 비단말 기호로만 구성

- 각 비단말 기호가 어디에 나타나든 그의 오른쪽 부분으로 언제나 대치될 수 있음 

<문맥 의존 문법>

- 특수한 문맥에 의존하여 대치되는 문법



3. EBNF(Extended BNF)

- 보다 읽기 쉽고 간결하게 표현할 수 있는 확장된 BNF

- 특수 의미의 메타 기호를 더 사용하여 반복되는 부분이나 선택적인 부분을 간결하게 표현함


<EBNF 표기법>

- [x] : x가 나타나지 않거나 한번 나타날 수 있음

- {x} : x가 ~0번에서 ~번까지 나타날 수 있음

- (x | y ) : 괄호 안으로 한정하여 x나 y중 택일

- 'x' : 메타기호 x를 단말기호로 사용



4. 구문 도표

- 구문에 대한 형식 정의를 하는 또 다른 방법

- 순서도와 비슷하며, EBNF 선언과 바로 대응시킬 수 있음

- 비단말 기호는 사각형, 단말 기호는 원이나 타원으로 표시하며 이들은 지지선으로 연결