-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
🧪 type/test실습형 학습 과정에 대한 이슈실습형 학습 과정에 대한 이슈⏳ to-do진행해야 할 작업진행해야 할 작업📚 topic/CSCS 관련 학습CS 관련 학습📚 topic/JavaScriptJavaScript 관련 학습JavaScript 관련 학습
Description
학습 목표 및 배경
Learning Goal:
text 파일에 작성한 코드를 파싱해서 js 코드로 돌려보기
Background:
.js와 .txt 파일의 차이는 확장자가 다르다는 것 뿐 본질적으로 다르지 않은데 js는 tokenizer, lexer, paser 등을 거쳐 컴파일이 됩니다.
그렇다면 역으로 txt 파일. 즉, 문자열을 컴파일할 컴파일할 수 있다면 txt도 코드처럼 사용할 수 있지 않을까?
실습 구현
Implementation:
- 텍스트 파일을 읽어온 후, 그 안의 코드를 토큰화(Tokenization)하여 문법적 단위로 분리합니다.
- 그 후, 문법 분석을 통해 AST(Abstract Syntax Tree)를 생성하고, 이를 JavaScript 코드로 변환하여 실행 가능한 형태로 만듭니다.
- 변환된 코드를 Node.js 환경에서 실행하여 결과를 출력하고, 안전한 코드 실행 환경을 구현합니다.
Tools/Techniques:
- 언어 및 프레임워크: JavaScript, Node.js
- 파서 도구: Acorn
- 안전한 코드 실행: Node.js
vm모듈 - 파일 처리: Node.js
fs모듈
실습 진행 단계
Steps:
- 텍스트 파일을 Node.js
fs모듈을 사용하여 읽어옵니다. - 토크나이저(Tokenizer)를 구현하여, 파일에서 읽어온 코드를 문자열에서 토큰으로 변환합니다.
- 렉서(Lexer)와 파서(Parser)를 이용하여, 토큰을 바탕으로 AST를 생성합니다.
- 생성된 AST를 JavaScript 코드로 변환합니다.
- Node.js
vm모듈을 사용하여 안전한 샌드박스 환경에서 코드를 실행합니다. - 결과를 출력하고, 코드 실행이 예상대로 이루어졌는지 검토합니다.
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
🧪 type/test실습형 학습 과정에 대한 이슈실습형 학습 과정에 대한 이슈⏳ to-do진행해야 할 작업진행해야 할 작업📚 topic/CSCS 관련 학습CS 관련 학습📚 topic/JavaScriptJavaScript 관련 학습JavaScript 관련 학습