<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'book.parle.php',
    1 => 'Parle',
    2 => 'An&aacute;lisis l&eacute;xico y sint&aacute;ctico',
  ),
  'up' => 
  array (
    0 => 'refs.basic.text.php',
    1 => 'Procesamiento de texto',
  ),
  'prev' => 
  array (
    0 => 'function.commonmark-render-xml.php',
    1 => 'CommonMark\\Render\\XML',
  ),
  'next' => 
  array (
    0 => 'parle.setup.php',
    1 => 'Instalaci&oacute;n/Configuraci&oacute;n',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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álisis léxico y sintáctico</h1>
 

 <div id="intro.parle" class="preface">
  <h1 class="title">Introducción</h1>
  <div class="warning"><strong class="warning">Advertencia</strong><p class="simpara">
 Esta extensión es <em>EXPERIMENTAL</em>. El comportamiento de esta extensión, los nombres de sus funciones,
 y toda la documentación alrededor de esta extensión puede cambiar sin previo aviso en una próxima versión de PHP.
 Esta extensión debe ser utilizada bajo su propio riesgo.
</p></div>
  <p class="para">
   La extensión parle proporciona facilidades de lexing y parsing de uso general. La implementación se basa en las bibliotecas de <a href="http://www.benhanson.net/" class="link external">&raquo;&nbsp;estas librerías</a> y requiere un compilador compatible con <a href="http://en.cppreference.com/w/cpp/compiler_support" class="link external">&raquo;&nbsp;C++14</a>. El análisis léxico se basa en la correspondencia regex, el análisis sintáctico es LALR(1). Los analizadores se generan sobre la marcha y pueden ser utilizados inmediatamente después de haber sido finalizados. Parle maneja el análisis léxico y sintáctico, la representación y el tratamiento de las estructuras de datos apropiadas son tarea del implementador. La serialización y la generación de código no son soportadas por la extensión, por el momento.
  </p>
  <p class="para">
   El analizador léxico es un proceso de división de una secuencia de caracteres en una lista de lexemas. La lista de lexemas puede ser utilizada posteriormente para el análisis sintáctico en relación con una gramática formal. Estas operaciones también son conocidas como análisis léxico (lexing) y análisis sintáctico (parsing). Esta documentación no tiene como objetivo proporcionar información exhaustiva sobre el lexing y el parsing. Buena información sobre estos temas está disponible en numerosos recursos en la red. Varios ejemplos de uso están incluidos para mostrar la funcionalidad. La extensión es útil para los desarrolladores PHP que deseen aprender o utilizar el análisis léxico y sintáctico. Las máquinas de estado y el análisis de gramática no tienen
  </p>
  <p class="para">
   Los casos de uso comunes para parle son cuando un formato de datos es demasiado complejo para ser manejado por la correspondencia regex con PCRE. La aplicación práctica es, por lo tanto, amplia. Ya sea un formato de datos específico, una modificación del comportamiento de las funciones existentes, o incluso un lenguaje de programación y más allá. Los métodos de ayuda como <span class="methodname"><a href="parle-lexer.dump.php" class="methodname">Parle\Lexer::dump()</a></span> para inspeccionar la máquina de estado generada, o <span class="methodname"><a href="parle-parser.dump.php" class="methodname">Parle\Parser::dump()</a></span> para inspeccionar la gramática generada, son útiles. El método <span class="methodname"><a href="parle-parser.trace.php" class="methodname">Parle\Parser::trace()</a></span> también puede ser utilizado para seguir la operación de análisis.
  </p>
 </div>

 







 








 






 






 






 






 






 






 






 






 








 








 









<ul class="chunklist chunklist_book"><li><a href="parle.setup.php">Instalaci&oacute;n/Configuraci&oacute;n</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="parle.requirements.php">Requerimientos</a></li><li><a href="parle.installation.php">Instalaci&oacute;n</a></li></ul></li><li><a href="parle.constants.php">Constantes predefinidas</a></li><li><a href="parle.pattern.matching.php">Correspondencia de patr&oacute;n</a> — Correspondencia de patr&oacute;n Parle</li><li><a href="parle.examples.php">Ejemplos</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="parle.examples.lexer.php">Ejemplos de an&aacute;lisis l&eacute;xico (Lexer)</a></li><li><a href="parle.examples.parser.php">Ejemplos de an&aacute;lisis sint&aacute;ctico (Parser)</a></li></ul></li><li><a href="class.parle-lexer.php">Parle\Lexer</a> — La clase Parle\Lexer<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-lexer.advance.php">Parle\Lexer::advance</a> — Avanzar a la regla siguiente del lexer</li><li><a href="parle-lexer.build.php">Parle\Lexer::build</a> — Finaliza el conjunto de reglas del lexer</li><li><a href="parle-lexer.callout.php">Parle\Lexer::callout</a> — Define una funci&oacute;n de retrollamada de token</li><li><a href="parle-lexer.consume.php">Parle\Lexer::consume</a> — Pasa los datos para el procesamiento</li><li><a href="parle-lexer.dump.php">Parle\Lexer::dump</a> — Muestra la m&aacute;quina de estado</li><li><a href="parle-lexer.gettoken.php">Parle\Lexer::getToken</a> — Devuelve el token actual</li><li><a href="parle-lexer.insertmacro.php">Parle\Lexer::insertMacro</a> — Inserta una macro regex</li><li><a href="parle-lexer.push.php">Parle\Lexer::push</a> — A&ntilde;ade una regla de an&aacute;lisis</li><li><a href="parle-lexer.reset.php">Parle\Lexer::reset</a> — Reinicializa el analizador l&eacute;xico</li></ul></li><li><a href="class.parle-rlexer.php">Parle\RLexer</a> — La clase Parle\RLexer<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-rlexer.advance.php">Parle\RLexer::advance</a> — Procesa la regla siguiente del analizador</li><li><a href="parle-rlexer.build.php">Parle\RLexer::build</a> — Finaliza el conjunto de reglas del lexer</li><li><a href="parle-rlexer.callout.php">Parle\RLexer::callout</a> — Define una funci&oacute;n de retrollamada de token</li><li><a href="parle-rlexer.consume.php">Parle\RLexer::consume</a> — Pasa los datos para su procesamiento</li><li><a href="parle-rlexer.dump.php">Parle\RLexer::dump</a> — Muestra la m&aacute;quina de estado</li><li><a href="parle-rlexer.gettoken.php">Parle\RLexer::getToken</a> — Devuelve el token actual</li><li><a href="parle-rlexer.insertmacro.php">Parle\RLexer::insertMacro</a> — Inserta una macro regex</li><li><a href="parle-rlexer.push.php">Parle\RLexer::push</a> — A&ntilde;ade una regla de an&aacute;lisis</li><li><a href="parle-rlexer.pushstate.php">Parle\RLexer::pushState</a> — Empuja un nuevo estado de inicio</li><li><a href="parle-rlexer.reset.php">Parle\RLexer::reset</a> — Reinicializa el analizador l&eacute;xico</li></ul></li><li><a href="class.parle-parser.php">Parle\Parser</a> — La clase Parle\Parser<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-parser.advance.php">Parle\Parser::advance</a> — Procesa la regla siguiente del analizador</li><li><a href="parle-parser.build.php">Parle\Parser::build</a> — Finaliza las reglas de gram&aacute;tica</li><li><a href="parle-parser.consume.php">Parle\Parser::consume</a> — Consume los datos para el procesamiento</li><li><a href="parle-parser.dump.php">Parle\Parser::dump</a> — Muestra la gram&aacute;tica</li><li><a href="parle-parser.errorinfo.php">Parle\Parser::errorInfo</a> — Recupera las informaciones de error</li><li><a href="parle-parser.left.php">Parle\Parser::left</a> — Declara un token con asociatividad a la izquierda</li><li><a href="parle-parser.nonassoc.php">Parle\Parser::nonassoc</a> — Declara un token sin asociatividad</li><li><a href="parle-parser.precedence.php">Parle\Parser::precedence</a> — Declara una regla de precedencia</li><li><a href="parle-parser.push.php">Parle\Parser::push</a> — A&ntilde;ade una regla de gram&aacute;tica</li><li><a href="parle-parser.reset.php">Parle\Parser::reset</a> — Reinicializa el estado del analizador</li><li><a href="parle-parser.right.php">Parle\Parser::right</a> — Declara un token con asociatividad a la derecha</li><li><a href="parle-parser.sigil.php">Parle\Parser::sigil</a> — Recupera una parte correspondiente de una regla</li><li><a href="parle-parser.sigilcount.php">Parle\Parser::sigilCount</a> — N&uacute;mero de elementos en la regla correspondiente</li><li><a href="parle-parser.sigilname.php">Parle\Parser::sigilName</a> — Recupera un nombre de regla o de token</li><li><a href="parle-parser.token.php">Parle\Parser::token</a> — Declara un token</li><li><a href="parle-parser.tokenid.php">Parle\Parser::tokenId</a> — Devuelve el identificador del token</li><li><a href="parle-parser.trace.php">Parle\Parser::trace</a> — Rastrea la operaci&oacute;n del analizador</li><li><a href="parle-parser.validate.php">Parle\Parser::validate</a> — Valida una entrada</li></ul></li><li><a href="class.parle-rparser.php">Parle\RParser</a> — La clase Parle\RParser<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-rparser.advance.php">Parle\RParser::advance</a> — Procesa la regla siguiente del analizador</li><li><a href="parle-rparser.build.php">Parle\RParser::build</a> — Finaliza las reglas de gram&aacute;tica</li><li><a href="parle-rparser.consume.php">Parle\RParser::consume</a> — Consume los datos para el procesamiento</li><li><a href="parle-rparser.dump.php">Parle\RParser::dump</a> — Muestra la gram&aacute;tica</li><li><a href="parle-rparser.errorinfo.php">Parle\RParser::errorInfo</a> — Recupera las informaciones de error</li><li><a href="parle-rparser.left.php">Parle\RParser::left</a> — Declara un token con asociatividad a la izquierda</li><li><a href="parle-rparser.nonassoc.php">Parle\RParser::nonassoc</a> — Declara un token sin asociatividad</li><li><a href="parle-rparser.precedence.php">Parle\RParser::precedence</a> — Declara una regla de precedencia</li><li><a href="parle-rparser.push.php">Parle\RParser::push</a> — A&ntilde;ade una regla de gram&aacute;tica</li><li><a href="parle-rparser.reset.php">Parle\RParser::reset</a> — Reinicializa el estado del analizador</li><li><a href="parle-rparser.right.php">Parle\RParser::right</a> — Declara un token con asociatividad a la derecha</li><li><a href="parle-rparser.sigil.php">Parle\RParser::sigil</a> — Recupera una parte correspondiente de una regla</li><li><a href="parle-rparser.sigilcount.php">Parle\RParser::sigilCount</a> — N&uacute;mero de elementos en la regla correspondiente</li><li><a href="parle-rparser.sigilname.php">Parle\RParser::sigilName</a> — Recupera un nombre de regla o de token</li><li><a href="parle-rparser.token.php">Parle\RParser::token</a> — Declara un token</li><li><a href="parle-rparser.tokenid.php">Parle\RParser::tokenId</a> — Devuelve el identificador del token</li><li><a href="parle-rparser.trace.php">Parle\RParser::trace</a> — Rastrea la operaci&oacute;n del analizador</li><li><a href="parle-rparser.validate.php">Parle\RParser::validate</a> — Valida una entrada</li></ul></li><li><a href="class.parle-stack.php">Parle\Stack</a> — La clase Parle\Stack<ul class="chunklist chunklist_book chunklist_children"><li><a href="parle-stack.pop.php">Parle\Stack::pop</a> — Extrae un elemento de la pila</li><li><a href="parle-stack.push.php">Parle\Stack::push</a> — A&ntilde;ade un elemento a la pila</li></ul></li><li><a href="class.parle-token.php">Parle\Token</a> — La clase Parle\Token</li><li><a href="class.parle-errorinfo.php">Parle\ErrorInfo</a> — La clase Parle\ErrorInfo</li><li><a href="class.parle-lexerexception.php">Parle\LexerException</a> — La clase Parle\LexerException</li><li><a href="class.parle-parserexception.php">Parle\ParserException</a> — La clase Parle\ParserException</li></ul></div><?php manual_footer($setup); ?>