프로그래밍 언어론 - 구문구조와 문법(1)

2023. 1. 31. 19:04·학교수업/프로그래밍 언어론

◆구문 구조란?(syntax)

▷문법적으로 올바른 프로그램을 정확하게 기술한 것

▷Algol60 정의에서 구문구조가 최초 등장

▷현재, 대부분의 언어에서 사용

●세 단계로 나누어 정의

▷어휘 구문 구조

┗언어를 구성하는 기본 기호(이름,값,연산자 등)를 정의

▷구체적인 구문 구조

┗계산식, 문장, 프로그램을 작성하는 규칙

▷추상적인 구문 구조

┗구두점이나 괄호와 같은 구문인식 전용 구조를 제외한 핵심적인 구문 정보만으로 구성된 구문

 

◆2.1 문법

●메타언어(metalanguage)

▷언어를 기술하는데 사용하는 언어

●문법(grammar)

▷언어의 문법구조를 메타언어를 사용하여 정의

●목적

▷프로그래밍 언어의 구문 구조를 정의

 

●백커스/나우어 형식(BNF: Backus Naur From)

▷촘스키 계층의 문맥 자유문법(CFG)(=type2)을 실용적으로 사용할 수 있도록 만든 것

▷Algol60 의 구문 구조를 정의하는데 처음 사용

▷현재, 대부분의 언어 구문 구조 정의에서 사용

 

◆BNF 문법

●다음의 집합으로 구성

▷생성 규칙(Productions): P

▷단말자 기호(Terminal symbols): T

▷비단말자 기호(Nonterminal symbols): N

▷시작 기호(Start symbol): S , S∈N

@ G={N,T,S,P}

●생성 규칙은 다음과 같이 작성

▷여기서 A → ω 이고, A ∈ N , ω ∈(N ∪T ) * 이다.

●3개의 메타 심볼 사용

▷<> 비단말 기호

▷-> 생성하다

▷| 또는

┗ex) binaryDigit → 0 | 1

 

◆유도

●⇒ 유도하다(derive)

▷

 

●352와 같은 부호가 붙지 않은 정수를 이 문법으로 유도해낼 수 있다.

▷

 

◆오른쪽 우선 유도

●Integer ⇒ Integer Digit

⇒ Integer 2

⇒ Integer Digit 2

⇒ Integer 5 2

⇒ Digit 5 2

⇒ 3 5 2

▷단계마다 가장 오른쪽 비단말자가 대치되는 유도 방식을 ‘오른쪽 우선 유도’라고 한다.

 

◆왼쪽 우선 유도

●Integer ⇒ Integer Digit

⇒ Integer Digit Digit

⇒ Digit Digit Digit

⇒ 3 Digit Digit

⇒ 3 5 Digit

⇒ 3 5 2

▷단계마다 가장 왼쪽 비단말자가 대치되는 유도 방식을 ‘왼쪽 우선 유도’라고 한다.

 

●Integer ⇒ * 352

▷Integer 문법규칙을 사용하여 유한 번의 단계를 거쳐 352가 유도될 수 있음을 뜻한다.

 

●352 ∈ L(G)

▷352는 문법 G로 정의된 언어에 포함됨을 뜻한다.

 

●L(G) = { ω ∈ T* | Integer ⇒* ω }

▷문법 G로 정의된 언어는 문법규칙 Integer로 유도할 수 있는 모두 기호 문자열 ω 의 집합임을 뜻한다.

 

'학교수업 > 프로그래밍 언어론' 카테고리의 다른 글

프로그래밍 언어론 - 요약(3미완)  (0) 2023.01.31
프로그래밍 언어론 - 요약(2)  (0) 2023.01.31
프로그래밍 언어론 - 요약(1)  (0) 2023.01.31
'학교수업/프로그래밍 언어론' 카테고리의 다른 글
  • 프로그래밍 언어론 - 요약(3미완)
  • 프로그래밍 언어론 - 요약(2)
  • 프로그래밍 언어론 - 요약(1)
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • TIL(Today I Learn)
        • TIL
        • 백준(C++)
        • Python
        • 알고리즘
        • 프로젝트 회고
      • C++
        • C++
        • C++ STL
        • C,C++ mCoding yotube
      • 게임개발
        • 언데드서바이벌_골드메탈_클론코딩
        • 3D_골드메탈_클론코딩
        • 유니티_문제해결
        • 게임 수학
      • Unreal 공부
        • UE5 GameDev
        • Unreal Engine 4 C++ The Ult..
      • 교재 문제 풀이
        • 운영체제
      • 정보처리기사
        • 정처기 요약
        • 정처기 오답노트
      • 학교수업
        • 데이터베이스
        • 프로그래밍 언어론
        • 리눅스 시스템
        • 네트워크
      • 일상
        • 주식
        • 독서
      • (비공개 전용)
        • memory
        • Build
        • OOP
        • Smart Pointer
        • lamda
        • 게임 수학
        • 모던 C++
        • 모던 C++ STL
        • 모던 C++ Concurrency, Paralle..
        • 책
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 블로그 관리
  • 링크

  • 공지사항

    • 공지사항 - 인생과 블로그의 목표
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메카인
프로그래밍 언어론 - 구문구조와 문법(1)
상단으로

티스토리툴바