Разбор и лексированиеParle
&reftitle.intro;
Модуль parle предоставляет средства лексического анализа и синтаксического анализа общего назначения.
Реализация основана на библиотеках Бена Хансона
и требует для работы компилятор с поддержкой C++14.
Лексический анализатор основан на сопоставлении регулярных выражений, синтаксический анализатор - LALR (1).
Лексеры и парсеры генерируются на лету и могут использоваться сразу после их завершения.
Parle занимается синтаксическим анализом и лексированием, соответствующее представление и обработка структур данных является задачей разработчика.
Модуль пока не поддерживает сериализацию и генерацию кода.
Лексический анализ - это процесс разделения последовательности символов на список лексем.
Список лексем можно затем использовать для синтаксического анализа с точки зрения формальной грамматики.
Эти операции также известны как лексирование и синтаксический анализ. Эта документация не преследует цель предоставить исчерпывающую информацию
о лексировании и синтаксическом анализе. Хорошая информация по этому поводу доступна на многочисленных ресурсах в сети.
Включены несколько примеров использования, чтобы показать функциональность. Модуль полезен для программистов PHP,
желающих изучить или использовать синтаксический анализ и лексирование. Состояния и анализ грамматики не нужно реализовывать вручную,
эти сложные задачи решаются с помощью parle. Благодаря этому разработка может быть сосредоточена на решении актуальной проблемы.
Обычный вариант использования parle - это когда формат данных слишком сложен для обработки регулярным выражением, совпадающим с PCRE.
При этом широкое практическое применение. Будь то конкретный формат данных, модификация поведения существующих функций,
даже собственный язык программирования и т.д. Полезны вспомогательные методы, такие как Parle\Lexer::dump
для проверки сгенерированного состояния или Parle\Parser::dump для проверки сгенерированной грамматики.
Метод Parle\Parser::trace также можно использовать для отслеживания операции синтаксического анализа.
&reference.parle.setup;
&reference.parle.constants;
&reference.parle.pattern.matching;
&reference.parle.examples;
&reference.parle.parle.lexer;
&reference.parle.parle.rlexer;
&reference.parle.parle.parser;
&reference.parle.parle.rparser;
&reference.parle.parle.stack;
&reference.parle.parle.token;
&reference.parle.parle.errorinfo;
&reference.parle.parle.lexerexception;
&reference.parle.parle.parserexception;