Parser

Из Википедии, бесплатной энциклопедии

Это статья о языке программирования, об алгоритме синтаксического анализа см. Синтаксический анализ.
Parser
Изображение логотипа
Семантика мультипарадигменный
Класс языка язык программирования и процедурный язык программирования
Тип исполнения Интерпретатор компилирующего типа
Появился в 1997
Автор
Выпуск
Система типов динамическая
Испытал влияние Perl, Java, C++, HTML
Лицензия GNU GPL
Сайт parser.ru

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 не позволяет быстро отделить логику от дизайна.
  • Отсутствуют удобные инструментарии, например, для автоматического создания понятных адресов.

Примечания[править | править код]

  1. Release 3.4.6 — 2021.

Ссылки[править | править код]