En el lingüística de informática de y, que analiza (más formalmente: el análisis sintáctico del ) es el proceso de analizar una secuencia de los símbolos para determinar su estructura gramatical con respecto a un dado la gramática formal . Un programa de análisis es el componente de un recopilador que realice esta tarea.
El análisis transforma el texto de entrada en una estructura de datos, generalmente un árbol, que es conveniente para más adelante procesar y que capture la jerarquía implicada de la entrada. El análisis léxico crea símbolos de una secuencia de carácteres de la entrada y es estos símbolos que son procesados por un programa de análisis para construir una estructura de datos tal como analizan el árbol o los árboles de abstract syntax .
El análisis es también un término anterior para diagramming de oraciones de idiomas naturales, y todavía se utiliza para diagramming de las idiomas descendidas, tales como las idiomas románticas o latino.
Los generadores de programa de análisis son las herramientas que pueden generar automáticamente un programa de análisis (en un cierto lenguaje de programación) de una gramática escrita en la forma (e. Yacc - otro más recopilador de Backus-Naur del recopilador ).
La mayoría de los programas de análisis modernos son por lo menos en parte el estadístico; es decir, confían en una recopilación de los datos del entrenamiento que se ha anotado ya (analizado a mano). Este acercamiento permite que el sistema recopile la información sobre la frecuencia con la cual las varias construcciones ocurren en contextos específicos. (véase el aprendizaje de máquina .) Los acercamientos de se han utilizado que incluyen el directo PCFGs (gramáticas independientes del contexto de probabilidad), la entropía máxima, y las redes de los nervios la mayor parte de que los sistemas más acertados utilizan las estadísticas léxicas del (es decir, consideran las identidades de las palabras implicadas, así como su parte del discurso ). Sin embargo tales sistemas son vulnerables al Overfitting y requieren una cierta clase de alisar a ser eficaz.
Los algoritmos de análisis sintáctico para de lenguaje natural no pueden confiar en la gramática que tiene características “agradables” como con las gramáticas manual-diseñadas para los lenguajes de programación. Según lo mencionado anterior algunos formalismos de la gramática ser muy de cómputo difícil de analizar; generalmente incluso si la estructura deseada no es el sin contexto, una cierta clase de aproximación sin contexto a la gramática se utiliza para realizar un primer paso. Los algoritmos que utilizan gramáticas independientes del contexto confían a menudo en una cierta variante del algoritmo CKY, con un cierto heurístico para podar generalmente análisis inverosímiles ausentes para ahorrar tiempo. (véase el trazar el análisis .) sin embargo la velocidad comercial de algunos sistemas para la exactitud usar, eg., las versiones del linear-tiempo Cambiar de puesto-reducen algoritmo de . Un reciente desarrollo ha sido algo analiza reranking en el cual el programa de análisis propone un cierto gran número de análisis, y un sistema más complejo selecciona la mejor opción.
El más de uso común de un programa de análisis está como componente de un recopilador . Esto analiza el código fuente de un lenguaje el de programación de computadora para crear una cierta forma de representación interna. Los lenguajes de programación tienden a ser especificados en términos de gramática independiente del contexto porque los programas de análisis rápidos y eficientes se pueden escribir para ellos. Los programas de análisis no se escriben generalmente a mano sino son generados por los generadores de programa de análisis
Las gramáticas independientes del contexto se limitan en el grado a el cual pueden expresar todos los requisitos de una lengua. Informal, la razón es que la memoria de tal lengua es limitada. La gramática no puede recordar la presencia de una construcción sobre una entrada arbitrariamente larga; esto es necesario para una lengua en la cual, por ejemplo, un nombre deba ser declarado antes de que pueda ser referida. Gramáticas más de gran alcance que pueden expresar este constreñimiento, sin embargo, no se pueden analizar eficientemente. Así, es una estrategia común para crear un programa de análisis relaxed para una gramática independiente del contexto que acepte un sobreconjunto de las construcciones de lengua deseadas (es decir, acepta algunas construcciones inválidas); más adelante, las construcciones indeseadas se pueden filtrar hacia fuera.
La primera fase es la generación simbólica, o el análisis léxico, por el cual la corriente del carácter de la entrada es partida en los símbolos significativos definidos por una gramática de las expresiones regulares por ejemplo, un programa de calculadora miraría una entrada tal como " 12* (3+4)^2" y partirlo en los símbolos 12, *, (, 3, +, 4, ) , ^ y 2, que es un símbolo significativo en el contexto de una expresión aritmética. El programa de análisis contendría reglas para decirle que los carácteres *, +, ^, marca del ( y ) el comienzo de nuevos símbolos simbólicos, tan sin setido tienen gusto del " 12*" o " (3" no será generado.
La etapa siguiente está analizando o sintáctico análisis, que está comprobando que los símbolos forman una expresión permisible. Esto se hace generalmente referente a una gramática independiente del contexto que defina recurrentemente los componentes que pueden componer una expresión y la orden en las cuales deban aparecer. Sin embargo, no todas las reglas que definen lenguajes de programación se pueden expresar por gramáticas independientes del contexto solamente, por ejemplo tipo validez y declaración apropiada de identificadores. Estas reglas se pueden expresar formalmente con las gramáticas de cualidad
La fase final es análisis semántico o el análisis, que están resolviendo las implicaciones de la expresión apenas validada y están tomando medidas apropiadas. En el caso de una calculadora, la acción es evaluar la expresión; un recopilador, por una parte, generaría código. Las gramáticas de cualidad se pueden también utilizar para definir estas acciones.
Otra distinción importante es si el programa de análisis genera una derivación extrema izquierda del o una derivación de derecha del (véase la gramática independiente del contexto ). Los programas de análisis de LL generarán una derivación extrema izquierda y los programas de análisis de LR generarán una derivación de derecha (aunque generalmente en revés).
.
| Random links: | Emotivism | Werner Bischof | Collaroy, Nuevo Gales del Sur | Hamilton del sur (distrito electoral) | Ejecutivo europeo expreso |