KOSHMARIK
А вот выход
KOSHMARIK
fgntfg
Боюсь придётся изобретать
KOSHMARIK
Т.е. нужен генератор исходников луа
KOSHMARIK
Вот возьмём редактор Старкрафт. Там есть игровые триггеры. Игрок в менюшках пишет сценарий карты. Потом редактор все это как то преобразует в скрипт
KOSHMARIK
Вот мне надо тоже самое сделать
KOSHMARIK
Только на выходе получить луа,а не камтомный язык близов
KOSHMARIK
Мой редактор экспортирует в хмл
KOSHMARIK
Как ее пробросить в луа я хз
Snusmumriken
local data = parsed_xml for i, v in ipairs(data) do if v.tag == "function" then _G[v.props.name] = function() for i, v in ipairs(v.content) do if v.tag == "SetVariable" then _G[v.props.var] = v.props.val end if v.tag == "Call" then _G[v.props.func](v.props.arg) end end end end end Это для результата парсинга аналогичного моему примеру преобразований xml => lua. И оно не полное, разумеется, циклов и вычислений, например не поддерживает. Нужен похожий на это велосипед, который делает функции, выполняющие действия по списку. Должны быть учтены все возможные команды.
Snusmumriken
Ещё можно более грубо, тупо преобразовывать теги в строчки кода, а потом loadstring'нуть. Очень дёшево и сердито, но подвержено багам и хакам.
KOSHMARIK
Короче малой кровью не обойтись
KOSHMARIK
И все таки придется брать молоток и изобретать
Snusmumriken
"Малая кровь" это примерно так.
Snusmumriken
Но во-первых, это крайне говёный подход (регулярки по XML), во-вторых будет адово глючить и регулярки нужно усложнять для худо-бедной гибкости, и это всё равно будет приводить к глюкам. По хорошему нужен парсер XML в таблички и работа с табличками.
Snusmumriken
Ну типа раз тут в XML сразу действия генерятся — теоретически можно и сразу в код.
Godruma-vihari Dasa
Можно посмотреть библиотеки XSLT для C, C++. Тогда можно сделать DLL или SO и подключать.
Alex
Приветствую всех, есть кто может помочь за деньги. Есть софт по windows общается с внешним миром через lua. Есть даже примеры скриптов. И инструкция производителя софта. Есть скрипт который написан но не хватает пары библиотек.
Alex
Я нифига не программист. Пытаюсь изучить, но это будет совсем не быстро. Или хотябы кто поможет разобраться, тоже не бесплатно.
Alex
Софт winols, редактор бинарных файлов
mva
Хорошо,абстрагируемся от впф и от того,откуда берется xml файл с данными. Допустим, у меня есть хмл файл. Я ищу утилиту/либу/движок, которой можно скормить этот файл,и чтоб на выходе утилита сгенерировала исходник луа. Я знаю,что можно самому сесть и написать кастомный парсер хмл ,потом окунуться с головой в синтаксические анализаторы,теорию компиляторов и потеряться там на полгода))) потому то и ищу решение из коробки,чтоб не изобретать велосипед. Привожу пример хмл файла и готового скрипта который я хочу получить на выходе. Конечно пример упрощён,по факту утилита должна уметь генерировать любые языковые конструкции луа из исходного хмл файла (таблицы, циклы, и прочее)
я тебе первым же предложением сказал, что XML это язык РАЗМЕТКИ ДАННЫХ Lua - язык программирования. НЕВОЗМОЖНО (жалко, красного цвета нет) просто взять и какой-то волшебной палочкой превращать случайно взятый XML-файл превратить в "исходник Lua". Это сущности разного порядка. Для начала нужно чтобы содержимое XML-файла имело чёткий формат. Далее - чтобы данные, содержащиеся в нём, вообще, хотя бы потенциально были чем-то что вообще ПРИНЦИПИАЛЬНО возможно превратить в код. В-третьих, должна быть спецификация какое содержимое в какой код превращается. Тогда "волшебная палочка" будет называться "транслятор". И её будет ПРИНЦИПИАЛЬНО ВОЗМОЖНО написать. И возрастёт шанс того что она уже существует.
mva
Как ее пробросить в луа я хз
написать транслятор. Судя по коду на скриншотах (вообще, убивать за такое надо), это будет не сильно сложно.
mva
Зачем синтаксические анализаторы и теорию компиляторов-то? Нужно просто распарсить xml и сгенерить текст
чтобы правильно распарсить рандомный XML-документ к нему должна быть спека. Чтобы правильно сгенерить код - должна быть спека на маппинг трансляции.
KOSHMARIK
Окей. Нужен транслятор из хмл в луа. Есть такой?))
KOSHMARIK
Сегодня была беседа
KOSHMARIK
Судя по всему не
mva
XML - это язык разметки
mva
ОЧЕНЬ расширяемый
mva
он сам по себе не транслируется в Lua
mva
транслироваться могут тольуо данные обёрнутые в него
mva
при наличии спецификации на эти данный
mva
транслятор будет не из xml, а вот этого конкретного формата данных УПАКОВАННОГО в XML
KOSHMARIK
Вот такой мне и нужен. Я для этого сюда и пришелн
KOSHMARIK
Найти коробочное решение
KOSHMARIK
Чтоб не изобретать велосипед
mva
его нет
mva
твоя задача сама по себе велосипед
mva
для развития требует изобретения следующего велосипеда
mva
всё в порядке
mva
коробочных решений тут быть не может
KOSHMARIK
его нет
Я об этом и написал в начале
mva
(правильным решением было бы изначально делать транслятор результата труда мартышки с мышкой не в XML, а сразу в Lua)
Aydar
Я об этом и написал в начале
Вам надо взять xml парсер готовый, распарсить xml в луевую табличку, написать код который из этой таблицы сгенерирует lua код.
KOSHMARIK
Я удивлен что так много применения луа, и нигде нет средств автоматизации для него. Чтобы блондинка с третьим размером груди, условно, могла набросать блоков с логикой, и под капотом движок бы преобразовал ее визуальные блоки в скрипты. Ну ведь так работают почти все игровые редакторы ,где игрок тычет кнопкой в необходимые команды, создавая сценарий карты, и потом данные с этих форм под капотом транслируются в скрипт,который игровой движок хавает.
KOSHMARIK
(правильным решением было бы изначально делать транслятор результата труда мартышки с мышкой не в XML, а сразу в Lua)
Правильным было б писать на шарпе.в шарпе Есть Розлин,он умеет xml дерево преобразовать в исходник Шарпа, и налёту подгрузить полученную сборку к материнскому приложению.но у нас много Легаси систем на луа. Да и не было Розлина когда мы ее проектировали
mva
Правильным было б писать на шарпе.в шарпе Есть Розлин,он умеет xml дерево преобразовать в исходник Шарпа, и налёту подгрузить полученную сборку к материнскому приложению.но у нас много Легаси систем на луа. Да и не было Розлина когда мы ее проектировали
ещё раз: случайно взятый xml-файл нельзя преобразовать в исходник на ЛЮБОМ языке программирования, который будет делать полезную работу. Максимум что можно - преобразовать в таблицу (массив) на основе DOM-дерева.
mva
Правильным было б писать на шарпе.в шарпе Есть Розлин,он умеет xml дерево преобразовать в исходник Шарпа, и налёту подгрузить полученную сборку к материнскому приложению.но у нас много Легаси систем на луа. Да и не было Розлина когда мы ее проектировали
ещё раз скажешь "преобразовать xml файл в ..." (исходник на любом языке) без уточнения что речь идёт о КОНКРЕТНОМ xml-файле с КОНКРЕТНОЙ спецификацией КОНКРЕТНЫХ имён тегов, аттрбутов и значений (а в этом случае он уже перестаёт быть "xml-файлом", а становится "файлом формата <название формата документируемого спецификацией>") - и я буду очень сильно ругаться
mva
в восьмой раз:
mva
грубо говоря, XML - это нотная тетратдка в которой ты записал ноты песни
KOSHMARIK
Да я знаю что такое хмл
KOSHMARIK
Вопрос был не про него жеж
mva
ты спрашиваешь "как тетрадку преобразовать в песню"
mva
без уточнения того что за тетрадка и что у неё внутри
mva
Вопрос был не про него жеж
как не про него, если ты спрашиваешь про инструмент который будет превращать xml в lua?
mva
Правильным было б писать на шарпе.в шарпе Есть Розлин,он умеет xml дерево преобразовать в исходник Шарпа, и налёту подгрузить полученную сборку к материнскому приложению.но у нас много Легаси систем на луа. Да и не было Розлина когда мы ее проектировали
ну и таки раз было "много легаси систем на луа" почему было сразу не сохранять в Lua? Дай угадаю, потому что самодельный формат, упакованный в XML можно транслировать не только в Lua, но и во что угодно, хоть в js? Замечательно! Только кто-то же всё-таки должен написать эти трансляторы-то, правда?
mva
откуда бы в природе появиться коробочным трансляторам из вашего кастомного самопридуманного формата каким-то иным способом, кроме как если их напишете вы (те же люди, кто и сам формат из которого надо транслировать)?
mva
но, как бы, работает именно так и никак иначе
mva
а для облагчения работы тебе могут понадобиться парсер XML и... да, впринципе, у Lua не такой большой вокабуляр, можно и "руками" генерировать код прямо "в лоб"
mva
ну, можно ещё сериализаторы/десериализаторы посмотреть, может что вкусное найдёшь
KOSHMARIK
И да, экспортить из wpf форм напрямую в луа , задача гораздо сложнее чем кажется на первый взгляд. Но визуальное программирование ведь как то это делают. В unreal редакторе ведь визуальные блоки (блюпринты,) как то парсят и генерят исходники на плюсах
KOSHMARIK
Я подозреваю что там тоже хмл как промежуточный формат,но утверждать не буду
Aydar
И да, экспортить из wpf форм напрямую в луа , задача гораздо сложнее чем кажется на первый взгляд. Но визуальное программирование ведь как то это делают. В unreal редакторе ведь визуальные блоки (блюпринты,) как то парсят и генерят исходники на плюсах
В unreal у блюпринтов свой формат и люди которые писали движок точно знают как из этого формата генерировать код. Они взяли и написали такой генератор. Вам предложили сделать то же самое, в чем проблема? Ваш xml и есть по сути "свой формат", как люди которые не работают в вашей конторе могут написать генератор за вас?
Василий
/help@FailsBot
FailsBot
/help@FailsBot
USAGE: /help - prints this message; /vzhuh [message] - do vzhuh; /start - info about bot. Plugins /battery /cdecl /dnsflag /ebalo /find_hobby /findyourselfahobby /getsmile /qt_bugs /reactos_bugs /strelka /strelkaraw /suggest /uptime - shows bot's uptime since last restart; /waifu /xkcd - shows random or numbered XKCD comix;
KOSHMARIK
что-бы за него кто-то сделал )
Ну всегда хочется найти готовое решение. Жаль что для моей задачи не нашлось))))
KOSHMARIK
Я честно говоря так и думал
OptimusZero
для lua есть отличные генераторы кода из юлоков
KOSHMARIK
для lua есть отличные генераторы кода из юлоков
Надо посмотреть в каком формате у них промежуточные данные
OptimusZero
https://blockly-demo.appspot.com/static/demos/code/index.html?lang=uk
KOSHMARIK
После блоков
KOSHMARIK
Спасибо, покопаюсь