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 ).

Idiomas humanas

En una cierta traducción automática y sistemas del proceso de lenguaje natural, las idiomas humanas son analizadas por programas de computadora. Las oraciones humanas no son analizadas fácilmente por programas, pues hay la ambigüedad substancial en la estructura de la lengua humana. Para analizar datos de lenguaje natural, los investigadores deben primero estar de acuerdo con la gramática que se utilizará. La opción del sintaxis es afectada por el lingüístico y las preocupaciones de cómputo; por ejemplo algunos sistemas del análisis utilizan la gramática funcional léxica, pero generalmente analizando para las gramáticas de este tipo se sabe para ser el NP-completo. la gramática de estructura de frase Cabeza-conducida es otro formalismo lingüístico que ha sido popular en la comunidad de análisis, pero otros esfuerzos de investigación se han centrado en formalismos menos complejos tales como el que está usado en el Treebank de Penn. El análisis bajo apunta encontrar solamente los límites de componentes importantes tales como oraciones nominales. Otra estrategia popular para evitar controversia lingüística es la gramática de dependencia que analiza.

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.

Lenguajes de programació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.

Descripción del proceso

El ejemplo siguiente demuestra el caso común de analizar un lenguaje de programación con dos niveles de gramática: léxico y sintáctico.

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.

Tipos de programas de análisis

La tarea del programa de análisis es esencialmente determinar si y cómo la entrada se puede derivar del símbolo de inicio de la gramática. Esto se puede hacer de esencialmente dos maneras:
Análisis de arriba hacia abajo - un programa de análisis puede comenzar con el símbolo de inicio e intentar transformarlo a la entrada. Intuitivo, el programa de análisis empieza con los elementos más grandes y los rompe abajo en piezas incremental más pequeñas. Los programas de análisis LL son ejemplos de programas de análisis de arriba hacia abajo.
Análisis ascendente - un programa de análisis puede comenzar con la entrada e intentar reescribirla al símbolo de inicio. Intuitivo, el programa de análisis intenta establecer los elementos más básicos, entonces los elementos que contienen éstos, y así sucesivamente. Los programas de análisis de LR son ejemplos de programas de análisis ascendentes. Otro término usado para este tipo de programa de análisis es Cambiar de puesto-Reduce el analizar de .

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).

Ejemplos de programas de análisis

Programas de análisis de arriba hacia abajo

Algunos de los programas de análisis que utilizan el análisis de arriba hacia abajo incluyen:
Programa de análisis recurrente de la pendiente
Programa de análisis ( L eft-a-derecho, L derivación eftmost LL de )

Programas de análisis ascendentes

Algunos de los programas de análisis que utilizan el análisis ascendente incluyen:
Programa de análisis de la precedencia programa de análisis de la Operador-precedencia
Programa de análisis simple de la precedencia
A. (contexto limitado) análisis
Programa de análisis ( L eft-a-derecho, derivación ightmost de LR del R ) Programa de análisis simple de LR (SLR)
Programa de análisis LALR (el cambio/reduce programa de análisis)
LR canónica programa de análisis (de LR (1))
Programa de análisis GLR
Programa de análisis CYK

.

  • Zenithic
  • Finlay Crisp
    Random links:Emotivism | Werner Bischof | Collaroy, Nuevo Gales del Sur | Hamilton del sur (distrito electoral) | Ejecutivo europeo expreso

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">