LINUX.ORG.RU

Ответ на: комментарий от KRoN73

> ikvm - компилятор java

Мне надо скомпилировать C++ в что-то особенное. Для этого нужно доработать компилятор. Желательно не gcc. Ищу компилятор, написанный на управляемом языке (в предположении, что его проще модифицировать).

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

>Мне надо скомпилировать C++ в что-то особенное.

Под mono пока managed C++ компилятора нет. Но можно скомпилировать микрософтовским: http://www.mono-project.com/CPlusPlus

Под Java такого решения не знаю.

Под Питоном оно бессмысленно. Под него обычно пишут на нативном Си.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Мне не нужно получать выполняемый код. Мне нужно, чтобы компилятор был модифицируемым (микрософтовский отдыхает) и чтобы он был на управляемом языке.

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

Боюсь, ты слишком странного хочешь :)

Опенсорсный С++ компилятор под managed платформу... Боюсь, такого ещё нет. И не факт, что будет. Люди, когда у них руки доходят до написания компиляторов, браться на Си++ не очень хотят :)

KRoN73 ★★★★★
()
Ответ на: комментарий от ArsenShnurkov

А что, существует много opensource компиляторов, способных скомпилировать хотя бы половину boost? А ведь и GCC стандарт не на 100% поддерживает, слишком уж сложный язык C++. Так что здесь выбирать не приходится особо.

Если нужен какой-то анализ исходников, то можно посмотреть на плагины в Eclipse/NetBeans для C++. Но они ни разу до уровня C++ compiler front-end не дотягивают, зато на управляемом языке. Может быть этого вполне и хватит для решения задачи.

Ну а если нужен именно полноценный C++ compiler front-end, то можно лицензировать у EDG в исходниках на C. Написать bindings для питона и реализовать свою библиотеку на питоне под конкретную задачу. Только это тоже не простой и достаточно дорогой путь получится.

kamre ★★★
()
Ответ на: комментарий от ArsenShnurkov

Borland C++BuilderX (кстати, сама среда написана на Java) вроде умел кросс-компиляцию исходников на C/C++. Компилятор там точно не GCC, а какой-то собственный, возможно написанный на Java.

iZEN ★★★★★
()
Ответ на: комментарий от ArsenShnurkov

Компилятор C++? Да там даже парсеров не больше пяти штук, такой уж язык непростой :-)

pierre
()
Ответ на: комментарий от ArsenShnurkov

> Мне надо скомпилировать C++ в что-то особенное.

Говорят, бэкенд для GCC - дело относительно несложное.

tailgunner ★★★★★
()

На С# или чем-то там похожем ты не найдешь, но наверное самое адвекватное, что ты сможешь найти - это clang, llvm фронтед для с/с++/objective-c

dizza ★★★★★
()

Хорошо модифицируемый компиляторы Си: tcc, pcc, Amsterdam Compiler Kit

bvvv
()
Ответ на: комментарий от ArsenShnurkov

> Мне надо скомпилировать C++ в что-то особенное. Для этого нужно доработать компилятор. Желательно не gcc. Ищу компилятор, написанный на управляемом языке (в предположении, что его проще модифицировать).

Выразись точнее. Тебе надо парсить С++? Разрешать неоднозначности? (например, void f(int) и template<class T> f(T) with T=int) ? Еще что-то?

Кстати, плагины к gcc ... тоже можем обсудить.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> Тебе надо парсить С++?
надо, и просто C - тоже

> Разрешать неоднозначности? (например, void f(int) и template<class T> f(T) with T=int) ?
надо

> Еще что-то?
иметь полную информацию об исходном тексте (местоположения символов, конструкций) и его преобразованиях в препроцессоре

После всего этого иметь полный доступ к полной модели распарсенного.

ArsenShnurkov
() автор топика
Ответ на: комментарий от tailgunner

> так тебе gcc-xml нужен, или что7

Ну да, типа того, только без XML (а в виде managed API), и чтобы модель парсинга была полнее (а не только после препроцессора)

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

> и чтобы модель парсинга была полнее (а не только после препроцессора)

Айлол. Ну, найдешь компилятор, в "модели парсинга" которого участвует препроцессор - скажи.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Ну, найдешь компилятор, в "модели парсинга" которого участвует препроцессор - скажи.

Да легко - http://www.interstron.ru/text.asp?key=softcpp

Цитата: "Фаза препроцессирования рассматривается как составная часть функциональности лексического анализатора, в противоположность традиционным подходам, реализующим препроцессирование в виде отдельной компоненты системы программирования. Данное решение повышает общую эффективность компилятора, исключая операции с промежуточным текстовым представлением программы, и делает лексический анализ "гладким". Исключение фазы препроцессирования, не ограничивая возможностей Си++ и потребностей программистов, создает предпосылки для поддержания полной семантической адекватности исходного текста и результирующих структур компиляции."

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

> Фаза препроцессирования рассматривается как составная часть функциональности лексического анализатора, в противоположность традиционным подходам, реализующим препроцессирование в виде отдельной компоненты системы программирования.

Не убеждает :D Видишь ли, препроцессор много кто реализует в виде библиотеки, являющейся частью компилятора (IIRC, даже gcc). Вопрос в том, есть ли лексема "#define", или нет (тебе именно она нужна?). И как раз об этом не сказано.

Ну это не говоря о том, что компилятор закрытый, и не managed.

tailgunner ★★★★★
()
Ответ на: комментарий от ArsenShnurkov

Браться парсить и главное **разрешать неоднозначности** плюсового исходника, не зная плюсы до такой степени, что при этом пытаться искать решение на яве/с# -- мягко говоря бессмысленно.

Либа за тебя всю работу не выполнит, тебе все равно придется понимать алгоритм разрешиня неоднозначности/скопинга, которые сильно привязаны к специфике с++, а не к (возможно что и разумной) идее твоего языка.

Лучше расскажи свой *личный* взгляд на с++, что ты там собрался менять/добавить/убавить...

З.Ы. Если я правильно понял заяву от 27 явнваря, то даже закрытые плагины к ж++ можно делать, при условии, что результат не будет линковаться со стандартной библиотекой с++.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от ArsenShnurkov

> А мысль была отправить в космос - http://www.gocosmos.org/index.en.aspx

Я бы не путал народ, а написал "мне тебе нужен выхлоп g++ в CIL". Насколько это реально -- не знаю, но думаю, что можно сделать (в VM Adobe для flash сделали). Но все равно скорость будет плохой. Я вижу только вариант "один бооольшой массив под эмуляцию памяти и стэка с возможность брать и разыменовывать указатели от всего, никакого GC". Всякие системные вызовы стандартной библиотеки придется переписать.

Если же пытаться переделать с++ под использование GC... то это еще намного больше работы с неясным результатом.

Насколько этот космос позикс-соместим?

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от svu

> Рыдаю до сих пор.

Может, пора уже и к психологу сходить? А то и вообще перестать тревожить свою ранимую душу грубой правдой программирования?

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

Да, перестать тревожить - это определенно мысль.

svu ★★★★★
()
Ответ на: комментарий от svu

> Пролетала тут статья - воспоминания мужика, реально писавшего компилятор для плюсов. Рыдаю до сих пор.

Странно, самому мужику писать компилятор нравилось.

tailgunner ★★★★★
()
Ответ на: комментарий от KRoN73

>Люди, когда у них руки доходят до написания компиляторов, браться на Си++ не очень хотят :)

Скорее наоборот. Люди, способные написать компилятор недоязычками вроде java не увлекаются.

legolegs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.