BNF, EBNF   Backus-Naur Form, Extended Backus-Naur Form   BNF 표기법, EBNF 표기법

(2019-09-02)

Context-Free Grammar, 문맥 자유 문법, Context-free Language, 문맥 무관 언어

Top > [기술공통]
[기초과학]
[진동/파동]
[방송/멀티미디어/정보이론]
[전기전자공학]
[통신/네트워킹]
[정보기술(IT)]
[공업일반(기계,재료등)]
[표준/계측/품질]
[기술경영]
정보기술(IT) >   1. 정보기술
[전산기초]
[컴퓨터구조]
[프로그래밍]
[데이터베이스]
[소프트웨어 공학]
[운영체제]
[정보보호/보안]
[IT 기타기술]
프로그래밍 >   1. 프로그램, 프로그래밍
[프로그래밍 언어론]
[프로그래밍 방법론]
[객체지향 프로그래밍]
[자료표현코드]
[자료구조]
[알고리즘]
[시스템 소프트웨어]
[프로그래밍언어 종류]
[프로그래밍 기타일반]
프로그래밍 언어론 >   1. 프로그래밍 언어
[구문]
[변수]
[자료형/데이터형]
[부프로그램/함수/프로시저]
[예외,이벤트 처리]
구문   1. 구문
  2. 구문 용어
  3. BNF,EBNF
  4. 토큰
  5. 식별자
  6. 어휘
[문장,식]

Top > [기술공통]
[기초과학]
[진동/파동]
[방송/멀티미디어/정보이론]
[전기전자공학]
[통신/네트워킹]
[정보기술(IT)]
[공업일반(기계,재료등)]
[표준/계측/품질]
[기술경영]
정보기술(IT) >   1. 정보기술
[전산기초]
[컴퓨터구조]
[프로그래밍]
[데이터베이스]
[소프트웨어 공학]
[운영체제]
[정보보호/보안]
[IT 기타기술]
프로그래밍 >   1. 프로그램, 프로그래밍
[프로그래밍 언어론]
[프로그래밍 방법론]
[객체지향 프로그래밍]
[자료표현코드]
[자료구조]
[알고리즘]
[시스템 소프트웨어]
[프로그래밍언어 종류]
[프로그래밍 기타일반]
시스템 소프트웨어 > [번역/번역기]
[컴파일러]
[정규표현식]
[(기타)]
컴파일러   1. 컴파일
  2. 전처리
  3. 링커,로더
  4. 형식 언어
  5. 유한상태 머신
  6. 어휘/구문/의미 분석
  7. BNF,EBNF

1. 문맥 자유 문법 (Context-Free Grammar)

  ㅇ 특정 언어구문을 명확하게 기술하는 표기법

  ※ 1950년대 Noam Chomsky(촘스키)가 문맥 무관 문법(Context-free Grammer)을 제안함
     - 1957년 `통사의 구조(Syntatic Structure)`를 발표하여, 언어학 연구에 혁명을 일으킴

     - 문맥적인 의미를 따로 떼어 놓고, 형식화된 문법에 대한 표기법이 가능하다고 봄
        . 즉, 문법의미를 서로 분리시킬 수 있다는 아이디어를 냄
        . 결국, 구문을 형식화시켜, 이를 간명하게 서술할 수 있는 방법이 있다고 봄
     - 대개 프로그래밍 언어는, 문맥 무관 언어(Context-free Language)의 구조로 제한시켜,
        . 기계의 효율적인 번역이 가능하도록 충분히 단순한 구조를 유지시켜 만들어짐

  ㅇ 문맥 자유 문법의 용도
     - 프로그래밍 언어구문 문법, 통신 프로토콜 동작에 대한 구문 문법 등의 정의에 사용됨

  ㅇ 문맥 자유 문법의 표기법 
     - BNF, EBNF, 구문 도표(Syntax Diagram) 등 

  ㅇ 문맥 자유 문법의 구성
     - 비단말 기호 : 정의할 대상
     - 단말 기호 : 언어에서 직접 사용되는 표현
     - 시작 비단말 기호 : 언어에서 독립적으로 사용되는 단위
     - 규칙 : 비단말 기호를 구체적으로 정의
        . 각 규칙은 하나의 비단말 기호를 단말 기호아 비단말 기호의 조합으로 정의


2. BNF 표기법 (Backus-Naur Form)프로그래밍 언어구문을 서술할 수 있는 표기법

  ㅇ 역사
      - John Backus가 Peter Naur의 도움으로 개발
      - 1963년 ALGOL 60 언어 구문을 기술할 때 처음으로 사용
         . 이후 Ada, Pascal, C, Java 등 대부분의 프로그래밍 언어 정의를 위한 표기법으로 사용

  ㅇ 규칙
     -  Symbol ::= Expression  (심볼 ::= 표현식)

  ㅇ 메타 기호
     -  ::=  ⇒  정의를 뜻함 (좌변을 우변으로써 정의함)
     -  |    ⇒  선택/택일(or)을 뜻함
     -  < >  ⇒  비단말 기호를 뜻함


3. EBNF 표기법 (Extended Backus-Naur Form)

  ㅇ 원래의 BNF에 추가적인 메타 기호 등을 사용하고 확장한 표기법으로 많은 변종이 있음
     - 例) Niklaus Wirth가 BNF를 확장하여 만드는 등

  ㅇ 사용 例)
     - 만일, Small_Alphabet이라는 기호가, 소문자 a 부터 z 까지의 한 문자를 표현한다면,
        . Small_Alphabet ::= [a-z]
     - 만일, Number라는 기호가, 숫자 0 에서 9 까지의 한 숫자를 표현한다면,
        . Number ::= [0-9]


4. ABNF 표기법 (Augmented Backus-Naur Form)표준화된 확장 BNF 표기법


[구문] 1. 구문 2. 구문 용어 3. BNF,EBNF 4. 토큰 5. 식별자 6. 어휘
[문장,식]
  1.   기술공통
  2.   기초과학
  3.   진동/파동
  4.   방송/멀티미디어/정보이론
  5.   전기전자공학
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산기초
    2.   컴퓨터구조
    3.   프로그래밍
          1. 프로그램, 프로그래밍
      1.   프로그래밍 언어론
            1. 프로그래밍 언어
        1.   구문
              1. 구문
              2. 구문 용어
              3. BNF,EBNF
              4. 토큰
              5. 식별자
              6. 어휘
          1.   문장,식
        2.   변수
        3.   자료형/데이터형
        4.   부프로그램/함수/프로시저
        5.   예외,이벤트 처리
      2.   프로그래밍 방법론
      3.   객체지향 프로그래밍
      4.   자료표현코드
      5.   자료구조
      6.   알고리즘
      7.   시스템 소프트웨어
      8.   프로그래밍언어 종류
      9.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공업일반(기계,재료등)
  9.   표준/계측/품질
  10.   기술경영

 
        최근수정     요약목록     참고문헌