intepreter

Lexer

입력 문자열로 토큰을 만들어낸다

Parser

입력 데이터를 받아 자료구조를 만들어 내는 소프트웨어 컴포넌트 형태는 파스 트리, 추상구문트리일 수 있고 그렇지 않으면 다른 게층 구죙ㄹ수도 자료구조를 만들면서 구조화된 표현을 더하기도 하며, 구문이 올바른지 검사하기도 함

보통 앞에 어휘 분석기(lexical analyzer)를 따로 두기도 한다

json parser와의 차이

json 파서는 텍스트를 입력 받아 이를 표현하는 자료구조로 만듬. 언어 파서가 하는 일과 동일. 다른 점이라면 json 파서는 눈으로 보는 것만 자료구조를 알 수 있음

하향식 / 상향식 파서

하향식 파서는 AST의 루트 노드를 생성하는 것으로 시작해 아래쪽으로 파싱

Pratt Parsing

문법 규칙과 함수를 연관시키는 대신에 프랫은 토큰 타입과 파싱 함수를 연관시킨다.

프렛 파서 구현의 핵심 아이디어는 파싱 함수를 토큰 타입과 연관 짓는 것 파서가 토큰 타입을 만날 때마다 파싱 함수가 적절한 표현식을 파싱하고, 그 표현식을 나타내는 AST 노드를 하나 반환