Я начал работать несколько часов назад над транслятором псевдокода, который будет переводить определенный псевдокод, касающийся работы со стеками и очередями, в исполняемый код на языке c / c ++. У переводчика есть учебные пропусы.
Я все еще разрабатываю проект.
Я начал думать о том, как это можно сделать; Я подумал, что, возможно, лучший способ сделать это, во-первых, проанализировать псевдокод, изменить его, чтобы сделать его кодом c / c ++, а затем скомпилировать его, чтобы сделать его исполняемым.
ТЕПЕРЬ это будет означать, что на клиентской машине должен быть установлен компилятор c / c ++.
Как я работаю с .NET предложениями ( System.Collections.Generic.Queue(Of T)
а также System.Collections.Generic.Stack(Of T)
), Я думал, что решением этой проблемы будет использование того же компилятора Visual Studio, который используется для компиляции кода c / c ++.
Я изучал этот процесс, и, насколько мне известно, единственный способ компилировать код на языке c / c ++ с помощью инструмента Visual Studio — это запуск cl.exe из командной строки Visual Studio. Я нашел эту информацию здесь, на MSDN (статья о том, как вручную компилировать программу c / c ++)
Итак, мой первый вопрос: включает ли в себя ПОЛЬЗОВАТЕЛЬСКАЯ версия .NET Framework (это означает, что у пользователя НЕТ Visual Studio) компилятор c / c ++? Если да, то входит ли это в Visual Studio, cl.exe? Как я могу получить к нему доступ? Если нет, есть ли бесплатный компилятор БЕЗ IDE, который я могу включить в настройки моего переводчика?
Обратите внимание, что здесь мы говорим о преобразовании строки псевдокода в исполняемый код на языке c / c ++, выходная строка ДОЛЖНА БЫТЬ Скомпилирована с ПОЛЬЗОВАТЕЛЬСКОГО ПК, вот о чем идет речь в проекте.
В инфраструктуру .Net не включен компилятор — он предназначен для запуска двоичных файлов, созданных компилятором.
Можно получить компилятор бесплатно, например, по схеме бесплатной загрузки Visual Studio Express. На это есть некоторые лицензионные ограничения («без коммерческого использования», если я правильно помню — это будет означать, что если один из ваших клиентов использует ваш продукт, они не смогут продать полученный код, который они создали [и все еще будут в рамках контракта). с MS]). К сожалению, это не «без IDE», но компилятор, который является частью загрузки, можно использовать без IDE, поэтому, если «без IDE» это просто, что вы хотите иметь возможность запустить компилятор с вашей программой, то он буду работать.
Если вам действительно нужен пакет, который содержит компилятор (в варианте .Net), но не содержит кода IDE, тогда вам придется найти другое решение — а для .Net я не уверен, что он есть. DDK (Device Driver Kit) содержит встроенные компиляторы C и C ++. Но, насколько я понимаю, он не будет генерировать код .Net [я могу ошибаться].
Изменить: кажется, что если вы пишете свой собственный код, вы можете скомпилировать его с помощью CSharpCodeProvider
— однако это не то же самое, что компилятор командной строки cl.exe
,
Длинное, короткое и уродливое — «нет». Единственный C ++ -компилятор, удаленно подходящий для включения в качестве библиотеки, — это Clang, с ним можно работать бесплатно и не слишком плохо, вам придется написать собственную привязку .NET, и не забывайте получать удовольствие от предоставления собственного компоновщика. и stdlib.