Требуются помощники для создания конвертера C# -> Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.09.10 16:13
Оценка:
Требуются помощники для создания конвертера C# -> Nemerle на основе созданного
hardcase-ом парсера C#
Автор: hardcase
Дата: 24.08.10
.

Объем работы небольшой. Задача четка. Так что могут справиться и не очень подготовленные товарищи.

Задача формулируется так. Надо создать утилиту аналогичную cs2n. Задачи утилиты творческое преобразование кода C# 4.0 в код Nemerle. В том числе преобразование файлов и конвертация содержимого клипборда.

Для выполнения данной задачи нужно создать утилиту которая будет принимать путь к cs-файлу или C#-код, скармливать его url=http://www.rsdn.ru/forum/nemerle/3931774.1.aspx
Автор: hardcase
Дата: 24.08.10
]парсеру C#[/url], получать AST немерла, преобразовывать его в Nemerle-код и записывать его в другой файл (или помещать в клипборд).

Основная проблема заключается в том, что имеющиеся в составе Nemerle прети-принтер выдает не очень качественный результат. Так что в процессе работы придется доработать его напильником. При этом улучшится код генерируемые макросами немерла (для оладки).

В общем, добро пожаловать добровольцам!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Требуются помощники для создания конвертера C# -> Nemerl
От: matumba  
Дата: 11.11.10 14:50
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Основная проблема заключается в том, что имеющиеся в составе Nemerle прети-принтер выдает не очень качественный результат.


Влад, я правильно понимаю, что это главная рабочая лошадка конвертера? То есть АСТ Немерла скармливается принтеру, а тот уже выводит весь код?
Re[2]: Требуются помощники для создания конвертера C# -> Nem
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.10 15:23
Оценка:
Здравствуйте, matumba, Вы писали:

M>Влад, я правильно понимаю, что это главная рабочая лошадка конвертера? То есть АСТ Немерла скармливается принтеру, а тот уже выводит весь код?


Я не стал бы говорить, что что-то там главное. Скорее главным можно назвать парсер и корвертер из АСТ Шарпа в АСТ Немерла. А прети-принтер — это стандартная возможность Немерлового АСТ. Он используется для отображения АСТ в отладчике макросов при отладке и при генерации фэйк-кода для отладки макросов.

Код прети-принтера находится здесь:
http://code.google.com/p/nemerle/source/browse/nemerle/trunk/ncc/misc/PrettyPrint.n
По сути — это простой разбор АСТ и вывод его текстового представления в текстовый поток.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Требуются помощники для создания конвертера C# -> Nem
От: matumba  
Дата: 11.11.10 18:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Код прети-принтера находится здесь:


С принтером понял. Начал работать, тут же получил граблями по лбу (просто скомпилировал проект):



Вроде бы правильный код, в Located функция тоже есть и сам Located заюзан:

public static ExtractPosAndLen(msg : string) : int * int


И что с этим делать?
Re[4]: Требуются помощники для создания конвертера C# -> Nem
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.10 18:04
Оценка:
Здравствуйте, matumba, Вы писали:

M>И что с этим делать?


Собрать проект из исходников. У тебя по всей видимости не самая свежая версия. Указанная функция недавно была добавлена.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Требуются помощники для создания конвертера C# -> Nem
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.10 18:05
Оценка:
Здравствуйте, matumba, Вы писали:

M>И что с этим делать?


Точнее, скорее всего исходники не обновлены полностью.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Требуются помощники для создания конвертера C# -> Nem
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.10 18:08
Оценка:
Здравствуйте, matumba, Вы писали:

Присмотрелся к картинке. Она вообще какая-то странная. Если хит для фукнции показывается, значит она таки есть. Но сообщение об ошибке говорит об обратном.

M>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Требуются помощники для создания конвертера C# -> Nem
От: hardcase Пират http://nemerle.org
Дата: 11.11.10 18:11
Оценка: +1
Здравствуйте, matumba, Вы писали:

M>И что с этим делать?


Если ты ставил компилятор с PowerPack, то компилятор подхватывает некорректную библиотеку.
Удали Nemerle.Peg.dll, CSharpParser.dll, CSharpToNemerle.dll из каталога Program Files\Nemerle.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Требуются помощники для создания конвертера C# -> Nem
От: matumba  
Дата: 11.11.10 18:48
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Если ты ставил компилятор с PowerPack, то компилятор подхватывает некорректную библиотеку.

H>Удали Nemerle.Peg.dll, CSharpParser.dll, CSharpToNemerle.dll из каталога Program Files\Nemerle.

Yes! Сработало. Эту багу как-то починят? Всё-таки дистрибутив, в нём всё должно быть отточено.
Кстати, пришлось переименовать CSharpParser.sln в CSharpParser.nsln
Re[6]: Требуются помощники для создания конвертера C# -> Nem
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.10 19:43
Оценка:
Здравствуйте, matumba, Вы писали:

M>Yes! Сработало. Эту багу как-то починят? Всё-таки дистрибутив, в нём всё должно быть отточено.


Тут нет бага. Ты сам смешал сборки разных версий.

M>Кстати, пришлось переименовать CSharpParser.sln в CSharpParser.nsln


Это потому что ты используешь изолэйтед-версию. Ее не получилось научить работать со стандартным расширением.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Требуются помощники для создания конвертера C# -> Nem
От: matumba  
Дата: 12.11.10 10:50
Оценка:
Здравствуйте, VladD2, Вы писали:

M>>Yes! Сработало. Эту багу как-то починят? Всё-таки дистрибутив, в нём всё должно быть отточено.


VD>Тут нет бага. Ты сам смешал сборки разных версий.


И это мы будем объяснять каждому, кто поставил компилятор? Напишите хотя бы предупреждение, что ли... — компилятор использует такие-то библиотеки, они разные и вызывают такие-то проблемы.
Re[8]: Требуются помощники для создания конвертера C# -> Nem
От: hardcase Пират http://nemerle.org
Дата: 12.11.10 11:25
Оценка:
Здравствуйте, matumba, Вы писали:

M>И это мы будем объяснять каждому, кто поставил компилятор? Напишите хотя бы предупреждение, что ли... — компилятор использует такие-то библиотеки, они разные и вызывают такие-то проблемы.


Вообще не каждый пользователь компилятора занимается разработкой этого компилятора и сопутствующих библиотек.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[8]: Требуются помощники для создания конвертера C# -> Nem
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.11.10 14:56
Оценка:
Здравствуйте, matumba, Вы писали:

M>И это мы будем объяснять каждому, кто поставил компилятор? Напишите хотя бы предупреждение, что ли... — компилятор использует такие-то библиотеки, они разные и вызывают такие-то проблемы.


Это не так просто. Компилятор запускается в отдельном процессе (автономно). Интеграция работает в другом. Причем в следствии борьбы с блокировками сборок и их перезагрузки интеграция имеет несколько отличный механизм поиска сборок.

При использовании инсталлированных версий компилятора и библиотек таких проблем не возникнет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.