1. 언어의 구분
ㅇ 자연 언어(Natural Language) : 한국어,영어,독어,일본어 등 (때론, 수화도 포함됨)
- 자연어의 규칙은, 매우 복잡하여, 그 특성을 완전히 규정하기 어려워,
- 이를 완벽하게 처리할 수 있는 거의 유일한 존재가 인간의 뇌(腦)이지만,
- 현재, 인공지능이 이에 도전하고 있는 중임
ㅇ 형식 언어 (Formal Language) : 언어의 문법 구조를 수학적 측면에서 형식화한 인공 언어
- (모호함을 없앰) 완벽하게 정의될 수 있는 규칙들을 갖음
- (응용) 일반적인(공통적인) 특성들을 더욱 추상화시켜, 프로그래밍 언어들에서, 사용됨
* Formal(형식) : 빈틈이 없는, 기호적인, 엄밀한 등을 뜻함
* 촘스키(Noam Chomsky,1928~)는,
. 언어를 추상적인 형식체계로 규정하고 있음 ☞ 문맥 자유 문법 참조
ㅇ 인공 언어(Artificial Language) : 에스패란토오어(Esperanto), 프로그래밍 언어 등
2. 언어에 대한 형식적 정의 (Formal Definition)
※ 사실상, 언어는, 알파벳 문자들로 구성된 문자열들의 집합 임
ㅇ 문자 집합 (알파벳) : ∑
- 문장을 이루는 유한개의 기호(심볼)들
- 例) 다음과 같은 집합이 알파벳이 됨
. ∑ = {a,b,c,...,z}는, 26개의 문자로 구성된 영어 알파벳
. ∑ = {I,love,you}는, 3개의 단어로 구성된 알파벳
- 例) 프로그래밍 언어에서의 알파벳은, (키워드,변수,특수기호)들로 구성됨
ㅇ 문자열 집합 (스트링) : ∑*
- ∑*은, ∑로부터 구성 가능한 모든 문자열들의 집합 (무한집합 임)
- (명칭) ∑*를, ∑의 Closure 라고 함
- (참고) ∑*은, 공백 문자열(비어있는 문자열)도 포함 함
. (例) 2진 알파벳 ∑ = {0,1}로부터의 문자열 집합은,
. `0,10,11,01,010,... 등`과 `공백 문자열인 ε(epsilon)`으로 구성됨
- (관례) 문자열 기호 : w
. 문자열 w가 n개 나열 : wn 또는 w{n}
ㅇ 언어 (형식 언어, Formal Language) : L
- 알파벳으로 만들어지는 문자열들로 구성됨
. 즉, 문자열 집합 ∑*의 부분집합, L ⊆ ∑*
- 때론, 언어 L에 속하는 각 스트링들을, 단어(word) 또는 문장 이라고 함
ㅇ 문법 (형식 문법, Formal Grammar) : 알파벳과 문자열을 형성하는 규칙
- 형식 언어를 생성하기 위한 규칙
- 형식 문법을 표현하는 방법
. 정규표현식
. 문법도표
. BNF
. EBNF
ㅇ 유한 오토마타 : 형식 언어를 입력으로하여 문법에 맞는지 분석하고 판단해주는 것
3. 형식 언어의 例
ㅇ 정규표현식 등