프로그래밍언어론

 
프로그래밍언어의 두 가지 측면
 - 구문론: 형태에 대하여
 - 의미론: 수행 의미에 대하여 
 
언어의 형식적 정의: 구문론과 의미론을 통해 언어를 정의한다.
 
프로그래밍 언어에서의 구문론: 프로그래밍 언어의 표면적인 구조를 정의한다. (어떤 형태로 작성할지)
의미론은 내용적인 효과를 정의 (어떤 일이 일어나는지)
 
프로그래밍언어에 구문이 정의되어있으면 그 구문을 통해 정상적인 프로그램 도출 가능
 
일반적으로 프로그래밍 언어에서는 문맥 자유 문법을 이용
 
문맥 자유 문법: 문맥에 영향을 받지 않는 문법
 
문맥 자유 문법의 구성 요소
1. 비단말 기호: 정의될 대상
2. 단말 기호: 언어에서 직접 사용되는 표현 (비단말 기호 및 메타 기호가 아닌 기호)
3. 시작 비단말 기호: 언어에서 독립적으로 사용될 수 있는 단위
4. 규칙: 비단말 기호를 단말 기호와 비단말 기호의 조합으로 구체적으로 정의하는 것
 
각 규칙은 하나의 비단말 기호만을 정의한다.
 
 
BNF(Backus-Naur Form)
 
 
3가지 메타 기호 사용

  • ::=
    • 정의
    • ::= 기준으로 왼쪽 부분을 오른쪽 부분으로 정의
  • |
    • 택일
  • <>
    • BNF에서 비단말 기호는 메타 기호 <>로 묶인다.

 
 
EBNF(Extended BNF)
 
 
BNF에 추가적인 메타 기호 사용하여 규칙을 보다 간결하게 표현할 수 있도록 확장
 
추가로 사용되는 메타 기호 4가지

  • [ ]
    • 생략 가능
    • [ ]로 묶인 부분을 사용해도 되고 생략해도 된다
  • { }
    • 0번 이상 반복
  • ( )
    • |와 함께 쓰여 한정된 범위의 택일 표현
    • e.g., ( + | - 
  • ' '

 

'TIL > CS' 카테고리의 다른 글

자료구조 알아보기  (0) 2024.12.16
선형대수학의 본질 (3blue1brown)  (0) 2024.11.25
컴퓨터구조 알아보기  (0) 2024.11.24
혼자 공부하는 컴퓨터 구조 + 운영체제 2장. 데이터  (1) 2024.11.20
컴퓨터 명령어  (0) 2024.11.16