본문 바로가기
[ Computer Science ]

[Programming Language] 6. 구문

by dev charlotte 2024. 11. 1.

 

어휘 구조 : 프로그램을 구성하는 토큰(token)의 구조 정의

  • 토큰의 종류
    • 예약어(reserved word) = 프로그래밍 언어에서 미리 정의된 단어. 특별한 의미
    • 리터럴(literal) 또는 상수(constant) =코드에서 사용되는 고정된 값
    • 특수 기호(special symbol) = 연산자나 구분자와 같은 기호
    • 식별자(identifier) = 변수, 함수, 클래스 등의 이름을 나타내는 문자열
  • 토큰 정의 방법
    • 자연 언어로 설명 / 정규 표현식(Regular Expression; RE)을 통해 구조화
    • (a|b)c는 ‘a’ 또는 ‘b’가 반복되고 마지막에 ‘c’가 오는 모든 문자열
    • 식별자는 [a-zA-Z_$][a-zA-Z_$0-9] 형식으로 정의
    • 알파벳이나 $, _로 시작하고 이후에는 숫자도 포함할 수 있도록
  • 구문 구조 (Syntactic Structure) = 프로그램에서 토큰들이 조합되는 규칙 / 문법 정의
    • 구문 구조 기술 방법
      • 문맥-무관 문법(Context-Free Grammar; CFG) = 프로그래밍 언어에서 널리 사용되는 구문 정의 방식
      • 배커스-나우르 형식(Backus-Naur Form; BNF) = CFG를 표현하는 대표적인 형식입
      • 확장 배커스-나우르 형식(Extended Backus-Naur Form; EBNF) = BNF에 정규 표현식을 추가한 형식
      • 구문 다이어그램(Syntax Diagram) = 그래픽 형식으로 구문 표현 / BNF와 EBNF와 같은 표현력 수준

    • 예제 1: 간단한 영어 문장의 문법 정의
      • 문법 규칙
        • <sentence> → <noun-phrase> <verb-phrase> .
        • <noun-phrase> → <article> <noun>
        • <article> → a | the
        • <noun> → girl | dog
        • <verb-phrase> → <verb> <noun-phrase>
        • <verb> → sees | pets
      • <sentence>로 시작하여 단계적으로 규칙을 적용해 나가면 the girl sees a dog .이라는 문장 생성

    • 예제 2: 간단한 정수 산술식의 문법
        • <expr> → <expr> + <expr> | <expr> * <expr> | (<expr>) | <number>
        • <number> → <number> <digit> | <digit>
        • <digit> → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
      • <expr>로 시작하여 규칙을 차례로 적용하면 3 * (5 + 2)와 같은 산술식을 생성

 

728x90