주요 특징 및 아키텍처
-
코드 생성 기반 설계: Oedipus Lex는 해시나 테이블 기반이 아닌, 직접 작성한 코드와 유사한 형태의 렉서를 생성합니다. 이는 성능 최적화와 가독성 측면에서 유리합니다.
-
StringScanner 활용: 내부적으로 Ruby의
StringScanner를 사용하며, 다중 레벨case문을 통해 토큰을 분석합니다. -
매칭 메커니즘: 전통적인
lex계열의 ‘최장 일치(longest match)’ 방식이 아닌, 정의된 순서에 따른 ‘첫 번째 일치(first match)’ 방식을 사용합니다.
Rexical과의 차이점 및 마이그레이션
-
구문 변경: Rexical과 역사적으로는 연관되어 있으나 현재는 독자적인 구문을 사용합니다. 따라서 기존 Rexical 사용자는 코드를 수정해야 합니다.
-
정규표현식 표기: 모든 정규표현식에 슬래시(
/)를 명시적으로 추가해야 하는 등의 구문 규칙이 강화되었습니다. -
라이선스: MIT 라이선스를 적용하여 Rex의 라이선스 제약에서 벗어나 자유로운 활용이 가능합니다.