주노팍 2023. 11. 18. 21:02
반응형

[형식언어 기초]

 

  • 형식언어 ( formal language ) : 어떤 알파벳에서 얻은 기호(symbol)들로 구성되는 문자열들의 집합
  • 알파벳 : 기호들의 유한집합
  • 문자열 : 알파벳을 구성하는 기호가 0개 또는 1개 이상 나열된 것

ex ) 집합 T = { a, b, c}가 주어졌을 때, 집합 T는 기호 a, b, c들의 집합이므로 알파벳이다.

       T로부터 만들어지는 문자열은 a, b, c, ab, ac, ca,..... 등이다.

 

  • 문자열의 길이 : 문자열을 이루는 기호들의 갯수를 문자열의 길이라고 한다. |w|로 표시한다. 
    ex) w1 = abc, w2 = abab 의 문자열에 대한 길이는 |w1| = 3 , |w2| = 4라고 할 수 있다.
  • 공문자열 : 문자열의 길이가 0 인것을 공문자열이라고 한다. ε 로 표시한다. ( 그리스어 앱실론을 의미 )

 

  • T* : 알파벳 T에 대해서 공문자열을 포함한 T에 속하는 기호들로 이루어질 수 있는 모든 문자열의 집합을 의미한다. T스타 혹은 T클로저로 읽는다. 
  • T+: T*에서 공문자열을 제외한 모든 문자열의 집합을 나타내며 T대거라고 읽는다.

ex )  T = { a, b, c }        T* = { ε, a, b, c, ab, ac, ba, ca , ......... } => 공문자열 ε을 포함한 문자열의 집합        T+ = { a, b, c, ab, ac, ba, ca , ......... } => 공문자열 ε을 제외한 문자열의 집합

 

 

 

[형식문법]

 

  • 형식문법 : 형식언어를 생성하기 위한 규칙
    ex)  그림 1
  • 논터미널 기호 : 언어에서 문자열을 생성하는데 사용되는 중간과정의 기호로 보통 대문자로 표시한다.
  • 터미널 기호 : 정의된 언어의 알파벳이나 기호로 영문자의 소문자나 아라비아숫자, 연산자 기호 등이 여기에 속한다.
  • 문법기호 : 터미널기호와 논터미널 기호를 문법기호 ( grammar symbol )라고 하며 보통 V(vocabulary)료 표시한다.

그림 1 - 형식 문법의 정의

< 논터미널 기호 > 

1). A, B, C와 같은 영문 대문자로 구성된 기호와 시작기호를 나타내는 S는 논터미널기호

2). '<' 와 '>' 묶어서 나타낸 기호도 논터미널기호

 

<터미널기호>

1). a, b, c와 같은 영문 소문자로 구성된 기호 혹은 +, - 와 같은 연산자기호, 괄호나 쉼표와 같은 구분자 

     0, 1, 2와 같은 아라비사 숫자는 터미널기호

2). 영문자 끝 부분의 소문자인 u, v, w, x, y, z 등은 터미널기호로 이루어진 문자열을 나타낸다.

 

<문법기호>

1). X, Y, Z와 같은 영문자 끝부분의 대문자는 터미널 기호와 논터미널 기호를 나타내는 문법기호다.

2). α, β,  γ와 같은 그리스어 소문자는 문법기호로 구성된 문자열을 나타낸다.

 

<시작기호>

1). 아무런 언급이 없으면 첫 번째 생성규칙의 왼쪽에 있는 기호가 시작기호다.

 

ex) 

문법 G = ({S, A}, {0,1}, P, S)

  • S와 A는 논터미널기호
  • 0과 1은 터미널 기호
  • S는 시작기호 - 맨좌측에 있기 때문

 

[촙스키 계층구조]

생성규칙의 형태에 가해지는 제한에 따라 type0, type1, type2, type3의 4종류로 나눈 것

  • 모든 문법은 type0에 속한다.
  • type0에서 위축형 생성규칙을 제거하면 type1 -> 줄어들지 않는 문법
  • type1에서 왼편이, 하나의 논터미널기호인 경우를 type2 
  • type2에서 오른편 생성규칙이 좌선형이거나 우선형인 경우를 만족하면 type3
  • 각각의 문법은 다음과 같은 포함관계를 갖는다.

 

 

 

[문법, 언어, 인식기]

문법이 주어지면 그 문법에 맞는 언어를 생성할 수 있는데,

정규 문법에 의해서 생성될 수 있는 언어를 정규언어라 하고 

context-free 문법에 의해 생성될 수 있는 언어를 context-free 언어 

context-sensitive 문법에 의해 생성되는 언어를 context-sensitvie 언어라 한다.

 

이러한 언어들은 그 언어를 인식할 수 있는 기계가 필요하며 이를 인식기 ( recognizer )라고 한다.

 

 

반응형