Возможно ли, что строковая переменная может быть проанализирована как фактическая строка кода на C++? Например, может ли эта строка, "x=0"
, анализироваться как действительный код и установить значение x
(некоторая случайная величина в программе) до нуля? То, что я планирую сделать с этим, - это то, что я хочу сделать простой плоттер на C++. Пользователь вводит функцию (функция будет в терминах x
и y
и будет иметь нулевое значение) для построения в виде строки (например, 2*y+x
), которая затем преобразуется в объект кода и затем вычисляется соответствующим образом с использованием цикла.Разбор строки как строки кода в C++
ответ
Короткий ответ «Нет». Вы не можете компилировать C/C++ «на лету», как это, поскольку это скомпилированный язык, а не интерпретированный.
Но вот идея: вы можете встроить JavaScript-интерпретатор, используя the SpiderMonkey API, который может интерпретировать все фрагменты кода вашего примера, поскольку синтаксис JavaScript очень похож на C/C++ в этом отношении.
Поскольку C++ - это скомпилированный и связанный язык, он не подходит для летной оценки.
Но я достиг чего-то похожего на ваши цели в прошлом с C++ на embedding a Python interpretter для оценки кода Python как строки «на лету» и передачи результатов на код C++.
Некоторые другие популярные языки сценариев, которые могут быть встроены в программу на C++, - Lua и Squirrel.
В Java я сделал то же самое, вставив Groovy interpretter.
Вам необходимо интегрировать язык interpretter сценариев в ваш код «вложение», а затем передавать значения из кода языка сценариев к вашему C++ код процесс «marshaling»
Если вы действительно хотите C++ синтаксис, которые могут быть интерпретируются с, это теоретически можно разработать динамический анализатор и interpretter для подмножества языка, но C++ является сложным языком и такая задача была бы огромна проведения сопряжено с трудностями и по существу, случай неправильного использования инструмент для работы.
См. Мой ответ; Я думаю, что JavaScript имеет более близкий синтаксис к C/C++, чем Java, Python или любой другой упомянутый язык. –
Я работал над проектом, который запускал C-компилятор для «оценки» C-кода. Хлоп. – nalply
Короткий ответ: «Да». Компиляция C++ на лету отлично работает с использованием C++ JIT. От llvm.org
A Just-In-Time (JIT) системы генерации кода, который в настоящее время поддерживает X86, X86-64, ARM, AArch64, MIPS, PowerPC, Systemz и PowerPC-64.
Предполагается, что вы готовы связать большую часть компилятора в своей программе, чтобы достичь этого. С помощью согласованных усилий вы сможете написать «eval» поверх существующего API.
- 1. Разбор строки в C
- 2. Разбор строки в C#
- 3. Разбор строки в C
- 4. Разбор строки в C++
- 5. Разбор строки в C
- 6. Разбор строки в C#
- 7. Разбор строки в C++
- 8. Разбор строки с C++
- 9. C разбор строки, разделенной
- 10. C Разбор строки
- 11. Разбор определенной строки в C#
- 12. Разбор строки DateTimeOffset в C#
- 13. Разбор командной строки в C
- 14. разбор строки в подстроки C#
- 15. Разбор XML-строки в C#
- 16. Разбор строки |
- 17. Разбор строки внутри строки?
- 18. Разбор строки строки Java
- 19. Разбор строки на объект C#
- 20. Разбор строки C# LINQ выражение
- 21. разбор строки в Groovy?
- 22. Разбор шестнадцатеричной строки стиля C#
- 23. Разбор строки
- 24. Java: Разбор строки до двоичного кода
- 25. Разбор каждой строки текста строки
- 26. Разбор строки в коде Unity3D (C#)
- 27. Разбор строки в структуре typedef в C
- 28. Разбор Параметры командной строки
- 29. Разбор строки в PHP
- 30. Разбор строки в php
Не изначально нет. Вам нужно будет создать свою собственную систему, и это не тривиально. – Borgleader
Насколько я знаю, на C++ нет встроенного синтаксического анализатора. Но вы можете попробовать с boost :: spirit. Создание парсера для таких функций не должно быть слишком сложным. –
Этот вопрос не соответствует теме, потому что речь идет о функции, которая не поддерживается на языке. Быстрый ответ на вопрос - это просто «Нет». –