PersesTitan(페르) 기술블로그

Parsing (파싱), Parser (파서) 에 대해서 본문

Language/OTLanguage

Parsing (파싱), Parser (파서) 에 대해서

PersesTitan(페르) 2023. 1. 21. 11:56

전 파서와 파싱을 난해한 프로그램 언어(OTLanguage)를 만들면서 알게 되었는데요.
그래서 파싱과 파서에 대해서 설명을 간단하게 적게 되었습니다.

파싱 (Parsing)

파서를 알아보기 전에 파싱을 알아보겠습니다.
파싱은 특정 패턴이나 순서등을 추출하여 컴퓨터가 알아들을 수 있게 바꾸어주는 작업을 말합니다.

예시로 간단한 사칙연산을 사용해보았습니다.
(OTLanguage 문법 입니다.)

12.34 ㅇ+ㅇ (32 ㅇ/ㅇ 34) ㅇ+ㅇ 34234

위 문법을 구문 트리로 만들면 아래와 같은 구문 트리가 만들어지게 됩니다.


이렇게 토큰으로 분리되어 각 문장을 컴퓨터가 인식할 수 있게 만드는 작업을 하는 것 입니다.

사칙연산을 위해서는 <숫자> <연산자> <숫자> 이여야 하는데 만약 <숫자> <연산자> <다른 무언가> 와 같이 규칙에 맞지 않는 규칙이 들어가 있다면 변환하지 못하고 있어야 하는 것이죠.

구문 분석 성공 예시

정상적으로 문법에 맞게 입력하면 파싱이 올바르게 작동합니다.

구문 분석 실패 예시

   34        ㅇ+ㅇ    342아34
<숫자>  <연산자>   <???>

파서 (Parser)

사실 파서는 단순히 파싱을 하는 프로그램을 말하는 것입니다.


여담으로 OTLanguage에는 전용 파서를 직접 들어가있습니다.
1개씩 계산해 내려가는 동작을 출력하면 아래처럼 동작합니다.