Мне надо скомпилировать C++ в что-то особенное. Для этого нужно доработать компилятор. Желательно не gcc. Ищу компилятор, написанный на управляемом языке (в предположении, что его проще модифицировать).
Опенсорсный С++ компилятор под managed платформу... Боюсь, такого ещё нет. И не факт, что будет. Люди, когда у них руки доходят до написания компиляторов, браться на Си++ не очень хотят :)
А что, существует много opensource компиляторов, способных скомпилировать хотя бы половину boost? А ведь и GCC стандарт не на 100% поддерживает, слишком уж сложный язык C++. Так что здесь выбирать не приходится особо.
Если нужен какой-то анализ исходников, то можно посмотреть на плагины в Eclipse/NetBeans для C++. Но они ни разу до уровня C++ compiler front-end не дотягивают, зато на управляемом языке. Может быть этого вполне и хватит для решения задачи.
Ну а если нужен именно полноценный C++ compiler front-end, то можно лицензировать у EDG в исходниках на C. Написать bindings для питона и реализовать свою библиотеку на питоне под конкретную задачу. Только это тоже не простой и достаточно дорогой путь получится.
Borland C++BuilderX (кстати, сама среда написана на Java) вроде умел кросс-компиляцию исходников на C/C++. Компилятор там точно не GCC, а какой-то собственный, возможно написанный на Java.
> Мне надо скомпилировать C++ в что-то особенное. Для этого нужно доработать компилятор. Желательно не gcc. Ищу компилятор, написанный на управляемом языке (в предположении, что его проще модифицировать).
Выразись точнее. Тебе надо парсить С++? Разрешать неоднозначности? (например, void f(int) и template<class T> f(T) with T=int) ? Еще что-то?
Цитата: "Фаза препроцессирования рассматривается как составная часть функциональности лексического анализатора, в противоположность традиционным подходам, реализующим препроцессирование в виде отдельной компоненты системы программирования. Данное решение повышает общую эффективность компилятора, исключая операции с промежуточным текстовым представлением программы, и делает лексический анализ "гладким". Исключение фазы препроцессирования, не ограничивая возможностей Си++ и потребностей программистов, создает предпосылки для поддержания полной семантической адекватности исходного текста и результирующих структур компиляции."
> Фаза препроцессирования рассматривается как составная часть функциональности лексического анализатора, в противоположность традиционным подходам, реализующим препроцессирование в виде отдельной компоненты системы программирования.
Не убеждает :D Видишь ли, препроцессор много кто реализует в виде библиотеки, являющейся частью компилятора (IIRC, даже gcc). Вопрос в том, есть ли лексема "#define", или нет (тебе именно она нужна?). И как раз об этом не сказано.
Ну это не говоря о том, что компилятор закрытый, и не managed.
Браться парсить и главное **разрешать неоднозначности** плюсового исходника, не зная плюсы до такой степени, что при этом пытаться искать решение на яве/с# -- мягко говоря бессмысленно.
Либа за тебя всю работу не выполнит, тебе все равно придется понимать алгоритм разрешиня неоднозначности/скопинга, которые сильно привязаны к специфике с++, а не к (возможно что и разумной) идее твоего языка.
Лучше расскажи свой *личный* взгляд на с++, что ты там собрался менять/добавить/убавить...
З.Ы. Если я правильно понял заяву от 27 явнваря, то даже закрытые плагины к ж++ можно делать, при условии, что результат не будет линковаться со стандартной библиотекой с++.
Я бы не путал народ, а написал "мне тебе нужен выхлоп g++ в CIL". Насколько это реально -- не знаю, но думаю, что можно сделать (в VM Adobe для flash сделали). Но все равно скорость будет плохой. Я вижу только вариант "один бооольшой массив под эмуляцию памяти и стэка с возможность брать и разыменовывать указатели от всего, никакого GC". Всякие системные вызовы стандартной библиотеки придется переписать.
Если же пытаться переделать с++ под использование GC... то это еще намного больше работы с неясным результатом.