Gyu Hwan

4. 인터프리터 구현 - 표현식 파싱(1)

1. 파싱을 시작하기 앞서 지금까지 과정으로 스캐너로 토큰도 분류했고 문법도 정리했다. 이제부터 파싱의 시간이 왔다. 개인적으로 이해와 습득을 위해 많은 시간을 들였던 구간이다. 이전 장의 컨택스트 자유 문법과 록스의 문법, 비지터 패턴을 배웠는데. 그래서 ‘이걸로 뭘 하라는거야?’ 라는 생각이 든다. 이번 글은 이것들의 사용 방법과 쓰임새를 이해하...

2. 인터프리터 구현 - Scanner

이번은 로버트 나이스트롬의 인터프리터 록스의 구현의 첫 단계인 스캐닝(scanning)에 대한 글이다. 스캐닝은 컴파일러 또는 인터프리터가 소스 코드를 분석하는 첫 단계로,원시 소스 코드를 입력받아 토큰(token) 이라는 의미 있는 청크(Chunk)로 변환한다. 이 과정에서, 문자열은 렉심(lexeme) 이라고 하는 기본 단위로 나뉘며, 이들은 나...

1. 인터프리터 구현 with Java

이번 글은 서적을 참고하여 자바를 이용한 인터프리터 구현 및 정리이다. 언어의 구성 요소 프로그래밍 언어를 구현하는 과정은 복잡하지만, 몇 가지 기본적인 단계로 나눌 수 있다. 이 과정은 원시(raw) 소스 텍스트에서 시작하여, CPU가 이해할 수 있는 로우레벨 코드로 변환하는 것을 목표로 합니다. 아래는 자바 소스 코드의 간단한 예시이다 cla...

회원 기능 챌린지 분석 및 설계

회원 기능 챌린지에서 복잡하거나 조금 생각이 필요할 것 같은 부분만 골라서 설계를 진행해봤다. 이메일 인증 일반적으로 회원가입을 진행할 때, 이메일 인증을 했던 방식을 떠올리면 크게 두 가지였던 것 같다. 바로 코드 기반 인증과 링크 기반 인증이다. 코드를 입력받아서 인증하거나 링크를 클릭하는 것만으로 인증되는 차이인데. 설계를 한다면 어떻게 할 ...

회원 관리 기능 목록

회원 관리 Challenge 주 언어는 자바만 사용했었고 업무상 JS도 간간히 사용했었다. 최근 새로운 기술에 대해 궁금증이 생겨 코틀린, NestJS를 공부했었는데. 아직 찍먹 단계지만 얻은 부분이 많았다. 무엇보다 고착화되어 있는 뇌가 새로운 자극을 받아 활성화되는 느낌이 들어 좋았던 거 같다. 그래서 이번에는 챌린지라는 명목하에 각 언어들을 ...