Skip to content
Discussion options

You must be logged in to vote
답변

책에서는 토크나이징과 렉싱은 미묘하고 학술적인 차이가 있는데 둘의 차이는 토큰을 무상태 방식으로 인식하는지 와 상태 유지 방식으로 인식하는 지에 있습니다.라고 나와 있는데 잘 와닿지 않는다.

###토크나이징 (Tokenizing)
원시 소스 코드를 개별적인 단위인 토큰으로 분리하는 과정

입력: 원시 소스 코드 (예: let x = 10;)
출력: 토큰의 리스트 (예: [let, x, =, 10, ;])

토크나이징 과정

  1. 입력 버퍼: 소스 코드가 문자 단위로 읽힘
  2. 어휘 분석기: 각 문자를 읽고, 어휘 규칙에 따라 토큰으로 분리
  3. 토큰 생성: 식별된 토큰을 리스트에 추가

###파싱(Parsing)
토크나이징 단계에서 생성된 토큰을 이용해 문법적으로 의미 있는 구조로 변환하는 과정, 이 구조 AST(추상 구문 트리)로 표현

입력: 토큰의 리스트 (예: [let, x, =, 10, ;])
출력: 추상 구문 트리 (AST)

파싱의 과정

  1. 구문 분석기: 토큰 리스트를 순차적으로 읽습니다.
  2. 구문 규칙 적용: 언어의 문법 규칙에 따라 토큰을 구조화
  3. AST 생성: 문법적으로 의미 있는 구조를 AST로 변환

####차이점
목적
토크나이징: 소스 코드를 기본 단위(토큰)로 분리합니다.
파싱: 토큰을 문법적으로 의미 있는 구조(AST)로 변환합니다.

입력과 출력
토크나이징:
입력: 원시 소스 코드
출력: 토큰 리스트
파싱:
입력: 토큰 리스트

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by wogus216
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants