bunta의 보조기억장치

[프로그래밍 언어론] 4-3 의미의 표현 본문

Study/필기

[프로그래밍 언어론] 4-3 의미의 표현

bunta 2022. 10. 5. 23:58
반응형

의미론

→ 프로그램의 내용적인 효과를 정의

→ 프로그램 실행 시 어떤 일이 일어나는지 그 의미를 기술

→ 구문으로 표현하기 어려운 제약사항을 기술하기도 함

 

의미의 표현

→ 일반적으로 자연어 문장으로 표현하나 명확성이 부족

→ 의미의 엄밀한 표현을 위한 다양한 기법 개발(형식 의미론)


형식 의미론

정적 의미론

→ 프로그램을 수행하기 전 의미가 맞는지 파악하는 방법

→ 주로 타입 검사 수행에 활용

→ 대표적인 방법: 속성 문법

 

동적 의미론

→ 프로그램 수행 시 나타나게 될 의미를 표현하는 방법

→ 대표적인 방법: 기능적 의미론, 표기적 의미론, 공리적 의미론 등

 

* 속성 문법

→ 비단말 기호마다 타입 속성이 있다고 가정하고 이에 대한 규칙을 정의


기능적 의미론

→ 추상기계의 상태를 바꾸는 것으로 수행 의미를 표현

→ 프로그램이 수행(기능)되면 컴퓨터의 상태가 바뀜

→ 상태: <수행할 명령어, 메모리 상태>

 

ex) < z=x; x=y; y=z; , [x→5, y→7, z→0] >   실행 전

  <         x=y; y=z; , [x→5, y→7, z→5] >   1단계 실행 후

   <                 y=z; , [x→7, y→7, z→5] >   2단계 실행 후

   <                         , [x→7, y→5, z→5] >   실행 완료

       최종적으로 x와 y의 값이 바뀌는 과정


표기적 의미론

→ 구문 요소를 수학적 표기에 대응시켜 수행 의미를 표현

→ 의미함수: 대응시키는 함수


공리적 의미론

프로그램의 효과로 수행 의미를 표현

→ 효과: 프로그램 S가 실행됨으로써 사전조건 P를 사후조건 Q로 변화시킴, {P} S {Q}


의미론의 한계 및 효과

한계

→ 프로그래밍 언어 전체에 대한 의미 표현은 너무 복잡

 

효과

→ 프로그램의 구현 및 분석 등에 유용하게 사용됨

→ 속성 방법: 인터프리터 및 컴파일러 구현 시 트리 생성, 타입 검사, 코드 생성 등을 할 때

→ 수학적 표기: 언어의 특성을 명확하게 정의해야 할 때

→ 공리적 의미론: 프로그램의 특정 조건 만족 여부를 확인할 때

 

 

 

한국방송통신대학 [프로그래밍 언어론] 강의 필기입니다.

반응형
Comments