<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'book.parle.php',
    1 => 'Parle',
    2 => 'An&aacute;lise sint&aacute;tica e l&eacute;xixa',
  ),
  'up' => 
  array (
    0 => 'refs.basic.text.php',
    1 => 'Processamento de Texto',
  ),
  'prev' => 
  array (
    0 => 'function.commonmark-render-xml.php',
    1 => 'CommonMark\\Render\\XML',
  ),
  'next' => 
  array (
    0 => 'parle.setup.php',
    1 => 'Instala&ccedil;&atilde;o/Configura&ccedil;&atilde;o',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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">Análise sintática e léxixa</h1>
 

 <div id="intro.parle" class="preface">
  <h1 class="title">Introdução</h1>
  <div class="warning"><strong class="warning">Aviso</strong><p class="simpara">Esta extensão é
<em>EXPERIMENTAL</em>. O comportamento desta extensão, incluindo
os nomes de suas funções e qualquer outra documentação relacionada a esta
extensão, pode mudar sem aviso prévio em futuras versões do PHP.
Use por sua conta e risco.</p></div>
  <p class="para">
   A extensão Parle fornece recursos gerais de análise sintática e léxica. A implementação é baseada <a href="http://www.benhanson.net/" class="link external">&raquo;&nbsp;nestas bibliotecas</a> e requer um compilador compatível com <a href="http://en.cppreference.com/w/cpp/compiler_support" class="link external">&raquo;&nbsp;C++14</a>. O analisador léxico é baseado na correspondência de expressões regulares, e o analisador sintático é LALR(1). Analisadores sintáticos e léxicos são gerados dinamicamente e podem ser usados ​​imediatamente após sua finalização. Parle lida com análise sintática e léxica, e a representação e o processamento apropriados das estruturas de dados são tarefa do implementador. A serialização e a geração de código ainda não são suportadas pela extensão.
  </p>
  <p class="para">
   A análise léxica é o processo de divisão de uma sequência de caracteres em uma lista de lexemas. A lista de lexemas pode então ser usada para análise sintática em relação a uma gramática formal. Essas operações também são conhecidas como análise léxica e interpretação. Esta documentação não pretende fornecer informações exaustivas sobre análise léxica e interpretação. Boas fontes de informações a esse respeito estão disponíveis em diversos recursos na rede. Vários exemplos de uso foram incluídos para demonstrar a funcionalidade. A extensão é útil para programadores PHP que desejam aprender ou utilizar análise sintática e interpretação. Máquinas de estado e análise gramatical não precisam ser implementadas manualmente; essas tarefas complexas são eliminadas pelo Parle. Graças a isso, o desenvolvimento pode ser focado na resolução real do problema.
  </p>
  <p class="para">
   O caso de uso comum para Parle é quando um formato de dados é muito complexo para ser manipulado pela expressão regular correspondente com PCRE. A aplicação prática é ampla, seja para um formato de dados específico, uma modificação de comportamento de funções existentes, até mesmo uma linguagem de programação própria e muito mais. Métodos auxiliares como <span class="methodname"><a href="parle-lexer.dump.php" class="methodname">Parle\Lexer::dump()</a></span> para inspecionar a máquina de estados gerada, ou <span class="methodname"><a href="parle-parser.dump.php" class="methodname">Parle\Parser::dump()</a></span> para inspecionar a gramática gerada, são úteis. O método <span class="methodname"><a href="parle-parser.trace.php" class="methodname">Parle\Parser::trace()</a></span> também pode ser usado para rastrear a operação de análise sintática.
  </p>
 </div>

 






 





 




 






 






 






 






 






 






 






 






 






 







<ul class="chunklist chunklist_book"><li><a href="parle.setup.php">Instala&ccedil;&atilde;o/Configura&ccedil;&atilde;o</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="parle.requirements.php">Depend&ecirc;ncias</a></li><li><a href="parle.installation.php">Instala&ccedil;&atilde;o</a></li></ul></li><li><a href="parle.constants.php">Constantes predefinidas</a></li><li><a href="parle.pattern.matching.php">Correspond&ecirc;ncia de padr&otilde;es</a> — Correspond&ecirc;ncia de padr&otilde;es do Parle</li><li><a href="parle.examples.php">Exemplos</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="parle.examples.lexer.php">Exemplos de Lexer</a></li><li><a href="parle.examples.parser.php">Exemplos de Parser</a></li></ul></li><li><a href="class.parle-lexer.php">Parle\Lexer</a> — A classe Parle\Lexer<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-lexer.advance.php">Parle\Lexer::advance</a> — Processa a pr&oacute;xima regra do analisador l&eacute;xico</li><li><a href="parle-lexer.build.php">Parle\Lexer::build</a> — Finaliza o conjunto de regras do analisador l&eacute;xico</li><li><a href="parle-lexer.callout.php">Parle\Lexer::callout</a> — Define fun&ccedil;&atilde;o de retorno para token</li><li><a href="parle-lexer.consume.php">Parle\Lexer::consume</a> — Passa os dados para processamento</li><li><a href="parle-lexer.dump.php">Parle\Lexer::dump</a> — Despeja a m&aacute;quina de estados</li><li><a href="parle-lexer.gettoken.php">Parle\Lexer::getToken</a> — Obt&eacute;m o token atual</li><li><a href="parle-lexer.insertmacro.php">Parle\Lexer::insertMacro</a> — Insere macro de express&atilde;o regular</li><li><a href="parle-lexer.push.php">Parle\Lexer::push</a> — Adiciona uma regra de an&aacute;lise l&eacute;xica</li><li><a href="parle-lexer.reset.php">Parle\Lexer::reset</a> — Redefine o analisador l&eacute;xico</li></ul></li><li><a href="class.parle-rlexer.php">Parle\RLexer</a> — A classe Parle\RLexer<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-rlexer.advance.php">Parle\RLexer::advance</a> — Processa a pr&oacute;xima regra do analisador l&eacute;xico</li><li><a href="parle-rlexer.build.php">Parle\RLexer::build</a> — Finaliza o conjunto de regras do analisador l&eacute;xico</li><li><a href="parle-rlexer.callout.php">Parle\RLexer::callout</a> — Define fun&ccedil;&atilde;o de retorno para token</li><li><a href="parle-rlexer.consume.php">Parle\RLexer::consume</a> — Passa os dados para processamento</li><li><a href="parle-rlexer.dump.php">Parle\RLexer::dump</a> — Despeja a m&aacute;quina de estados</li><li><a href="parle-rlexer.gettoken.php">Parle\RLexer::getToken</a> — Obt&eacute;m o token atual</li><li><a href="parle-rlexer.insertmacro.php">Parle\RLexer::insertMacro</a> — Insere macro de express&atilde;o regular</li><li><a href="parle-rlexer.push.php">Parle\RLexer::push</a> — Adiciona uma regra de an&aacute;lise l&eacute;xica</li><li><a href="parle-rlexer.pushstate.php">Parle\RLexer::pushState</a> — Insere na pilha um novo estado inicial</li><li><a href="parle-rlexer.reset.php">Parle\RLexer::reset</a> — Redefine o analisador l&eacute;xico</li></ul></li><li><a href="class.parle-parser.php">Parle\Parser</a> — A classe Parle\Parser<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-parser.advance.php">Parle\Parser::advance</a> — Processa a pr&oacute;xima regra do analisador</li><li><a href="parle-parser.build.php">Parle\Parser::build</a> — Finaliza as regras gramaticais</li><li><a href="parle-parser.consume.php">Parle\Parser::consume</a> — Consome os dados para processamento</li><li><a href="parle-parser.dump.php">Parle\Parser::dump</a> — Despeja a gram&aacute;tica</li><li><a href="parle-parser.errorinfo.php">Parle\Parser::errorInfo</a> — Obt&eacute;m informa&ccedil;&atilde;o do erro</li><li><a href="parle-parser.left.php">Parle\Parser::left</a> — Declara um token com associatividade &agrave; esquerda</li><li><a href="parle-parser.nonassoc.php">Parle\Parser::nonassoc</a> — Declara um token sem associatividade</li><li><a href="parle-parser.precedence.php">Parle\Parser::precedence</a> — Declara uma regra de preced&ecirc;ncia</li><li><a href="parle-parser.push.php">Parle\Parser::push</a> — Adiciona uma regra gramatical</li><li><a href="parle-parser.reset.php">Parle\Parser::reset</a> — Redefine estado do analisador</li><li><a href="parle-parser.right.php">Parle\Parser::right</a> — Declara um token com associatividade &agrave; direita</li><li><a href="parle-parser.sigil.php">Parle\Parser::sigil</a> — Recupera uma parte correspondente de uma regra</li><li><a href="parle-parser.sigilcount.php">Parle\Parser::sigilCount</a> — N&uacute;mero de elementos na regra correspondente</li><li><a href="parle-parser.sigilname.php">Parle\Parser::sigilName</a> — Recupera um nome de regra ou de token</li><li><a href="parle-parser.token.php">Parle\Parser::token</a> — Declara um token</li><li><a href="parle-parser.tokenid.php">Parle\Parser::tokenId</a> — Obt&eacute;m o ID do token</li><li><a href="parle-parser.trace.php">Parle\Parser::trace</a> — Rastreia a opera&ccedil;&atilde;o do analisador</li><li><a href="parle-parser.validate.php">Parle\Parser::validate</a> — Valida entrada</li></ul></li><li><a href="class.parle-rparser.php">Parle\RParser</a> — A classe Parle\RParser<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-rparser.advance.php">Parle\RParser::advance</a> — Processa a pr&oacute;xima regra do analisador</li><li><a href="parle-rparser.build.php">Parle\RParser::build</a> — Finaliza as regras gramaticais</li><li><a href="parle-rparser.consume.php">Parle\RParser::consume</a> — Consome os dados para processamento</li><li><a href="parle-rparser.dump.php">Parle\RParser::dump</a> — Despeja a gram&aacute;tica</li><li><a href="parle-rparser.errorinfo.php">Parle\RParser::errorInfo</a> — Obt&eacute;m informa&ccedil;&atilde;o do erro</li><li><a href="parle-rparser.left.php">Parle\RParser::left</a> — Declara um token com associatividade &agrave; esquerda</li><li><a href="parle-rparser.nonassoc.php">Parle\RParser::nonassoc</a> — Declara um token sem associatividade</li><li><a href="parle-rparser.precedence.php">Parle\RParser::precedence</a> — Declarar uma regra de preced&ecirc;ncia</li><li><a href="parle-rparser.push.php">Parle\RParser::push</a> — Adiciona uma regra gramatical</li><li><a href="parle-rparser.reset.php">Parle\RParser::reset</a> — Redefine estado do analisador</li><li><a href="parle-rparser.right.php">Parle\RParser::right</a> — Declara um token com associatividade &agrave; direita</li><li><a href="parle-rparser.sigil.php">Parle\RParser::sigil</a> — Recupera uma parte correspondente de uma regra</li><li><a href="parle-rparser.sigilcount.php">Parle\RParser::sigilCount</a> — N&uacute;mero de elementos na regra correspondente</li><li><a href="parle-rparser.sigilname.php">Parle\RParser::sigilName</a> — Recupera um nome de regra ou de token</li><li><a href="parle-rparser.token.php">Parle\RParser::token</a> — Declara um token</li><li><a href="parle-rparser.tokenid.php">Parle\RParser::tokenId</a> — Obt&eacute;m o ID do token</li><li><a href="parle-rparser.trace.php">Parle\RParser::trace</a> — Rastreia a opera&ccedil;&atilde;o do analisador</li><li><a href="parle-rparser.validate.php">Parle\RParser::validate</a> — Valida entrada</li></ul></li><li><a href="class.parle-stack.php">Parle\Stack</a> — A classe Parle\Stack<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-stack.pop.php">Parle\Stack::pop</a> — Remove um item da pilha</li><li><a href="parle-stack.push.php">Parle\Stack::push</a> — Insere um item na pilha</li></ul></li><li><a href="class.parle-token.php">Parle\Token</a> — A classe Parle\Token</li><li><a href="class.parle-errorinfo.php">Parle\ErrorInfo</a> — A classe Parle\ErrorInfo</li><li><a href="class.parle-lexerexception.php">Parle\LexerException</a> — A classe Parle\LexerException</li><li><a href="class.parle-parserexception.php">Parle\ParserException</a> — A classe Parle\ParserException</li></ul></div><?php manual_footer($setup); ?>