Skip to main content

Command Palette

Search for a command to run...

파서 `<` 처리 작업 기록

Updated
1 min read

이 작업은 어렵진 않았는데, 그래도 기억할 게 있어서 기록하기로 했다.

처음엔 매우 간단한 작업 같았다. 문제가 되는 테스트케이스는 다음과 같다.

declare let fn: any, x: any, y: any;
declare function z<A, B>(_: any): any;
fn(z<Number, Object>(y));
fn((z<Number, Object> = y));
fn(x < y, x > y);
fn(x < y, x >= y);
fn(x < y, x >> y);
fn(x < y, (x >>= y));
fn(x < y, (x >>>= y));
fn(x < y, x < y, (x >>= y));
fn(x < y, x < y, x >>> y);
fn(x < y, x < y, (x >>>= y));

딱 봐도 짜증나는 종류긴하다. 그래도 시간 좀 들이면 해결되는 종류의 이슈다.

테스트 추가하고 가장 먼저 실패하는, 즉 가장 위에 있는 버그를 고쳤다. 그런데 테스트케이스의 나머지 코드를 보니까, 파싱 자체가 실패하는 게 문제가 아니고, 잘못된 값으로 파싱하는 게 문제더라. 그래서 테스트 파일을 쪼갰다. 1개의 파일은 1개의 줄만 갖고 있도록 쪼개니까 작업하기 편해졌다.

보니까 type 컨텍스트에서 <>을 무지성으로 <>로 렉싱하는 게 문제였다. 그래서 해당 코드를 없앴다. 그랬는데 Regression이 많더라. 처음엔 >=, >>=, >>>=만 배제하면 되나 싶어서 그걸 배제하도록 짰는데, 타입스크립트는 만만하지 않았다. 디버깅하다가 이게 컨텍스트로 해결해야하는 문제임을 깨닫고 Context를 손보기 시작했다. 우선 Context 기반으로 분기하는 코드를 넣었다. 로깅 계속 추가해가면서 문제되는 Context들을 하나씩 손봤고, 해결됐다.

앞에서 얘기한 기억해둬야하는 건 말로 어떻게 표현해야할지 모르곘으니 적지 않곘다.

More from this blog

한국의 학벌에 대한 생각

내 블로그의 제목이 kdy1: The way I think 인만큼 앞으로는 내 생각을 더 자주 올리려고 한다. 한국 기준으로, 학벌은 사람을 볼 때 꽤나 유용한 지표이지만, 절대적이지는 않다. 경험적인 얘기일 뿐이지만, 성균관대학교 자퇴생으로서 느낀 것들이 몇 가지 있다. 대학까지 간 사람의 학벌은 학습 능력 x 성실함 에 대체로 비례한다. 그래서 의미가

Apr 3, 20261 min read

인간 지능에 대한 메모장

최종 업데이트: 2026/03/15 지능의 유전 현재 인류 기준으로, 고지능자는 고지능 유전자가 많이 겹친 사람이다. 지능의 유전엔 X 염색체가 매우 중요한 역할을 한다. 그리고 이게 남자와 여자의 지능 분포 차이를 만든다. 극상위권에 여자가 거의 없는 이유가 이것이다. 고지능 X 염색체가 여자한테서 발현되려면 2개가 있어야 한다. 이는 인간의 생

Mar 15, 20262 min read

Ai 코딩 팁 2 (한국어)

발표 자료: https://gamma.app/docs/AI--2a52e7tk3eb1ch1 AI 활용법 관련해서 간단하게 발표를 했다. 발표 자료 앞쪽은 전에 블로그에 올린 글이랑 같은 내용이다. 이 글에서는 기존 글에서 다루지 않은 내용들을 다루겠다. 에러 메시지 및 로깅 구체적 타입 및 스키마 활용 any 타입은 사람에게도 위험하지만, AI에게는 더 위험하다. 마찬가지로, JSON.parse처럼 아무 제약 없는 파싱 느슨한 인터페이스 ...

Jan 30, 20265 min read

kdy1: The way I think

233 posts