구식 컴파일러를 활용해서 language server를 구현하고 language client(에디터)가 해당 언어를 지원하는 프로젝트를 진행하려고 함.

근데 이 컴파일러가 파싱된 정보 등 모든 데이터를 전역변수에서 관리하도록 설계돼서 만약 이걸 무지성으로 갖다 쓰면 에디터에서 한 번에 한 프로젝트만 언어 지원이 가능함.

따라서 내 설계는 컴파일러를 프로젝트마다 각각 프로세스 생성해서 실행하고 파싱 결과를 ipc로 쏴줘서 language server는 그걸 받고 에디터한테 정보를 전달하는 방식으로 하는 거임.

물론 언어 스펙을 내가 직접 구현하거나 컴파일러 소스를 완전히 뜯어고치는 방법이 있겠지만 호환성 100프로를 보장할 수가 없고(스펙에는 없는 behavior 등) 개발 기간이 너무너무 길어지기에 이건 포기를 했음.

이게 최선일까? 더 좋은 방법은 없을까?

- dc official App