Есть ли способ конвертировать C-код в JavaScript и с JavaScript на C? Я нашел V8 juice
, который может генерировать классы JavaScript-side
из С++, но это только один способ (С++ для JavaScript).
Я не ищу программное обеспечение.
Есть ли способ конвертировать C-код в JavaScript и с JavaScript на C? Я нашел V8 juice
, который может генерировать классы JavaScript-side
из С++, но это только один способ (С++ для JavaScript).
Я не ищу программное обеспечение.
Очень, очень сложно: Javascript - это сильно динамический язык, в котором во время выполнения можно изменить практически все: имена переменных, функций, типов и т.д. Таким образом, он очень плохо отображает C. И это даже не с учетом eval()
, который позволит вам создавать произвольные куски Javascript в строках и запускать их.
Любой переводчик Javascript должен будет иметь возможность справляться с такими вещами, а это значит, что ему нужно будет перевести Javascript на C во время выполнения, что делает его JIT, который вы уже используете.
Возможно, вам захочется взглянуть на запись C-связок для Javascript. Это позволит вашему Javascript-коду вызывать код C и наоборот. Это позволит людям писать плагины в C, компилировать их в .so
разделяемые библиотеки, которые вы теперь можете загружать и запускать из своего Javascript-кода. Это означает, что вам не нужно ничего переводить.
Javascript не моя область, поэтому я не могу рекомендовать какой-либо конкретный механизм, я боюсь, но я был бы очень удивлен, если V8Juice, который вы уже нашли, не позволил вам сделать это.
Может быть возможно перевести подмножество JavaScript в Lua, используя Castl, а затем перевести код Lua в C, используя lua2c.
В качестве альтернативы может быть возможно скомпилировать JavaScript в Python, а затем преобразовать исходный код Python в C с помощью компилятора RPython. Поскольку RPython является подмножеством Python, это должно позволить подмножеству JavaScript быть переведенным в C.
Существует также компилятор под названием ts2c, который, по-видимому, может переводить исходный код JavaScript и TypeScript в C.
Еще один вариант - скомпилировать JavaScript в C или WebAssembly с помощью NectarJS.
Зачем конвертировать, когда вы можете просто вставлять?
https://code.google.com/p/v8/ "V8 может работать автономно или может быть встроен в любое приложение на С++".
Будучи встроенным в приложение С++, JavaScript может обращаться к любой системе, к которой имеет доступ приложение С++, исключая необходимость конвертировать в первую очередь. Я бы ограничил, что имеет доступ к некоторым причинам безопасности. Веб-браузеры, очевидно, являются самой видной формой JavaScript, встроенной в приложение на С++. Как видно из названия, JavaScript - это язык сценариев, который не предназначен для компиляции в код сборки/машины, как код C.
Этот проект выглядит довольно многообещающе, хотя и находится в стадии разработки.
https://github.com/andrei-markeev/ts2c
Вы можете конвертировать JavaScript в C онлайн здесь:
Язык C может использовать чертовски много вещей, которые не могут выполнять javascript или v8, в частности системные программы, такие как управление памятью, прямой доступ к памяти, прерывания, код сборки, управление потоками. Таким образом, невозможно преобразовать c в javascript, если это не очень простой код без какого-либо системного кода. С nodeJS (не v8 javascript) вместе с системным оберточным кодом выполняют некоторые функции уровня системы. Опять же, это сложная часть преобразования. Даже если мы сможем преобразовать этот простой код, выполнение c и преобразованного javascript отличается тем, что оно основано на движке v8.
Можно преобразовать javascript в C. Поскольку C может обрабатывать любые исполняемые файлы, включая интерпретаторы.
JavaScript-интерпретатор QuickJS от Fabrice Bellard также включает в себя JS-C-компилятор.
Вы можете использовать модули С++ в nodejs. Пример: https://github.com/shtylman/node-presentation