рефлексируют ли роботы?

пишу под впечатлением от блиц-доклада Руслана Закирова на РИТе про перловый шаблонизатор Template::Declare

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

давайте посмотрим на задачу создания шаблонизатора. Он должен взять шаблон, распарсить его, сделать подстановки и, возможно, некоторые другие примитивные действия. Ключевое слово здесь «распарсить». Зачем мучиться, создавая новый, если у нас уже есть готовый парсер, который работает с самим языком? Благо перл довольно гибкий, а в шестой своей версии так и невероятно гибкий. Берем этот парсер, и используем его для создания хорошо структурированных шаблонов. Примитивный пример:

template simple => sub {
    html {
        head {}
        body {
            p {'Hello, world wide web!'}
        }
    }
};

нет, я не говорю, что это идеал, но сама идея мне очень понравилась : )

Артемий Трегубенко,

comments powered by Disqus