[NDC21-프로그래밍] 트랜스파일러(Transpiler) 설계 및 구현
NDC 넥슨 · YouTube
AI 핵심 요약
25년간 운영된 게임 서버의 오래된 Objective-C 코드를 현대화하면서, 언어와 메모리 관리 방식이 비슷한 C++로 옮기는 트랜스파일러를 설계했다. ANTLR과 Scala를 사용해 Objective-C 문법을 파싱하고, 변환 대상이 아닌 순수 C 코드는 퍼지 파싱으로 보존한 뒤 파스 트리 비지터에서 C++ 코드를 생성했다. Objective-C의 nil과 멤버 변수 초기화처럼 직접 대응되지 않는 기능은 널 오브젝트 패턴과 생성 코드로 보완했으며, 동적 특성 때문에 자동 변환하기 어려운 부분은 수작업 대상으로 남겼다. 변환과 빌드만으로 실행 동등성을 확신할 수 없으므로 검증이 필수이며, 발표자는 Scala의 병렬 처리 성능과 기존 코딩 컨벤션이 작업에 도움이 됐다고 설명했다.
- 전체 C 코드를 완전한 문법으로 파싱하기보다, 변환이 필요한 Objective-C 구문만 인식하고 나머지는 와일드카드로 보존하는 퍼지 파싱을 활용한다.
- ANTLR 문법으로 파서를 생성하고, 파스 트리 비지터를 상속해 구문별 C++ 코드를 출력하면 변환 규칙을 구조적으로 관리할 수 있다.
- Objective-C의 nil처럼 C++에 직접 대응하는 기능이 없는 요소는 널 오브젝트 패턴과 팩토리 등을 이용해 동작을 보완한다.
- 동적 디스패치나 덕 타이핑처럼 정적으로 옮기기 어려운 코드는 변환기 복잡도를 키우기보다 필요한 부분을 수작업으로 수정한다.
- 코드가 빌드된다는 사실만으로 동작의 동등성이 보장되지는 않으므로, 서비스 적용 전 테스트와 실행 검증을 별도로 설계해야 한다.
소개
● 설문조사: https://forms.gle/zYktz7D24DUsTWLU9 ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 넥슨코리아 성우경 ● 권장 대상: 컴파일러 설계, 프로그래밍 언어에 관심 많으신 분 ● 키워드: #프로그래밍언어 변환 #ANTLR #Scala #Transpiler 설계 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
비슷한 학습 자료
컨퍼런스 NDC
↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 넥슨코리아 이동현 ● 키워드: #프로그래밍언어 #VSCode #인텔리센스 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
프로그래밍 언어 개발 도구
컨퍼런스 NDC
[NDC21-커리어] 커뮤니케이션이라는 함정에 빠진 기획자
컨퍼런스 NDC
● 설문조사: https://forms.gle/MRibYBoU8dN6X5oM7 ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 커리어 ● 발표자: 넥슨코리아 이민우 ● 권장 대상: 신입 기획자 ● 키워드: #커리어 #게임기획 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
컨퍼런스 NDC
[NDC21-프로그래밍] 게임 서버를 품은 쿠버네티스
컨퍼런스 NDC
● 설문조사: https://forms.gle/fQp2bW5VrSQGTSaR9 ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 데브시스터즈 용찬호 ● 권장 대상: 서버 프로그래머, DevOps 및 인프라 엔지니어 ● 키워드: #클라우드 #쿠버네티스 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
데브옵스 · 인프라
컨퍼런스 NDC
● 설문조사: https://forms.gle/tPkXvVFXZ25Z3TTq7 ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 넥슨코리아 이연성 ● 권장 대상: 프로그래머 ● 키워드: #코드생성기, Roslyn, C#, C++, UE4 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
프로그래밍 언어 게임 프로그래밍
컨퍼런스 NDC
[NDC21-커리어] 처음 만드는 건데 실수 좀 할 수 있죠
컨퍼런스 NDC
● 설문조사: https://forms.gle/xDX2BbuNkbYfcSxw9 ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 커리어 ● 발표자: 넥슨코리아 박소현 ● 권장 대상: 학생, 개발자 지망생 ● 키워드: 학생 게임 개발 사례 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
컨퍼런스 NDC
[NDC21-프로그래밍] 로컬라이징 노하우 공유
컨퍼런스 NDC
● 설문조사: https://forms.gle/JG9Y97FfeLYqW8b4A ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 데브캣 김한수 ● 권장 대상: 툴 프로그래머, UI 프로그래머 ● 키워드: #로컬라이징 #개발환경 #글로벌원빌드 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
개발 · 프로그래밍 기타