phpday 2022

Введение

Модуль parle предоставляет средства лексического анализа и синтаксического анализа общего назначения. Реализация основана на библиотеках » Бена Хансона и требует для работы компилятор с поддержкой » C++14. Лексический анализатор основан на сопоставлении регулярных выражений, синтаксический анализатор - LALR (1). Лексеры и парсеры генерируются на лету и могут использоваться сразу после их завершения. Parle занимается синтаксическим анализом и лексированием, соответствующее представление и обработка структур данных является задачей разработчика. Модуль пока не поддерживает сериализацию и генерацию кода.

Лексический анализ - это процесс разделения последовательности символов на список лексем. Список лексем можно затем использовать для синтаксического анализа с точки зрения формальной грамматики. Эти операции также известны как лексирование и синтаксический анализ. Эта документация не преследует цель предоставить исчерпывающую информацию о лексировании и синтаксическом анализе. Хорошая информация по этому поводу доступна на многочисленных ресурсах в сети. Включены несколько примеров использования, чтобы показать функциональность. Модуль полезен для программистов PHP, желающих изучить или использовать синтаксический анализ и лексирование. Состояния и анализ грамматики не нужно реализовывать вручную, эти сложные задачи решаются с помощью parle. Благодаря этому разработка может быть сосредоточена на решении актуальной проблемы.

Обычный вариант использования parle - это когда формат данных слишком сложен для обработки регулярным выражением, совпадающим с PCRE. При этом широкое практическое применение. Будь то конкретный формат данных, модификация поведения существующих функций, даже собственный язык программирования и т.д. Полезны вспомогательные методы, такие как Parle\Lexer::dump() для проверки сгенерированного состояния или Parle\Parser::dump() для проверки сгенерированной грамматики. Метод Parle\Parser::trace() также можно использовать для отслеживания операции синтаксического анализа.

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top