자신만의 프로그래밍 언어와 가상 머신을 파이썬으로 구축하는 방법
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

자신만의 프로그래밍 언어와 가상 머신을 파이썬으로 만들다!

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

프로그래밍 언어 및 컴파일러 설계에 관심 있는 소프트웨어 개발자, 중급~고급 수준

핵심 요약

  • Pyle은 교육 목적의 프로그래밍 언어로, Lexer, Parser, Compiler, Stack-Based VM의 4단계 구조를 기반으로 설계됨
  • Lexer.pyle 스크립트를 토큰(예: KEYWORD(let), NUMBER(10))으로 분해하고, ParserAbstract 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()에서 확인 가능. Go로 재작성하여 성능 향상과 학습 심화를 목표로 하며, Python과의 호환성은 importpy를 통해 지원.