페이지 제작자의 변(?)
.. 단지 제가 기획하고 있는 시오리에 대한 아이디어를 모아놓는 페이지입니다;; 하지만 머리는 많을수록 좋은 거니까.. 아이디어 있으시면 같이 적어 주시길. -- whoami
프로젝트 명
미정; "하니" 프로젝트.. 라고 해 둘까요? (.. 으윽. 나이 폭로된다 ;; )
목표
AI
- 니세 AI
스크립트
- 유니코드 Only
- 초보자와 전문가를 같이 만족시킬만한 스크립트
- Namespacing
- Session
시오리
- Reusable 한 코드
- Protocol부와 AI부의 완전한 독립
구조
다이어그램
프로토콜 파서
- Shiori/2.x 프로토콜을 파싱
Shiori-AI 인터페이스
- Charset 변환
- Stimuli (Requests) 에 따라 AI에서 필요 데이타를 받아옴
- AI모듈에서 받은 데이타를 토대로 Response code 등을 정한다.
AI 코어
- VM (Virtual Machine) - 스크립트 함수를 다루는 부분
- Script Lexer - 스크립트를 VM에 맞는 중간코드로 변환시키는 부분
- Neuron (Script Storage) - 실제 스크립트가 저장되는 부분
디자인중인 사항
의견을 적어 주세요오~ 새로운 디자인 아이디어도;;
AI코어
인터프리팅을 하는 시기
1)
시기 |
로딩시 혹은 로딩 이전 |
형식 |
로딩 타임: (스크립트) -> (Lexer) -> (중간코드 저장) |
|
런 타임: (중간코드) -> (VM) |
장점 |
저장할 코드길이가 줄어든다, 로드 타임에 에러를 찾을 수 있다. 구조적인 스크립트 디자인에 편리. |
단점 |
새 스크립트를 넣기가 힘들다(특히 런타임에 스크립트를 추가하는 Teach 계열). 로딩이 오래 걸린다. |
2)
시기 |
런타임 |
형식 |
로딩 타임: (스크립트) -> (스크립트로 저장) |
|
런 타임: (스크립트) -> (Lexer) -> (VM) |
장점 |
새 스크립트를 넣기 쉽다. 로딩이 빠르다. |
단점 |
에러는 런타임시에 찾을 수밖에 없다. 구조적인 스크립트시 블럭 찾기가 어렵다. 데이타 처리시간이 길어진다. |
Neuron
스크립트
Namespacing
- 목적 - 서로 연관된 내용을 비슷한 이름으로 묶기 위해.
- 기본적인 아이디어 - Class
- 예
stimuli.event.OnBoot: (데이타)
- 고려내용 - 명령어의 일부를 Class처럼 만들것인가를 고려중
{{{ (예: sub string을 얻는 방법) (Class 식) mystring._substr(3,5) (일반 Function 식) substr(mystring,3,5) }}}
Session
- 일종의 모드변경 장치
- 세션 안에 지정된 부분은 이전의 세션을 Override
