Здравствуйте, shadows_s, Вы писали:
_>Быстродействие играет большую роль, так как пишу программу под CUDA C.
Так где у тебя этот код должен исполнятся? На CPU или на GPU?
В любом случае, если важна производительность, то нужен компилятор. Тут есть два варианта — либо готовый внешний компилятор, либо нечто, способное формировать код на лету. Первый вариант, как правило, проще. У второго чуть ниже накладные расходы. Но по скорости работы производимого кода они в целом равнозначны.
Итого:
Если брать CPU и внешний компилятор, то выбор просто огромен. Берешь любой. Передаёшь ему свой код и забираешь, например, в виде динамической библиотеки. Если же хочется на CPU компилировать внутри одного процесса, то можно взять что-то готовое, наприме libtcc.
В случае же GPU можно взять, очевидно, компилятор nvcc. Если же делать без него, то в CUDA можно редактировать и динамически загружать PTX-модули, полученные из исходного текста на C/C++. К сожалению, насколько я помню, напрямую компиляция из C-кода в CUDA недоступна — это возможно, но просто недоступен соответствующий API, хотя в том же OpenCL (который может полноценно работать в виде обёртки над CUDA) соответствующий API есть. Впрочем это не серьёзное техническое затруднение, для кодогенерации и PTX вполне может подойти; либо, конечно, можно посмотреть на OpenCL.
_>Первое, что пришло на ум, сделать с помощью синтаксического анализатора.
Это совсем дохлый путь. Eсли нужен транслятор, то только анализатором не обойтись.