비선형 스토리 제작때문에 작업중이고, 어려운건 다 넘겨서 거의 막바지같은데

전역변수 관리가 좀 까다롭게 느껴짐


왜냐하면 다이얼로그 텍스트 해석기의 실행순서에 따라

초기화되지 않은 전역변수에 어떻게 접근할건가 하는 문제가 생기기 때문이었음



# definition.txt


var money = 0

var player_name = “Jack”

var has_met_monster = false



# story.txt


# definition.txt에서 정의한 전역변수에 접근

# 어디서 반드시 definition이 먼저 해석되어야 접근 가능

if has_met_monster

    “I saw a monster!”

end




처음 생각했던건 디렉토리 전체를 순회하면서 변수 선언에 한해서만 별도의 심볼테이블을 만든 후

나중에 개별 스크립트를 불러올 때마다 심볼을 찾아서 링킹하는 방식이었는데

내가 예상 못했던 문제가 표현식 관리임


var int_value = 10 + 5



초기화를 이렇게 시키는 경우라면,

심볼 테이블에 이름만 등록할 수가 없는 문제가 있다. 누가 쓰기 전에 식이 평가된 후 반드시 초기화가 되어야 함


따라서 심볼 테이블을 만들기 위한 표현식 관리 코드를 추가로 만들어줘야 한다

이렇게되면 기존 파서에서 이미 상수나 문자 리터럴 등을 하나의 테이블에 모아주며 내부코드화 시키고 있는데, 그 코드들을 활용할 수가 없다


그래서 다음 대안으로 생각한건 init.txt와 같은 이름을 가진 텍스트 파일이 있는 경우에

반드시 가장 먼저 실행해서 자원들을 등록하도록 강제하는 방법을 생각해 봤다


적절할까?