metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2008-07-30 01:04 pm

Генераторы LL(k) парсеров

Сижу пытаюсь соорудить парсер для Scheme. Спотыкаюсь на всяких забубенных правилах для токенов типа того, что после \ идет либо символ либо его числовое представление, хрен его знает как его туда запилить.

Re: Можно вопрос?

[identity profile] metaclass.livejournal.com 2008-07-31 01:38 pm (UTC)(link)
Ничего более адекватного в качестве шаблонов для генератора кода не пришло в голову.
На самом деле на полноценный интерпретатор схемы у меня ни времени, ни сил не хватит, но для подстановки значений в шаблон вроде бы хватит и того урезанного куска, который я уже сделал.

Re: Можно вопрос?

[identity profile] Озадаченный медведь (from livejournal.com) 2008-07-31 03:21 pm (UTC)(link)
Может, я чего-то не понимаю, но разве не проще взять готовый интерпретатор лиспа или схемы, наработать на них словарь для генерации кода нужного языка, а потом писать шаблоны уже на схеме/лиспе?

Vitaly_K

Re: Можно вопрос?

[identity profile] metaclass.livejournal.com 2008-07-31 03:52 pm (UTC)(link)
Проще, если бы не было потенциальной необходимости использовать это дело в окружении, где ничего кроме .NET выполняться не может.

Вероятно, можно было бы портировать какой нибудь из существующий интерпретаторов на Managed C++, но я тогда закопаюсь окончательно и до итогового результата - генерации кода из моделей объектов доберусь еще не скоро :)

Так есть же Scheme для .NET

[identity profile] Озадаченный медведь (from livejournal.com) 2008-07-31 04:06 pm (UTC)(link)
Вот, к примеру:
http://www-sop.inria.fr/mimosa/fp/Bigloo/
http://www.yaya.fr/Bigloo/

Vitaly_K

Re: Так есть же Scheme для .NET

[identity profile] metaclass.livejournal.com 2008-07-31 04:57 pm (UTC)(link)
Угу. Если бы оно еще собиралось под виндой без плясок с бубном. makefile ссылается на файл, которого в исходниках нет, и который создается, похоже, скриптом configure, для запуска которого нужен Cygwin.
Проект для Visual Studio тоже не собирается.
К сожалению, мне гораздо проще сделать самодельную урезанную версию интерпретатора, чем разбираться, почему не билдится полноценный интерпретатор и как его потом прикрутить к моему проекту. Это, кстати, проблема с очень многими opensource проектами для программистов - их авторы предполагают, что у тех, кто пользуется их проектами есть очень много времени и опыт для того, чтобы разбираться с инструментами. А обычно это не так, поскольку промышленная разработка требует работы, а не изучения инструментов :)

Re: Так есть же Scheme для .NET

[identity profile] Озадаченный медведь (from livejournal.com) 2008-07-31 06:23 pm (UTC)(link)
Не спорю. Но разве нету других версий?
Вот, к примеру: http://www.codeplex.com/IronScheme

Vitaly_K