Lexical Analysis, Syntax Analysis, Parsing, Semantic Analysis   어휘 분석, 구문 분석, 의미 분석, 파싱

(2018-10-13)

Lexer, Lexical Analyzer, 어휘 분석기, 어휘 해석기, Parser, Syntax Analyzer, 구문 분석기, 구문 해석기, 파서

1. 분석 과정 요약

  ※ 소스 프로그램 => Lexical Analyzer (어휘 분석 : 토큰 분리) 
                   => Syntactic Analyzer (구문 분석 : 구문 트리 생성)
                   => Type Checker (의미 분석 : 형 검사) 
                   => Code Optimizer => Code Generator => 기계 코드


2. 어휘 분석(Lexical Analysis), 어휘분석기(Lexical Analyzer,Lexer)

  ㅇ 원시 프로그램을 읽어들여, 토큰이라는 의미있는 문법 단위로 분리하는 것
     - 즉, 분석된 토큰들을 생성하는 것

  ㅇ 例) 
     - 명칭 검증 : 변수명 앞에 숫자가 올 수 없음 등의 변수명 검증 처리
     - 분리 순서(토큰화) 例) : 문단 -> 문장 -> 단어 -> 형태소


3. 구문 분석/파싱(Syntax Analysis/Parsing), 구문분석기/파서(Syntactic Analyzer/Parser)구문 문법을 적용하여 분석 수행하는 것 
     - 주로, 구문 구조가 문법 규칙에 맞는지 여부를 따짐

  ㅇ 어휘 분석으로 생성된 토큰을 입력으로 하여,
     - 구조화된 구문 트리를 생성하는 후처리

     * 구문 트리(Syntax Tree) 또는 파스 트리(Parse Tree)
        . 소스 코드문법 구조를 그대로 트리 형식으로 옮겨놓은 구조

  ※ 통상, 구문 분석이 끝나면 (즉, 추상 구문 트리를 생성하면), 
     - 컴파일러에서는 그 내부에서 만 사용하는 중간 코드(Intermediate Code)를 생성하게 됨
     - 굳이, 중간 코드를 생성하는 이유는, 여러 종류의 프로그래밍 언어에 대응하기 위함


4. 의미 분석 (Semantic Analysis)구문 분석 단계에서 얻은 구문 트리를 중심으로 의미를 부여하여, 코드 생성이 가능하게 함
     - 구문 분석의 결과로 생성된 구문 트리를 사용하여, 실행 가능한 중간 코드를 생성하는 것

  ㅇ 의미 분석 例)
     - 변수지역변수인지 전역변수인지를 구별
     - 변수 선언과 참조를 연결하기
     - 타입 검사(Type Checking) 등


5. 통상적인 번역기 과정 例)어휘 분석 단계에서, 어휘 분석기(Lexer)는,
     - 일련의 문자들을 토큰으로 구분 함
        . 주로, 이름,수치 리터럴과 같은 작은 단위들의 처리 함
     - 즉, 주어진 입력 문자열로부터 어휘항목들을 추출하고, 
        . 이에 상응하는 분류 토큰(내부 코드)들을 생성하게 됨

  ㅇ 구문 분석 단계에서, 구분 분석기(Parser)는,
     - 토큰들을 입력으로 처리하여 구문 구조를 결정하게 됨
        . 주로, 표현식,문장 등 큰 단위들을 처리 함

  ㅇ 의미 분석 단계에서, 형 검사기(Type Checker)는,
     - 각 연산자가 부합되는 피연산자를 갖는지 검사를 함
        . 주로, 형 검사(type checking)가 중요한 역할 임


[컴파일러] 1. 컴파일 2. 전처리 3. 링커,로더 4. 언어 5. 형식 언어 6. 유한상태 머신 7. 어휘/구문/의미 분석 8. BNF,EBNF
  1.   기술공통
  2.   기초과학
  3.   진동/파동
  4.   방송/멀티미디어/정보이론
  5.   전기전자공학
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산기초
    2.   컴퓨터구조
    3.   프로그래밍
          1. 프로그램,프로그래밍
      1.   프로그래밍 언어론
      2.   구조적 프로그래밍
      3.   객체지향 프로그래밍
      4.   자료표현코드
      5.   자료구조
      6.   알고리즘
      7.   시스템 소프트웨어
        1.   번역기(프로그램)
        2.   컴파일러
          1.   1. 컴파일
              2. 전처리
              3. 링커,로더
              4. 언어
              5. 형식 언어
              6. 유한상태 머신
              7. 어휘/구문/의미 분석
              8. BNF,EBNF
        3.   정규표현식
        4.   (기타)
      8.   프로그래밍언어 종류
      9.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공업일반(기계,재료등)
  9.   표준/계측/품질
  10.   기술경영

 
        최근수정     요약목록     참고문헌