Analizando

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 25 de diciembre de 2021; las comprobaciones requieren 2 ediciones .

El análisis sintáctico (o parsing , argot  parsing ← parsing en inglés  ) en lingüística e informática  es el proceso de comparar una secuencia lineal de lexemas (palabras, tokens) de un lenguaje natural o formal con su gramática formal . El resultado suele ser un árbol de análisis (árbol de sintaxis). Por lo general, se utiliza junto con el análisis léxico .

Un analizador ( parser en jerga  ← analizador en inglés ) es un programa o parte de un programa que realiza el análisis.  

Durante el análisis, el texto de origen se convierte en una estructura de datos , generalmente un árbol, que refleja la estructura sintáctica de la secuencia de entrada y es adecuada para su posterior procesamiento.

Como regla general, el resultado del análisis sintáctico es la estructura sintáctica de la oración, presentada ya sea en forma de árbol de dependencia , o en forma de árbol de componentes , o en forma de alguna combinación del primer y segundo método de representación. .

Alcance

Cualquier cosa que tenga una " sintaxis " se presta al análisis automático.

Tipos de algoritmos

Recuperación de errores

La forma más sencilla de responder a una cadena de tokens de entrada no válida es finalizar el análisis y mostrar un mensaje de error. Sin embargo, a menudo es útil encontrar tantos errores como sea posible en un intento de análisis. Así se comportan los traductores de los lenguajes de programación más comunes.

Por lo tanto, el controlador de errores del analizador tiene las siguientes tareas:

Las estrategias de recuperación de errores más conocidas se describen a continuación.

Recuperación en modo pánico

Cuando se encuentra un error, el analizador omite los tokens de entrada uno a la vez hasta que se encuentra uno de un conjunto especialmente definido de tokens de sincronización . Por lo general, estos tokens son delimitadores, por ejemplo: ; , ) o } . El conjunto de tokens de sincronización debe ser determinado por el desarrollador del lenguaje analizado. Con esta estrategia de recuperación, es posible que se omita una cantidad significativa de caracteres sin comprobar si hay errores adicionales. Esta estrategia de recuperación es la más fácil de implementar.

Recuperación de nivel de frase

A veces, cuando se encuentra un error, el analizador puede realizar una corrección local en el flujo de entrada para permitir que continúe. Por ejemplo, antes de un punto y coma que separa varias declaraciones en un lenguaje de programación, el analizador puede cerrar paréntesis que aún no se hayan cerrado. Esto es más complejo de diseñar e implementar, pero en algunas situaciones, puede funcionar significativamente mejor que la recuperación de pánico. Naturalmente, esta estrategia es impotente si el error real ocurrió antes de que el analizador lo detectara.

Producciones de errores

El conocimiento de los errores más comunes permite ampliar la gramática del idioma con producciones que generan construcciones erróneas. Cuando tales producciones se activan, se registra un error, pero el analizador continúa ejecutándose normalmente.

Herramientas de desarrollo del analizador

Las etapas separadas de desarrollo y construcción de traductores pueden ser automatizadas y realizadas por una computadora.

Estas son algunas de las herramientas de desarrollo de analizadores más conocidas [2] :

Véase también comparación de generadores de analizadores .

Véase también

Notas

  1. Tim Jones M. Extraer información de Internet utilizando el lenguaje Ruby. (22 de mayo de 2014). Consultado el 13 de diciembre de 2019. Archivado desde el original el 13 de diciembre de 2019.
  2. Ela Kumar. procesamiento natural del lenguaje. - IK International Pvt Ltd, 2011. - Pág. 100. - ISBN 978-93-80578-77-4 .

Literatura

Enlaces