[컴파일러] 컴파일러는 무엇인가요?

orca·2024년 10월 7일

CS

목록 보기
29/46
post-thumbnail

컴파일러

  • 프로그래밍 언어를 컴퓨터에서 실행될 수 있는 형태로 번역하는 소프트웨어
  • 넓은 의미로는 텍스트 번역기
    ➡️ 세상의 모든 프로그램은 보는 관점에 따라 컴파일러가 될 수 있음
  • 컴파일러의 중요한 역할은 번역 과정에서 탐지되는 원시 프로그램의 에러를 보고하는 것

분석-통합 모델

  • 컴파일 = 분석 + 통합

분석

  • 원시 프로그램을 구성 요소로 분리하고, 원시 프로그램의 중간 표현을 생성
  • 원시 프로그램의 문법상 오류를 탐지한다면 유익한 메세지를 제공해 사용자가 정확한 조치를 취하게 함
  • 원시 프로그램의 정보를 심볼 테이블에 저장
  • 원시 프로그램이 암시하는 연산이 결정되고, 트리라고 불리는 계층적 구조로 기록됨

분석 수행 예시

  1. Structure editors : 소스 프로그램을 작성하기 위한 일련의 명령을 입력으로 받고, 이 프로그램 텍스트를 분석하여 적절한 계층적 구조를 적용함. 프로그램 작성에 유용한 추가 작업을 수행.
    • 입력이 올바르게 형성되었는지 확인
    • 키워드를 자동으로 제공하고(예: 사용자가 'while'을 입력할 때 'do'를 제공)
  2. Pretty printers : 프로그램을 분석하여 프로그램의 구조가 명확히 드러나도록 인쇄함
    • 주석은 특별한 글꼴로 표시
    • 문장은 계층 구조의 깊이에 따라 들여쓰기로 표현
  3. Static checkers : 프로그램을 분석하여 실행하지 않고도 잠재적인 오류를 찾으려고 시도함. 이 분석 과정은 최적화 컴파일러에서와 유사함
    • 특정 변수가 정의되기 전에 사용될 수 있음을 감지
    • 포인터로 실제 변수를 사용하려는 시도와 같은 논리적 오류를 감지
  4. Interpreters : 번역된 대상 프로그램을 생성하는 대신, 소스 프로그램이 암시하는 작업을 수행함

통합

  • 중간 표현심볼 테이블을 기반으로 타겟 프로그램을 구성함

컴파일러 활용

  • 컴파일러는 전통적으로 프로그래밍 언어(ex. 포트란)를 컴퓨터가 이해할 수 있는 기계어로 바꾸는 프로그램
  • 그러나, 컴파일러 기술은 다양한 분야에서 자주 사용됨

컴파일러 기술 활용 예시
1. Text formatters : 입력된 텍스트를를 예쁘게 만드는 도구
2. Silicon compilers : 기존의 프로그래밍 언어와 유사하거나 동일한 소스 언어를 사용함. 그러나 변수는 메모리 위치가 아닌 논리적 신호로 해석됨.
3. Query interpreters : 관계형 및 불 연산자를 포함한 명제를 데이터베이스에서 해당 조건에 맞는 레코드를 검색하는 명령으로 변환함

0개의 댓글