피드로 돌아가기
Dev.toBackend
원문 읽기
Python의 Lark 라이브러리를 활용해 DATA 명령어로 데이터셋을 로드하고 SUM, MEAN, STD 등의 통계 연산을 순차 실행하는 도메인 특화 언어(DSL) 구현
Build a Data Science Query Language in Python using Lark
AI 요약
Context
Python으로 데이터 분석 작업을 수행할 때 코드 작성 방식이 프로그래밍 언어의 표준 문법을 따른다. 데이터 로드, 통계 계산, 결과 출력을 위해 여러 라이브러리와 함수 호출을 조합해야 하는 구조다.
Technical Solution
- Lark 파서 라이브러리로 문법 정의: "DATA [숫자] 명령어" 형태의 텍스트 구조를 인식하도록 BNF 규칙 작성
- Transformer 클래스로 파싱된 구문을 실행 로직으로 변환: 각 명령어(SUM, MEAN, STD, MAX, MIN)를 메서드로 매핑
- LALR 파싱 알고리즘 적용: lalr 옵션으로 빠른 파싱 성능 확보
- NumPy 배열로 데이터 처리: 리스트를 np.array로 변환해 통계 함수 실행
- 파일 입력 지원: .dl 확장자 파일에서 DSL 코드를 읽어 순차 처리
Key Takeaway
Lark 같은 파서 라이브러리를 활용하면 문법 규칙 정의와 실행 로직 분리가 명확해진다. SQL, Pandas 쿼리 엔진, Apache Spark 같은 실제 데이터 시스템도 동일한 패턴으로 설계된다.
실천 포인트
데이터 분석 반복 작업을 다루는 팀에서 Lark로 간단한 DSL을 만들면, SQL처럼 직관적인 문법으로 통계 연산을 순차 실행할 수 있다. 파서 라이브러리 도입으로 새로운 명령어(FILTER, SORT, 파일 입력 등)를 문법 규칙과 Transformer 메서드 추가만으로 확장 가능하다.