Это статья о языке программирования, об алгоритме синтаксического анализа см. Синтаксический анализ.

Parser — объектно-ориентированный скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере с поддержкой CGI. Разработан Студией Артемия Лебедева и выпущен под лицензией, сходной с GNU GPL. Язык специально спроектирован и оптимизирован для того, чтобы было удобно создавать простые сайты. Работа с формами, cookies, табличными файлами, базами данных и XML — часть языка, а модульность языка позволяет легко наращивать функциональность.

Отличия Parser от других языков программирования Parser в известном смысле — макроязык, в котором нет оператора print. Весь текст, набранный в исходном файле, по сути, большой оператор print, а конструкции Parser являются погруженными в текст. Получается, что вы не пишете программу, которая выводит текст — наоборот, в имеющийся текст вы добавляете логику и организацию, блоки (методы), на которые вы разбиваете HTML-код.

В каждый каталог, с которым будет работать Parser, можно класть файл auto.p, в котором будут описаны основные настройки и методы. Особенностью является наследственность (наличие в нескольких каталогах по пути к скрипту) и безусловное подключение этого файла. Таким образом, вывод меню можно описать лишь в одном файле, и он автоматически будет применен ко всему сайту.

Некоторые ограничения (например, работа с изображениями) легко устраняются использованием сторонних консольных утилит и shell-скриптов.

Пример программы Пример вывода меню на основе информации, взятой из конфигурационного файла (CSV, разделенный табуляциями)

Это сам файл с таблицей (sections.cfg) section_id name uri 1 Главная / 2 Новости /news/ 3 Контакты /contacts/ 4 Цены /price/ 5 Ваше мнение /gbook/

Скрипт с html-кодом (например, index.html) @main[] # Это main - главный метод. С него начинается обработка программы. # Кстати, решетка в начале строки означает линейный комментарий.

<html> <head> <title>Parser в Википедии</title> </head> <body> ^navigation[] </body> </html>

@navigation[] # А здесь загружаем таблицу из файла sections.cfg # Пробегаемся по всем строкам и выводим колонки uri и name

$sections[^table::load[sections.cfg]] <ul> ^sections.menu{ <li> <a href="$sections.uri">$sections.name</a> </li>

</ul> Десятки полезных примеров размещены на сайте проекта.

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

Примечания

Ссылки Официальный сайт языка программирования Parser Документация Parser Сообщество пользователей Parser Хостинги с Parser Пример сайта с Parser автозапчасти

Категория:Объектно-ориентированные языки программирования Категория:Свободные компиляторы и интерпретаторы Категория:Скриптовые языки