Larban 15 Опубликовано: 30 апреля, 2015 (изменено) Доброго всем времени сутокя хотел бы показать вам плод трудов за последние 3 дня (если считать именно время потраченное на разработку я справился за день)библиотека поможет всем тем кому lua показался "неудобным"библиотека конвертирует код c++ в luaнапример вот программка #include <iostream> #include <string> int main() { std::string str; std::cout << "Hello" << " " << "user" << "!" << "\n"; std::cin >> str; if(str == "hello"){ std::cout << ":)"; }elseif(str == "hi"){ std::cout << ":) hi"; }else{ std::cout << ":( bye"; } std::cin >> str; return 0; } прекрасно выполняется в visual studio 2010 (если добавить в начало: #include "stdafx.h")и превращается в: io = require("io") string = require("string") function main() str = "" io.write("" .. "Hello" .. " " .. "user" .. "!" .. "\n") str = io.read(); if str == "hello" then io.write("" .. ":)") elseif str == "hi" then io.write("" .. ":) hi") else io.write("" .. ":( bye") end str = io.read(); return 0; end main() не очень красивый Lua код больше смахивает на C++ (но тем не менее работает так-же как и в Visual Studio 2010)так-же если вы введете например "#include <MyClassList.h>"то вместо этой строки получите все содержимое файла "/lib/CpplLibs/MyClassList.h" (в том файле должен быть именно lua код)пример использования: Cppl = require("Cppl") Cppl.convert("путь к файлу с программой c++","флаги как в шелл"[,"если есть флаг -tofile вводим сюда путь к файлу для сохранения"]) --возможные флаги --"-noprint" не печатать программу на монитор --"-tofile" записать программу в файл --"-printlog" разпечатать логи на монитор --"-returnlog" вернуть логи --флаги разделяются пробелом, в конце всех флагов поставте дополнительный пробел: "-noprint " ,"-noprint -returnlog ","-noprint -returnlog -tofile " log = Cppl.convert("program.cpp","-noprint -returnlog -tofile ","program.lua") --конвертировать и записать в файл и вернуть логи program,log = Cppl.convert("program.cpp","-noprint -returnlog ") --конвертировать и вернуть программу с логами program = Cppl.convert("program.cpp","-noprint ")--конвертировать и вернуть программу program = Cppl.convert("program.cpp","-noprint -printlog ")--конвертировать и вернуть программу и напечатать логи на монитор int x,y,z = 1024;--работает int x = 10;--работает не забываем про ";" иначе обявление переменной не будет конвертирована int *a=new int[1000]; --работает delete x,y,z;--работает array arr; --так обявляется массив чего либо %lua: --не конвертировать все после ":" до конца строки %lua* --не конвертировать пока не будет найдена строка: "*lua%" %lua: %lua* *lua% --это нужно писать в начале строки сами эти надписи стираются не буду тянуть кота за ... в долгий ящик pastebin.com uJUrPSQw буду рад любой (желательно обоснованной) критикев будущем доратобаю будет поддерживать все стандартные с++ библиотекичуть не забыл конструкцию else if нужно писать слитно иначе придется допиливать код вручную Изменено 12 июля, 2015 пользователем Larban 4 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 30 апреля, 2015 Один вопрос... Зачем? Зачем C++ конвертировать в Lua, это же полный бред. Lua - встраиваемый язык, он встраивается в такие языки как C, C#, C++ и другие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Larban Автор темы 15 Опубликовано: 30 апреля, 2015 Один вопрос... Зачем? Зачем C++ конвертировать в Lua, это же полный бред. Lua - встраиваемый язык, он встраивается в такие языки как C, C#, C++ и другие.ответ: некие игроки (например null если не ошибаюсь) жаловался на синтаксис lua видимо ему было не удобно без фигурных и круглых скобок вот я и написал конвертер c++ в lua там ведь сразу тебе и фигурные плюшки и классы и минимальная реализация собственных классов и все что только хочешь 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
KelLiN 49 Опубликовано: 30 апреля, 2015 (изменено) а меня после Tcl бесит, что аргументы функциям нужно передавать через (). набираешь print, потом (), потом стрелку влево, "" и только затем текст...И фигурные скобочки это наше всё. do end это пережитки прошлого века.Для чего нужно ? Синтаксис Lua в общем то унаследован от древних языков. Я не прочь использовать что-нибудь по приятнее. Даже свой конвертер думаю навоять, но в игре пишу меньше времени чем уйдёт на написание конвертера.В идеале разобраться бы с вирт машиной и надобавлять бы туда других языков. Изменено 30 апреля, 2015 пользователем KelLiN 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 1 мая, 2015 А структура int *a=new int[1000]; ... delete[] a; Как она у тебя обрабатывается? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Larban Автор темы 15 Опубликовано: 1 мая, 2015 (изменено) А структура int *a=new int[1000]; ... delete[] a; Как она у тебя обрабатывается? извини пока никак я с++ еще изучаю и в книге я до этого места еще не дошел напиши чего еще не хватает я добавлю Изменено 1 мая, 2015 пользователем Larban 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Larban Автор темы 15 Опубликовано: 1 мая, 2015 так не приятно когда все готово релиз а потом находишь ошибки которые раньше не находил 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
KelLiN 49 Опубликовано: 1 мая, 2015 Это в порядке вещей. Нет ничего идеального. 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 12 мая, 2015 Еще бы библиотеку python>lua и lua>python, а то питон популярный, на нем больше реализовано алгоритмов. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 12 мая, 2015 Один вопрос... Зачем? Зачем C++ конвертировать в Lua, это же полный бред. Lua - встраиваемый язык, он встраивается в такие языки как C, C#, C++ и другие. Люди любят трудности, но часто переоценивают свои возможности Еще бы библиотеку python>lua и lua>python, а то питон популярный, на нем больше реализовано алгоритмов. Да это же утопия, наверно, всякие конвертеры для языков программирования, разве нет? Может какой-то кусочек простенький и можно чего-то как-то транслировать, может он даже будет восприниматься компилятором, но код что они дадут на выходе может оказаться не только не оптимальным, но и малопонятным. Вот было бы здорово ! Выучил один язык, обзавелся "конверторами" и пишу в резюме: "Владею Delphi, C, C++, Java, ... и т.д. и т.п." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 12 мая, 2015 Зачем программированием заниматься если лень изучать его ей коду не понятно. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 14 мая, 2015 (изменено) Зачем программированием заниматься если лень изучать его ей богу не понятно. Просто когда-то интересно было изучать что-то новое, а сейчас нет. Я уже начал забывать многие языки типа паскаля и бейсика. Лучше знать что-то одно. Если перевести все стандартные ритона библиотеки на луа, то будет полная совместимость, конечно будут спавнится костыли при трансляции, но и с высокого на низкий уровень трансляция тоже корявая идет. Изменено 14 мая, 2015 пользователем Doob 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov 34 Опубликовано: 18 июня, 2015 Щас попытался открыть код на pastebin, пишет, что удален. Где взять теперь? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov 34 Опубликовано: 8 июля, 2015 Тема актуальна, нет? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
rubinsergei 1 Опубликовано: 13 марта, 2016 На самом деле годно довольно таки. Допустим, мне сложно перестроиться с С++ на lua и этот конвентор просто находка для мнея. Жаль, что раньше я эту темку не увидел 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 13 марта, 2016 IMHO, лучше перестроиться с С++ на Луа, и пользоваться всей мощью этого языка, чем вложить аналогичное (если не большее) количество усилий в освоение сего велосипеда, и последующей борьбы с его граблями. 5 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR 67 Опубликовано: 16 марта, 2016 (изменено) Втпринцепе для любителей си-подобных синтаксисов конвертор из си-подобного в луа синтаксис будет кстати, но не самого же с++, так как во первых у с++ есть возможность произвольной адресации, а во вторых в полюсах напроч отсутствует все упрощающие жизнь абстракции ( например автоматическая подстановка приметивов типов данных). Вообще было бы не плохо чтоб если в ОС на полюсах кодинг производился бы, но это бы сильно повлияло бы на сложность мода, так как пришлось бы писать на java разделитель потоков, а так как java имеет больший уровень абстракции чем с++ пришлось бы писать ещё один уровень абстракции, это бы повлияло на производительность сервера, причём в плохом смысле этого слова, так что юзаем луа) Изменено 16 марта, 2016 пользователем ALeXeR 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 17 марта, 2016 IMHO, лучше перестроиться с С++ на Луа, и пользоваться всей мощью этого языка, чем вложить аналогичное (если не большее) количество усилий в освоение сего велосипеда, и последующей борьбы с его граблями.Золотые слова, полностью согласен с Totoro. Языки Lua и С++ слишком разные для сколь-нибудь эффективной трансляции кода из одного в другой. Пользование подобным транслятором убьет все преимущества Lua. Я тоже не сразу разглядел эти преимущества, а год назад синтаксис Lua меня вообще расстраивал, но совсем недавно, освободившись от диктата C++ я стал относиться к Lua уважительно. Этому, конечно, сильно способствовало изучение Python – мощного скриптового языка, но и Lua тоже очень неплох. Вывод, который я сделал для себя: если планируешь долго пользоваться языком – хорошенько изучи его синтаксис и овладей новыми приёмами – это станет отличным вложением времени. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Wolframoviy 60 Опубликовано: 30 августа, 2021 А Линукс получится переконвертировать в луа? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 31 августа, 2021 7 часов назад, Wolframoviy сказал: А Линукс получится переконвертировать в луа? Ну, я надеюсь, осознание имеется, что линукс — это несколько необычная программа, правильно? Она общается с девайсами более-менее напрямую. Можем ли из луа мы взять и отключить прерывания, сбросить флаги из-под floating-point-операций? Если мы говорим про OC*, то я что-то сомневаюсь. Единственный реальный вариант — это собрать полноценный эмулятор какого-то SoC: проц, серийка, память, таймеры, остальные девайсы. Тогда можно потенциально написать для этой системы драйверы, собрать их вместе с ядром для процессора и радоваться жизни. * Отдельные наркоманы, впрочем, делают мини-ядра вроде eLua, где есть низкоуровневый доступ к железу. 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах