Vorsprung durch Technik

블로그 이미지

MSNU

Formal Grammar of compiler컴파일러에서 형식언어:정의,문법,분류

myPPT 2013. 4. 12. 14:43


   



   


















   


 

2-1. 형식 언어의 정의

2-2. 형식 언어의 문법 (Formal Grammar)

2-3. 형식 언어의 문법의 분류

 

2-1. 형식언어의 정의

¦  정의

 

¦  몇 개의 수학적 구조와 함께 기호적 스트링

   (Symbolic string)들로 구성

 

¦  어떤 alphabet에서 Symbol들로 구성되는

    string의 집합

 

¦  정의 2.0

¦  Symbol : 언어에 있어서 가장 기본이 되는 요소

예 :   0, 1, ㄱ, A

 

¦  정의 2.1

¦  Alphabet : Symbol들의 유한 집합

 예 :   T1 = {0, 1} ,     T2 = {ㄱ,ㄴ,·····,ㅎ,ㅏ,ㅑ,····,ㅡ,ㅣ}

 

¦  정의 2.2

¦  String : Alphabet T에 속하는 Symbol이나 T에 속하는  하나이상의 Symbol 연결

 예 : T = {a, b}일 때, a, b, aa, ab, ba, bb, aaa, ····· 는

      모두 T에서 만들 수 있는 String이다.

 

¦  정의 2.3

¦   String 길이 : String을 이루는 Symbol의 개수

 

 예 :   w = 0110           || = 4

           u = dog            |u| = 3

            = house          || = 5

 

¦  정의 2.4

¦   String 접속(Concatenation) : String의 연속 연결 해 놓은 것

 

¦   u = a1····· an,     = b1·····bn

¦   u·u = a1·····anb1·····bn,       |u| = |u| + || = n + m

¦   u· u = u  u (교환법칙 성립 안 함)

  예 :  |u| = dog = 3      || = house = 5

             u·u = u = doghouse        |u| = 8

 

¦  정의 2.5

 

¦   empty string : 길이가 0인 string : 문자열이 없는 것

 

¦   e(epsilon), (lambda)로 표현  || = || = 0

 예 : u = u = u ,  u = u,  dog·e·house = doghouse

          l(l+d)*    ===>    A·e = A

 

¦   an : a가 n개 연결된 string을 표시

    예 : a5 = aaaaa

 

¦   a0 : empty String

 

¦   R : String의 역순

    예 :  = abc                    R = cba

     = 1u2····un              R  = n···· 2u1

 

¦  정의 2.6

 

¦   T* : empty string을 포함한 T에 속하는 Symbol로 이루어

         질 수 있는 모든 string의 집합

     예 : T = {0, 1}      T* = {e, 0, 1, 00, 01, 10, 11, 000, ···}

¦   T+ : T* - {e}

     예 : T = {a, b}      T+ = {a, b, aa, ab, ba, bb, aaa, aab, ··· }

 

¦  정의 2.7

 

¦   Alphabet T에 대하여 언어 L은 T*의 부분집합 이다.

    예 :  T = {a, b}

    L1 = T* = {e, a, b, ab, ba, ···}

    L2 = { a, ba, aba}

    L3 = {ap | p는 소수(prime number)}

    L4 = {anbn | n 1 }

 

¦   정의 2.8

 

¦  언어의 곱 (Product)

 

¦  L·L´ = LL´ = {xy | x Î L, y  L´}  L´L

     예 : L = {a, b}     L´ = { ab, bc, cc}

  LL´ = { a, b} ·{ab, bc, cc} = {aab, abc, acc, bab, bbc, bcc}

¦   정의 2.9

¦  L의 거듭제곱      (Power)

    예 : L = {a, ba, aab}

  L0 = {}

  L1 = {a, ba, aab}

  L2 = L·L = {a, ba, aab}·{a, ba, aab}

      = {aa, aba, aaab, baa, baba, baaab, aaba, aabba, aabaab}

¦     Ln = L·Ln-1

 

2-2.형식언어의 문법(Formal Grammar)

¦  정의 2.12

 

   G = ( VN, VT, P, S )

¦  VN : non-terminal Symbol의 유한집합

¦  VT : terminal Symbol의 유한집합

¦     VN  Ç VT =            V(Vocabulary) = VN  VT

¦   P : 생성규칙의 유한집합

¦     a    (유도)       V+     V*

¦      S : start Symbol  Î VN

 

 ®예제

       VN = {<sentence>,<subject>,<verb>,<object>,<noun>,<article>}

         VT = {The, Boy, Girl, Loves, .}

         S = <sentence>

         P :  1. <sentence>  ® <subject><verb><object>.

               2. <subject>  <article><noun>

               3. <object>   <article><noun>

               4. <verb>    Loves

               5. <article>    The

               6. <noun>  Boy | Girl

 

                        derivation(replacement:유도)

        <sentence> => <subject><verb><object>.

                          => <article><noun><verb><object>.

                          => The <noun><verb><object>.

                          => The Boy <verb><object>.

                          => The Boy Loves <object>.

                          => The Boy Loves <article><noun>.

                          => The Boy Loves The <noun>.

                          => The Boy Loves The Girl.

 

¦  정의 2.13

 

¦  derivation(유도) :  한 String에서 생성 규칙을 한 번 적용

    해서 다른 Sting으로 바뀌어진다.

               

¦    => : 한 번 이상 유도                => : 0번 이상 유도

예제 1

       G = ({S, A},{a, b}, P, S)   

       P : S ® aAS     S a

            A SbA    A ba    A SS

 

         i)  S => a

         ii) S => aAS

               => abaa

 

  예제 2

       P : S ® aA | bB |

            A  bS

            B aS

       

         i) S => aA

               => abS

               => ab

 

¦  정의 2.14

¦   sentential form(문장형태) : S => w,   V*

¦   sentence (문장) :    Vt

     문장 형태 중 nonterminal symbol을 포함하지 않은 것

 

¦  정의 2.15

¦   L(G) = { | S =>  w,   Vt }

    예제 3

    G1 = ({S}, {a}, P, S)

  P : S ® a | aS

  i) S => a

  ii) S => aS

         => aa

  iii) S => aS

         => aaS

         => aaa

  L(G1) = { an | n 1}

 

 

¦  문법 작성

 

¦   특정한 형태의 언어를 생성하는 문법을 만드는 일

 

예제 1

 L1 = {anbn | n ³ 1}

 i) 같은 수의 terminal symbol을 생성해야 하므로 nonterminal

    symbol이 terminal symbol사이에 내장되어 있어야 한다.

    S  aSb    (embedded 생성규칙)

 

 ii) 최소한의 terminal symbol은 nonterminal symbol을 필요로

    하지 않기 때문에 따로 구분 지어 주어야 한다.

    S  ab

\ S  aSb | ab

                 

 

예제 2

 

 L2 = {0i1j | i ¹j,  i, j  1}

•     i > j 일 때, 0이 많은 경우,

      같은 수의 0과 1을 생성하고, 남은 0을 생성을 하면 된다.

        S  0A1

        A  0A1 | 0A | 0

 

•     i < j 일 때, 1이 많은 경우,

      같은 수의 0과 1을 생성하고, 남은 1을 생성을 하면 된다.

        S  0B1

        B  0B1 | B1 | 1

 

     S  0A1 | 0B1

        A  0A1 | 0A | 0

        B  0B1 | B1 | 1

 

같은 언어를 생성하는 문법은 여러 형태가 될 수 있다.

주어진 문법으로부터 생성되는 언어는 유일하지만 주어진 언어를

생성하는 문법은 다양한 형태가 될 수 있다.

2-3. 형식 언어의 문법의 분류

¦   Chomsky 4 type Grammar

¦   생성 규칙의 형태에 따라 구분

 

¦   Type 0(Unrestricted Grammar)

¦  생성 규칙에 어떤 제한도 두지 않는다. (위축형 문법)

 예제 )    bc  ® b

 

¦    Type 1(Context-sensitive Grammar :csg)

¦  오른쪽이 왼쪽보다 같거나 긴 생성규칙

 

¦ |a| ≤  |b|

 예제)      P : A  ® abc      A  aABc

                Bb  BC            CB  cc            bc  c (X)

 

¦  Type 2 (Context-free Grammar:cfg)

¦   왼쪽은 하나의 nonterminal symbol만 가능

¦                : nonterminal       V*

예제 )    L(G2) = {anban | n 1}

                G2 = ({S, C}, {a, b}, P, S),

                P : S  aCa

                C  aCa

                C  b 

 

¦   Type 3(Regular Grammar : rg : 정규문법)

¦  왼쪽에 하나의 nonterminal symbol이 오고, 오른쪽도 최대한

    하나의 nonteminal symbol이거나 terminal symbol로 구성

 

¦  A  tB   A  t   t  Vt   A,B  VN   (right linear regular grammar)

 

¦  A  Bt    A  t    t  Vt   A,B  VN    (left linear regular grammar)

예제 )    L(G3) = {anbam | n, m 1}

                G3 =({S,B,C}, {a,b}, P, S),

                P : S  aS         S  aB

                B  bC             C  aC             C  a   

 

 







'myPPT' 카테고리의 다른 글

국어 문법 품사:개념 분류이유 기준 종류 분류표::갈래와 특성( 명사, 대명사, 수사, 동사, 형용사, 관형사, 부사 조사, 감탄사)  (10) 2013.06.02
대중음악의 이해:::정의 특징 분류 역사  (9) 2013.04.16
논리의 유형과 논증으로 무엇을 할 수 있는가?  (4) 2013.04.06
이자율 변동:채권 및 화폐시장에 대한 수요 공급 모형,일본 사례  (0) 2013.04.05
논리와 명제:추론, 술어 논리,항진 모순 명제,prolog(논리용 언어)  (2) 2013.04.05
Posted by MSNU






favicon

Vorsprung durch Technik

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (993)
    • myPPT (813)
    • 시리즈 (164)
      • 연소 (14)
      • 경제 (5)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바