자신만의 프로그래밍 언어와 가상 머신을 파이썬으로 만들다!
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
프로그래밍 언어 및 컴파일러 설계에 관심 있는 소프트웨어 개발자, 중급~고급 수준
핵심 요약
- Pyle은 교육 목적의 프로그래밍 언어로,
Lexer
,Parser
,Compiler
,Stack-Based VM
의 4단계 구조를 기반으로 설계됨 - Lexer는
.pyle
스크립트를 토큰(예:KEYWORD(let)
,NUMBER(10)
)으로 분해하고, Parser는 Abstract Syntax Tree (AST)를 생성 - Compiler는 AST를 Pyle Bytecode로 변환하고, Stack-Based VM은 이를 실행하여
ADD
,PUSH_VAR
등의 명령어를 처리 - Python과 호환성을 위해
importpy("module_name")
을 지원하며, Go로 재작성 계획
섹션별 세부 요약
1. **Lexer (토큰화)**
.pyle
스크립트를 문자 단위로 분석하여let x = 10;
을KEYWORD(let)
,IDENTIFIER(x)
등으로 토큰화- 문법 의미는 무시하고, 단순히 텍스트를 기계가 이해할 수 있는 단위로 분해
- 예:
let x = 10;
→KEYWORD(let)
,IDENTIFIER(x)
,OPERATOR(=)
,NUMBER(10)
,PUNCTUATION(;)
2. **Parser (AST 생성)**
- 토큰 스트림을 구조화된 표현으로 변환, Abstract Syntax Tree (AST) 생성
- 문법 오류(예:
let = x 10
) 발생 시 에러 발생 - AST는 함수 호출, 조건문, 표현식 등 코드 구조를 역전된 트리 형태로 표현
3. **Compiler (바이트코드 생성)**
- AST를 Pyle Bytecode로 변환, 예:
echo(a + b)
→PUSH_VAR(a)
,PUSH_VAR(b)
,ADD
,CALL_BUILTIN(echo)
- Pyle Bytecode는 CPU 기계어가 아닌, Pyle VM 전용 명령어 집합
if/else
,while
,for-in
,return
,importpy
등 기능을 바이트코드로 매핑
4. **Stack-Based VM (가상 머신)**
- 스택 기반 구조로,
ADD
명령어는 스택 최상단 두 값의 합을 계산 후 결과를 다시 스택에 푸시 - 함수 호출, 변수 관리, 입력/출력 기능 구현
- 예:
const math = importpy("math"); echo(math.pi);
→ Python 모듈 사용 가능
결론
Pyle은 컴파일러/VM 설계 학습을 위한 교육용 프로젝트이며, GitHub(importpy
를 통해 지원.