LINUX.ORG.RU

Простая реализация гибкого языка

 


1

1

Хочу найти экстремально простую и понятную реализацию (и желательно небольшую по объёму кода), пускай и тормозную для какого-нибудь простого динамического языка программирования.

Под такими языками я имею ввиду: Scheme, Tcl, Lua, может быть JavaScript (хотя не хотелось бы).

В первую очередь нужна простота и понятность.

ЛОР, подскажешь?

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

когда-то писал, да не дописал. Хочу найти что-нибудь готовое. Если не найду что-нибудь простое — сам напишу.

vladimir-vg ★★
() автор топика
Ответ на: комментарий от vladimir-vg

на хабре есть цикл статей от автора objectscript, помесь луа жаваскрипта и т.п., загугли, там вроде один файл всего

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

Чем не подходит сам Tcl ?

я так думаю, что ТС`у пока не стоит лезть в дебри реализации контекстно-зависимого языка, да ещё с собственной машиной и ассемблером. К тому его современный код тяжёл для чтения и разбора - слишком много унаследовано, оставлено для совместимости и т.д. :(

из перечисленных проще всего для изучения нутра - Scheme, а точнее взять(найти) реализацию lisp без претензий на стандарт и байткод

MKuznetsov ★★★★★
()

1. http://ru.wikipedia.org/wiki/Форма_Бэкуса_—_Наура

2. http://ru.wikipedia.org/wiki/Предметно-ориентированный_язык_программирования

3. http://search.cpan.org/~jkegl/Marpa-R3-3.001_001/pod/Marpa_R3.pod

4. http://search.cpan.org/~ingy/Pegex-0.21/lib/Pegex.pod

Если не понял, то через BNF можно описывать любой синаксис/язык/что угодно. Примеры из жизни, кроме указанных выше yacc, flex, bison. В каждом языке есть подобное, в яве например есть MSL от JetBrains.

Не благодари.

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

Хм, я почему-то раньше думал, что сама по себе грамматика позволяет строить дерево только. Но его же ещё надо „свернуть“? На сколько я себе представляю эта задача сложнее. Про оптимизацию забудем пока.

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

В смысле выполнить.

Привязки к конкретным полям/значениям делается по-собственному желанию. Можно идти разными путями: компиляция в структуры/байткод/чтоугодно и после выполнение этого каким-то образом, либо интерпретация, т.е биндинг и вызов функций. Все гибко и удобно.

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

gh0stwizard ★★★★★
()

на хабре была кажется простая реализация диалекта лиспа на си. встречал лиспы на питоне. Вообще лисп наверно проще всего написать. Проще только Форт

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