forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Парсинг скриптов (http://forum.boolean.name/showthread.php?t=5817)

LD 27.02.2008 23:30

Парсинг скриптов
 
Такая вот проблема. Думаю над системой парсинга скриптов (пока не начал реализовывать) и столкнулся с такой проблемой. Допустим, у меня есть скрипт файл, который надо отпарсить:

---------------Script.uss content----------------------
MoveEntity door, 0,.1,0
y=y+1
--------------end script--------------------------------
, где door - какойто объект, существующий в мире (заданный изнутри блица), а y - какая то переменная, заданная изнутри блица.

Как отпарсить эти строчки? Причем проблема то даже не в общем парсинге, а в парсинге entity из скрипта. Ведь entity в блице это указатель на объект, и вот как присвоить какое нибудь значение внутренней блицевской переменной из скрипта? Или сделать что нибудь с entity из скрипта? А то пока никаких идей...

jimon 27.02.2008 23:42

Ответ: Парсинг скриптов
 
LD
регистрировать в скриптовой машине имя переменой и указатель на нее
так ты можешь из скрипта менять блицевские переменые
ps. это вроде идинственый простой метод

LD 28.02.2008 00:19

Ответ: Парсинг скриптов
 
Мне интересны не сколько простые методы, сколько общий алгоритм действий, ведь полезнее будет знать несколько методом решения данной задачи. Но все равно спасибо )

jimon 28.02.2008 00:39

Ответ: Парсинг скриптов
 
LD
к примеру еще можно регистрировать переменую после выделения ей памяти
(написать свой менеджер памяти, но тогда не очень понятно с именами переменных)

Genius 28.02.2008 18:37

Ответ: Парсинг скриптов
 
просто возьми готовый скриптовой язык для Б3Д,например есть BSE.

jimon 28.02.2008 19:55

Ответ: Парсинг скриптов
 
Genius

может сразу играть в готовые игры и кушать с ложечки ?
зачем что-то делать ?
зачем жить ?
давайте убьем себя ап стену и лишим других людей от наших проблем

LD 28.02.2008 21:48

Ответ: Парсинг скриптов
 
Про существование BSE я знаю, но зачем использовать готовое, когда интереснее написать свое. Так легче понять принцип работы скриптовой машины, и соответственно зная архитектуру легче ей оперировать.

Leito 03.03.2008 19:41

Re: Парсинг скриптов
 
ужас вы где таких слов понабрались, нельзя попростому)
while mid(s,i,1)<>"."
i++
wend
вот так это делается.

jimon 03.03.2008 21:47

Ответ: Парсинг скриптов
 
Leito
у тебя в строке содержится "door_1"
как ты найдешь по тексту в строке переменную в блице ?
при етом строка может менятся ...

если ты мне раскажешь как найти того чего нет (имя переменых убиваются
при компиляции) то буду очень благодарен :)

LD 09.06.2008 20:33

Ответ: Парсинг скриптов
 
А зачем обращаться именно по имени? Допустим перед началом работы передает в скрипт запрошенные им переменные (допустим пусть это будет адрес области памяти, в которой храниться значение этой переменной (относится и к ентитям также)). Но следовательно возникает две проблемы:

1) Как узнать в какой области памяти храниться переменная (желательно еще знать ее тип, чтобы правильно определить смещение по блоку)

2) Как оперировать переменной зная ее адрес в памяти (как издевательство можно ассемблерной врезкой работать с регистрами проца (то есть хранить переменную не только в памяти но и в регистрах (допустим y в ах? и.т.д) и соответственно передавать в скрипт нужный регистр... Но в этом методе есть свои минусы.... Может есть какие нибудь еще варианты? Все таки интересно с памятью - надеюсь сможете помочь )

jimon 09.06.2008 21:14

Ответ: Парсинг скриптов
 
LD
Почитай про http://ru.wikipedia.org/wiki/JIT
но в любом случае тебе нужно будет делать обвязку
чтобы из программы обращатся к переменным скрипта или наоборот

MiXaeL 15.06.2008 19:47

Ответ: Парсинг скриптов
 
Может я конечно туплю, не бить сильно...
Но разве нельзя использовать сначала NameEntity, цикл по всем entity и сверять EntityName? В dll'ках (например в darkextension), кстати, были функции FirstEntity, LastEntity, NextEntity и т.д.

jimon 15.06.2008 20:08

Ответ: Парсинг скриптов
 
Michael
Код:

; .. тут мы еще можем обратится к переменной SomeVar
Global SomeVar% = 1

;...............

; а тут напрямую НЕЛЬЗЯ обращатся к SomeVar, у нас есть только NeedVariable
Global NeedVariable$ = "SomeVar"

как ты получишь переменную SomeVar если у тебя есть только переменная NeedVariable ?

идинственый вариант это сохранить где нибудь имя и адресс переменной в первой части
а во второй уже по имени получать адресс и обращатся к переменной

MiXaeL 15.06.2008 20:18

Ответ: Парсинг скриптов
 
ну так а что мешает проверить If EntityName$(entity)="NeedEntity" then ...
Ну и естественно, это только для объектов.

HolyDel 15.06.2008 20:28

Ответ: Парсинг скриптов
 
ну дык ето не будет работать.
у тебя то EntityName(ent) = SomeVar.

jimon, а как узнать адрес блицовой переменной? разве льзя?


Часовой пояс GMT +4, время: 11:20.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot