본문 바로가기

공부/프로그래밍언어론

언어 정의

프로그래밍 언어는 정확한 형식이 기술되어야 한다.

다음을 참고하여 프로그래밍 언어 정확한 형식 정의가 필요한 이유를 알아보자.

  • 언어의 구조와 의미의 정확한 기술 없이는 프로그래밍이 불가능
  • 언어가 모호함이 없이 구현되기 위함
  • 프로그래밍 과정에서 프로그램이 어떻게 동작할 것인가에 대한 문제 발생 시 유용
  • 프로그램 설계 과정을 규격화하는 방법에 필요

언어의 정의는 두 가지 부분으로 나눌 수 있는데 하나는 구문론(syntax)에 관한 것이고
다른 하나는 의미론(semantic)에 관한 것이다.

 

언어 구문론

  • 언어 구문에 관한 정의는 형식화가 많이 되어 있음
  • 대부분의 언어가 문맥 자유 문법을 만족하며 BNF로 정의
  • 구문에 밀접히 관련되어 있는 것이 어휘 구조(lexical structure)인데 자연어의 맞춤법과
    유사하다.
  • 예) Pascal의 if문
    <if문> ::= if <조건> then <문> [ else <문> ]

언어 의미론

언어 구문은 표면적인 구조만을 정의한다. 다만 언어의 의미론은 이보다 훨씬 복잡하다.

  • 의미론은 프로그램의 실행 시 어떤 일이 발생하는가를 기술
    예)위의 if문에서 조건문이 거짓으로 판명 되었을 때,
    else문 이하가 존재하지 않을 경우
  • 형식화가 미비
  • 의미론의 형식적 정의 방법으로는
    디노테이셔널 의미론(denotational semantics)과
    액시어매틱 의미론(axiomatic semantics)이 있다.