Показать сообщение отдельно
Старый 19.07.2008, 12:57   #18
jimon
 
Сообщений: n/a
Ответ: Парсинг скриптов

DimasSup
не известно компилирует ли blitzmax\blitz3d select как переход по таблице или компилирует с кучей if'ов

я делал в blitzmax так что каждая команда ето отдельный тип у которого есть тип "do"
потом при загрузки скрипта все команды создают ети типы и заводятся в общий список
после етого идет простой проход по циклу с управляющей переменой
(та которая содержит номер исполняемой команды, нужна для реализации всяких функций, переходов и тд)

в идеале можно сделать нечто типа мета-программирования
у нас есть Engine.dll,Game.exe и Game.dll который реализует всю логику игры
пишем компилятор который переводит наш простой сриптовый язык
в тот язык который может скомпилироватся в dll'ку
и потом компилируем эту dll и подрубаем к игре

в принципе схожая вещь сделана в quake3,quake4,doom3
но там C/C++ код специально компилировался
и запускался на виртуальной машине

такой подход тоже можно реализовать, он называется
реал-тайм компиляцией в нативный код
тоесть при загрузки скрипта, встроенный компилятор просто
компилирует его в нативный код и запускает из программы )
 
Ответить с цитированием