<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.basic.text.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'book.parle.php',
    1 => 'Parle',
    2 => 'Разбор и лексирование',
  ),
  'up' => 
  array (
    0 => 'refs.basic.text.php',
    1 => 'Обработка текста',
  ),
  'prev' => 
  array (
    0 => 'function.commonmark-render-xml.php',
    1 => 'CommonMark\\Render\\XML',
  ),
  'next' => 
  array (
    0 => 'parle.setup.php',
    1 => 'Установка и настройка',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/parle/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.parle.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.parle" class="book">
 
 <h1 class="title">Разбор и лексирование</h1>
 

 <div id="intro.parle" class="preface">
  <h1 class="title">Введение</h1>
  <div class="warning"><strong class="warning">Внимание</strong>
 <p class="simpara">
  Модуль добавили как <em>ЭКСПЕРИМЕНТАЛЬНЫЙ</em>. Поведение модуля,
  названия функций и документацию к модулю изменяют в новых выпусках PHP без уведомления.
  Модулем пользуются на свой страх и риск.
 </p>
</div>
  <p class="para">
   Модуль parle предоставляет средства общего назначения для лексического анализа и синтаксического разбора.
   Реализация основана на <a href="http://www.benhanson.net/" class="link external">&raquo;&nbsp;этих библиотеках</a> и требует компилятора,
   поддерживающего <a href="http://en.cppreference.com/w/cpp/compiler_support" class="link external">&raquo;&nbsp;C++14</a>.
   Лексический анализатор основан на сопоставлении регулярных выражений,
   синтаксический анализатор — на алгоритме LALR(1).
   Лексеры и парсеры генерируются на лету и готовы к работе сразу после завершения генерации.
   Parle занимается синтаксическим анализом и лексированием,
   соответствующее представление и обработка структур данных —
   задача разработчика. Модуль пока не поддерживает сериализацию и генерацию кода.
  </p>
  <p class="para">
   Лексический анализ — разбиение последовательности символов на список лексем.
   На основе списка лексем затем строится синтаксический анализ,
   который определяет соответствие синтаксиса формальной грамматике.
   Эти операции знают как лексирование и синтаксический анализ. Эта документация
   не ставит перед собой цель предоставить исчерпывающую
   информацию о лексировании и синтаксическом анализе. Полезная информация по синтаксическому
   и лексическому анализу доступна на сетевых ресурсах.
   Документация включает несколько примеров, чтобы показать, как работает модуль.
   Модуль полезен для PHP-программистов,
   которые изучают или планируют заниматься синтаксическим анализом и лексированием.
   Конечные автоматы и разбор грамматики не потребуется выполнять вручную,
   эти сложные задачи берёт на себя модуль Parle. Поэтому разработке
   проще сосредоточиться на решении практических вопросов.
  </p>
  <p class="para">
   Модулем Parle часто пользуются, когда формат данных слишком сложен
   для обработки сопоставлением с регулярными выражениями средствами модуля PCRE.
   Практическое применение модуля при этом шире. Модуль помогает анализировать конкретный формат данных,
   модифицировать поведение текущих функций, даже разрабатывать свой язык программирования
   и в решении вопросов за пределами этих.
   Пользу приносят и вспомогательные методы наподобие <span class="methodname"><a href="parle-lexer.dump.php" class="methodname">Parle\Lexer::dump()</a></span>,
   который проверяет сгенерированный конечный автомат, или метод <span class="methodname"><a href="parle-parser.dump.php" class="methodname">Parle\Parser::dump()</a></span>,
   который проверяет сгенерированную грамматику. Метод <span class="methodname"><a href="parle-parser.trace.php" class="methodname">Parle\Parser::trace()</a></span>
   тоже помогает, когда требуется отследить операцию синтаксического анализа.
  </p>
 </div>

 






 






 






 






 




 






 






 






 






 






 






 






 







<ul class="chunklist chunklist_book"><li><a href="parle.setup.php">Установка и настройка</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="parle.requirements.php">Требования</a></li><li><a href="parle.installation.php">Установка</a></li></ul></li><li><a href="parle.constants.php">Предопределённые константы</a></li><li><a href="parle.pattern.matching.php">Сопоставление с шаблоном</a> — Сопоставление с шаблоном Parle</li><li><a href="parle.examples.php">Примеры</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="parle.examples.lexer.php">Примеры использования лексера</a></li><li><a href="parle.examples.parser.php">Пример использования парсера</a></li></ul></li><li><a href="class.parle-lexer.php">Parle\Lexer</a> — Класс Parle\Lexer<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-lexer.advance.php">Parle\Lexer::advance</a> — Обрабатывает следующее правило лексера</li><li><a href="parle-lexer.build.php">Parle\Lexer::build</a> — Завершает набор правил лексера</li><li><a href="parle-lexer.callout.php">Parle\Lexer::callout</a> — Определяет callback-функцию токена</li><li><a href="parle-lexer.consume.php">Parle\Lexer::consume</a> — Передаёт данные на обработку</li><li><a href="parle-lexer.dump.php">Parle\Lexer::dump</a> — Выводит состояние устройства</li><li><a href="parle-lexer.gettoken.php">Parle\Lexer::getToken</a> — Получает текущий токен</li><li><a href="parle-lexer.insertmacro.php">Parle\Lexer::insertMacro</a> — Вставляет макрос регулярного выражения</li><li><a href="parle-lexer.push.php">Parle\Lexer::push</a> — Добавляет правило лексера</li><li><a href="parle-lexer.reset.php">Parle\Lexer::reset</a> — Сбрасывает лексер</li></ul></li><li><a href="class.parle-rlexer.php">Parle\RLexer</a> — Класс Parle\RLexer<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-rlexer.advance.php">Parle\RLexer::advance</a> — Обработка следующего правила лексера</li><li><a href="parle-rlexer.build.php">Parle\RLexer::build</a> — Завершает набор правил лексера</li><li><a href="parle-rlexer.callout.php">Parle\RLexer::callout</a> — Определяет callback-функцию токена</li><li><a href="parle-rlexer.consume.php">Parle\RLexer::consume</a> — Передаёт данные для обработки</li><li><a href="parle-rlexer.dump.php">Parle\RLexer::dump</a> — Выгружает состояние устройства</li><li><a href="parle-rlexer.gettoken.php">Parle\RLexer::getToken</a> — v</li><li><a href="parle-rlexer.insertmacro.php">Parle\RLexer::insertMacro</a> — Вставляет макрос регулярного выражения</li><li><a href="parle-rlexer.push.php">Parle\RLexer::push</a> — Добавляет правило лексера</li><li><a href="parle-rlexer.pushstate.php">Parle\RLexer::pushState</a> — Продвигает новое начальное состояние</li><li><a href="parle-rlexer.reset.php">Parle\RLexer::reset</a> — Сбрасывает лексер</li></ul></li><li><a href="class.parle-parser.php">Parle\Parser</a> — Класс Parle\Parser<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-parser.advance.php">Parle\Parser::advance</a> — Обрабатывает следующее правило парсера</li><li><a href="parle-parser.build.php">Parle\Parser::build</a> — Завершает грамматические правила</li><li><a href="parle-parser.consume.php">Parle\Parser::consume</a> — Потребляет данные для обработки</li><li><a href="parle-parser.dump.php">Parle\Parser::dump</a> — Выводит грамматику</li><li><a href="parle-parser.errorinfo.php">Parle\Parser::errorInfo</a> — Получает информацию об ошибке</li><li><a href="parle-parser.left.php">Parle\Parser::left</a> — Объявляет токен с левой ассоциативностью</li><li><a href="parle-parser.nonassoc.php">Parle\Parser::nonassoc</a> — Объявляет токен без ассоциативности</li><li><a href="parle-parser.precedence.php">Parle\Parser::precedence</a> — Объявляет правило приоритета</li><li><a href="parle-parser.push.php">Parle\Parser::push</a> — Добавляет грамматическое правило</li><li><a href="parle-parser.reset.php">Parle\Parser::reset</a> — Сбрасывает состояние парсера</li><li><a href="parle-parser.right.php">Parle\Parser::right</a> — Объявляет токен с правой ассоциативностью</li><li><a href="parle-parser.sigil.php">Parle\Parser::sigil</a> — Извлекает часть совпадения по правилу</li><li><a href="parle-parser.sigilcount.php">Parle\Parser::sigilCount</a> — Получает количество элементов в совпадающем правиле</li><li><a href="parle-parser.sigilname.php">Parle\Parser::sigilName</a> — Получает имя правила или токена</li><li><a href="parle-parser.token.php">Parle\Parser::token</a> — Объявляет токен</li><li><a href="parle-parser.tokenid.php">Parle\Parser::tokenId</a> — Получает идентификатор токена</li><li><a href="parle-parser.trace.php">Parle\Parser::trace</a> — Следит за работой парсера</li><li><a href="parle-parser.validate.php">Parle\Parser::validate</a> — Проверяет входные данные</li></ul></li><li><a href="class.parle-rparser.php">Parle\RParser</a> — Класс Parle\RParser<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-rparser.advance.php">Parle\RParser::advance</a> — Обработка следующего правила парсера</li><li><a href="parle-rparser.build.php">Parle\RParser::build</a> — Завершает грамматические правила</li><li><a href="parle-rparser.consume.php">Parle\RParser::consume</a> — Использовать данные для обработки</li><li><a href="parle-rparser.dump.php">Parle\RParser::dump</a> — Выводит грамматику</li><li><a href="parle-rparser.errorinfo.php">Parle\RParser::errorInfo</a> — Получает информацию об ошибке</li><li><a href="parle-rparser.left.php">Parle\RParser::left</a> — Объявляет токен с левой ассоциативностью</li><li><a href="parle-rparser.nonassoc.php">Parle\RParser::nonassoc</a> — Объявляет токен без ассоциативности</li><li><a href="parle-rparser.precedence.php">Parle\RParser::precedence</a> — Объявляет правило приоритета</li><li><a href="parle-rparser.push.php">Parle\RParser::push</a> — Добавляет грамматическое правило</li><li><a href="parle-rparser.reset.php">Parle\RParser::reset</a> — Сбрасывает состояние парсера</li><li><a href="parle-rparser.right.php">Parle\RParser::right</a> — Объявляет токен с правой ассоциативностью</li><li><a href="parle-rparser.sigil.php">Parle\RParser::sigil</a> — Извлекает совпадающую часть по правилу</li><li><a href="parle-rparser.sigilcount.php">Parle\RParser::sigilCount</a> — Получает количество элементов в совпадающем правиле</li><li><a href="parle-rparser.sigilname.php">Parle\RParser::sigilName</a> — Получает имя правила или токена</li><li><a href="parle-rparser.token.php">Parle\RParser::token</a> — Объявляет токен</li><li><a href="parle-rparser.tokenid.php">Parle\RParser::tokenId</a> — Получает идентификатор токена</li><li><a href="parle-rparser.trace.php">Parle\RParser::trace</a> — Следит за работой парсера</li><li><a href="parle-rparser.validate.php">Parle\RParser::validate</a> — Проверяет входные данные</li></ul></li><li><a href="class.parle-stack.php">Parle\Stack</a> — Класс Parle\Stack<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-stack.pop.php">Parle\Stack::pop</a> — Извлекает предмет из стека</li><li><a href="parle-stack.push.php">Parle\Stack::push</a> — Помещает элемент в стек</li></ul></li><li><a href="class.parle-token.php">Parle\Token</a> — Класс Parle\Token</li><li><a href="class.parle-errorinfo.php">Parle\ErrorInfo</a> — Класс Parle\ErrorInfo</li><li><a href="class.parle-lexerexception.php">Parle\LexerException</a> — Класс Parle\LexerException</li><li><a href="class.parle-parserexception.php">Parle\ParserException</a> — Класс Parle\ParserException</li></ul></div><?php manual_footer($setup); ?>