4.1

프로그램을 실행시키는 방식

  1. 컴파일 방식 → 기계어로 바꾼다. C++, COBOL
  2. pure interpretation → 컴파일을 거치지않고 바로 실행 : 주로 스크립트 언어
  3. 하이브리드 : 자바

이 세가지 방법 모두다 lexical analyzer 와 syntax analyzers 가 필수이다.

Lexical analyzer = parsers 는 거의 syntax 에 기초한다.

거의 모든 컴파일러가 syntax 분석을 두가지 부분으로 나눈다.

두가지로 나뉘는 이유

  1. 단순하다.
  2. 효율적이다.
  3. 부착성이 좋다. syntax 는 플랫폼 독립적이다. lexical 은 아님

4.2 lexical analyzer

Untitled

Lex 라는 유닛은 어휘를 찾아서 품사를 찾고 문법으로 해석하고 기계어

Lexeme 을 찾는 다는 것은 기본적으로 patten match 다. :일치하는 문자열을 찾으려고 한다.

컴파일러는 기계어로 바꿔주는 것이 목적이다. 근데 기계어는 언어마다 다 다르기 때문에 Intermediate code 로 일단 바꿔준다. 그뒤로 언어에 맞는 기계어로 바꾼다.

문자열을 주면 한글자씩 모은다. → Lexeme 이된다.

Syntax analyzer 앞쪽에서 일어나는데 Lexeme 을 찾아서 토큰을 붙여준다.