스크립트툴에대해서 궁금한데요

프로그래밍 일반에 관한 포럼입니다.

Moderator: 류광

Locked
leeram1
Posts: 2
Joined: 2009-10-24 03:32

스크립트툴에대해서 궁금한데요

Post by leeram1 »

정확히말하면 스크립트툴이 뭔지는 아는데요 레포트가 스크립트툴에 대해 써오는건데

도저히 감이안와서 한번더 물어봤더니 제작과정같은걸 써오라고하시더라구요 그러면서 예로들어주신게

구문분석 파싱 토큰 이런거엿는데 어떻게 공부해야할지도모르겠고.. 스크립트 툴이라는 용어는 네이버든 구글이든

정말 정보가적고.. 그나마잇는거라곤 제작중입니다 라는 개인사생활글밖엔없네요

그래서 질문드립니다

스크립트툴에대한 정의와 사용하는이유 그리고 제작과정을 알려주시면 감사하겠습니다.. 저위에 써있는 용어들의

간단한 설명도 써주신다면 정말정말 감사드리겠습니다...
Zeprod
Posts: 480
Joined: 2006-11-04 16:24
Location: Creaty Networks
Contact:

Post by Zeprod »

예전에 간단한 스크립트 문법과 실행엔진을 만들어본적이 있어서 글 남겨봅니다.


우선 처음 스크립트를 만들때에는 간단한 문법을 정의합니다.

Code: Select all

IF (조건) THEN
   (실행구문)
[ELSEIF (조건) THEN (실행구문)]
[ELSE (실행구문)]
ENDIF
IF 문의 기본적인 문법을 이렇게 잡았었죠.
C 언어와 다르게 의사코드와 최대한 비슷한 모습으로 만들었는데요. ELSEIF를 따로 키워드로 만든 이유가 있습니다.

위와같이 구문을 일종의 블럭처럼 다루려면, 처음과 끝을 구분할 수 있는 구분자가 필요합니다. 이것은 컴퓨터가 스크립트를 처리하는 FSM을 돌면서 블럭을 간단히 구별하기위함입니다.

C언어에서는 {} 로 감싸서 처리했지만, 저같은 경우 의사코드와 비슷해보이기 위해 {}를 제거하고, ENDIF 라는 추가키워드를 넣었죠. 이런 키워드들이 구분자, 토큰이라고 부르는 특수한 단어들입니다.



그리고나선, 스크립트 엔진을 만들기전에 위의 문법을 받아들일 오토마타(FSM)를 만듭니다.

Code: Select all

IF -> 조건체크 -> THEN -> [일반 실행(case1)] -> {ELSEIF 이면} -> 조건체크 -> THEN -> case 1로 이동
                                                                  -> {ELSE 이면} -> 일반실행(case2) -> ENDIF
                                                                  -> {ENDIF} -> 종료
일반 실행부분에서 조건체크 결과에따라 실행 또는 스킵 부분을 처리하면 완벽한 IF-THEN 문법을 구문분석하는 오토마타가 됩니다. 위의경우 IF 구문만 있기 때문에, 아주 간단하게 만들 수 있지만, 이것이 다른 수많은 문법들과 얼키고 설키면 엄청난 분량이 됩니다.

변수 선언, 대입, FOR 구문, 함수정의 등등... 여기에 클래스까지 지원하려면 엄청납니다. :)18



이제 남은건 위의 오토마타에 맞는 스크립트 엔진을 코딩하는 과정만 남았습니다. 중요한 것은 스크립트 코드를 통체로 읽어오는 것이 아니라, 각각의 문법기준에 맞게 적당한 단위로 잘라 보관하면, 오토마타가 순회하는 프로그램을 만들기 편할 것입니다. 바로 이런 과정을 파싱이라고 하며, 이 이상의 내용은 프로그래머의 전공이니 더이상 말씀 안드려도 아시겠죠?
세상이 기다리는 나만의 SHOW!
----------------------------------------------
Zeprod 홈 : http://Zeprod.org
Project. Creaty : http://Creaty.net/
Creaty 게임제작 커뮤니티 : http://Creaty.net/game/
----------------------------------------------
leeram1
Posts: 2
Joined: 2009-10-24 03:32

Post by leeram1 »

와... 그렇게찾아도안나왔는데 정말 감사합니다 이해가어느정도간거같아요

정말 정말 감사합니다 ㅠㅠ 나중에이글이 저같은사람이생겻을떄 또 해결책이될수잇으면 좋겠네요 ㅠ
Locked