Skip to content

Text 파일 컴파일러 구현 #5

@luke0408

Description

@luke0408

학습 목표 및 배경

Learning Goal:

text 파일에 작성한 코드를 파싱해서 js 코드로 돌려보기

Background:

.js.txt 파일의 차이는 확장자가 다르다는 것 뿐 본질적으로 다르지 않은데 js는 tokenizer, lexer, paser 등을 거쳐 컴파일이 됩니다.

그렇다면 역으로 txt 파일. 즉, 문자열을 컴파일할 컴파일할 수 있다면 txt도 코드처럼 사용할 수 있지 않을까?

실습 구현

Implementation:

  1. 텍스트 파일을 읽어온 후, 그 안의 코드를 토큰화(Tokenization)하여 문법적 단위로 분리합니다.
  2. 그 후, 문법 분석을 통해 AST(Abstract Syntax Tree)를 생성하고, 이를 JavaScript 코드로 변환하여 실행 가능한 형태로 만듭니다.
  3. 변환된 코드를 Node.js 환경에서 실행하여 결과를 출력하고, 안전한 코드 실행 환경을 구현합니다.

Tools/Techniques:

  • 언어 및 프레임워크: JavaScript, Node.js
  • 파서 도구: Acorn
  • 안전한 코드 실행: Node.js vm 모듈
  • 파일 처리: Node.js fs 모듈

실습 진행 단계

Steps:

  1. 텍스트 파일을 Node.js fs 모듈을 사용하여 읽어옵니다.
  2. 토크나이저(Tokenizer)를 구현하여, 파일에서 읽어온 코드를 문자열에서 토큰으로 변환합니다.
  3. 렉서(Lexer)와 파서(Parser)를 이용하여, 토큰을 바탕으로 AST를 생성합니다.
  4. 생성된 AST를 JavaScript 코드로 변환합니다.
  5. Node.js vm 모듈을 사용하여 안전한 샌드박스 환경에서 코드를 실행합니다.
  6. 결과를 출력하고, 코드 실행이 예상대로 이루어졌는지 검토합니다.

Expected Outcomes:

  • 토큰화파싱을 통해 코드의 구조를 분석하는 방법에 대한 이해
  • AST를 이해하고, JavaScript 코드로 변환하는 방법에 대한 이해 향상
  • 동적 코드 실행의 기본 개념을 배우고, 이를 안전하게 처리하는 방법을 실습
  • 컴파일러 및 인터프리터의 핵심 개념을 실제 코드로써 경험

Checklist

for Befor

  • Clear Learning Goal: 학습 목표가 명확하게 설정되었나요?
  • Background Understanding: 주제에 대한 배경 지식이 충분히 설명되었나요?
  • Appropriate Tools/Techniques: 실습에 사용할 도구와 기술 스택이 잘 정의되었나요?
  • Clear Steps: 실습 진행 단계를 구체적으로 작성했나요?
  • Expected Outcomes: 실습을 통해 얻을 수 있는 결과와 학습 포인트를 명확히 제시했나요?

for After

  • Learning Goal Achieved: 학습 목표를 달성했나요?
  • Key Concepts Understood: 실습 중 학습한 핵심 개념을 이해했나요?
  • Challenges Encountered: 실습 중 겪은 어려움과 이를 해결한 방법을 기록했나요?
  • Real-world Application: 배운 내용을 실제 상황에 어떻게 적용할 수 있을지 생각해 보았나요?
  • Future Improvements: 실습을 통해 개선할 점이나 더 깊이 학습하고 싶은 부분은 무엇인가요?
  • Additional Practice Needed: 향후 유사한 실습을 진행할 때 개선해야 할 부분이나 추가 실습이 필요한 부분은 무엇인가요?

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions