Interested Article - Parser
- 2021-08-29
- 1
- Это статья о языке программирования, об алгоритме синтаксического анализа см. Синтаксический анализ .
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 не позволяет быстро отделить логику от дизайна .
- Отсутствуют удобные инструментарии, например, для автоматического создания понятных адресов .
Примечания
- — 2021.
Ссылки
- 2021-08-29
- 1