tutorial sintaxis sintactico sintacticamente simples semantico primaria para oraciones oracion online morfologico informatica explicacion conclusion compuestas completo automatico analizar analizador analisis parsing new-operator

parsing - sintactico - sintaxis de oraciones explicacion



¿Qué es el análisis sintáctico en términos que un nuevo programador entendería? (8)

Soy un estudiante universitario obteniendo mi título en Ciencias de la Computación. Muchos de mis compañeros estudiantes realmente no han hecho mucha programación. Hicieron sus asignaciones de clase, pero seamos honestos, estas preguntas realmente no te enseñan a programar.

He tenido varios otros estudiantes que me hacen preguntas sobre cómo analizar cosas, y nunca estoy seguro de cómo explicarlas. ¿Es mejor comenzar línea por línea buscando subcadenas, o simplemente darles la conferencia más complicada sobre el uso de análisis léxico apropiado, etc. para crear tokens, usar BNF y todas esas otras cosas? Nunca lo entienden del todo cuando trato de explicarlo.

¿Cuál es el mejor enfoque para explicar esto sin confundirlos o desalentarlos de intentarlo realmente?


¿Qué está analizando?

En informática, el análisis es el proceso de analizar texto para determinar si pertenece a un idioma específico o no (es decir, es sintácticamente válido para la gramática de ese idioma ). Es un nombre informal para el proceso de Parsing .

Por ejemplo, supongamos que el lenguaje a^nb^n (que significa el mismo número de caracteres A seguido de la misma cantidad de caracteres B). Un analizador sintáctico para ese idioma aceptaría la entrada AABB y rechazaría la entrada AAAB . Eso es lo que hace un analizador.

Además, durante este proceso, se podría crear una estructura de datos para su posterior procesamiento. En mi ejemplo anterior, podría, por ejemplo, almacenar el AA y BB en dos pilas separadas.

Cualquier cosa que suceda después, como darle sentido a AA o BB , o transformarlo en otra cosa, no es un análisis sintáctico. Dar significado a partes de una secuencia de entrada de tokens se llama análisis semántico .

¿Qué no está analizando?

  • El análisis no transforma una cosa en otra. Transformar A en B, es, en esencia, lo que hace un compiler . La compilación requiere varios pasos, el análisis es solo uno de ellos.
  • El análisis no extrae el significado de un texto. Extraiga el significado de un texto, es un análisis semántico que es un paso del proceso de compilación.

¿Cuál es la forma más simple de entenderlo?

Creo que la mejor manera de entender el concepto de análisis es comenzar con los conceptos más simples. El más simple en el tema de procesamiento del lenguaje es el autómata finito. Es un formalismo para analizar lenguajes regulares, como expresiones regulares.

Es muy simple, tiene una entrada, un conjunto de estados y un conjunto de transiciones. Considere el siguiente lenguaje construido sobre el alfabeto { A, B } , L = { w | w starts with ''AA'' or ''BB'' as substring } L = { w | w starts with ''AA'' or ''BB'' as substring } . El autómata a continuación representa un posible analizador para ese idioma cuyas palabras válidas comienzan con ''AA'' o ''BB''.

A-->(q1)--A-->(qf) / (q0) / B-->(q2)--B-->(qf)

Es un analizador muy simple para ese lenguaje. Empiezas en (q0) , el estado inicial, luego lees un símbolo de la entrada, si es A entonces te mueves al estado (q1) , de lo contrario (es una B , recuerda el recordar que el alfabeto es solo A y B ) te mueves al estado (q2) y así sucesivamente. Si alcanza el estado (qf) , entonces la entrada fue aceptada.

Como es visual, solo necesita un lápiz y un trozo de papel para explicar qué es un analizador sintáctico para cualquier persona, incluido un niño. Creo que la simplicidad es lo que hace que el autómata sea la forma más adecuada para enseñar conceptos de procesamiento del lenguaje, como el análisis sintáctico.

Finalmente, al ser un estudiante de Ciencias de la Computación, estudiará estos conceptos en profundidad en las clases de informática teórica como Lenguajes formales y Teoría de la computación.


Analizar para mí es dividir algo en partes significativas ... usando un conjunto común de definiciones definidas y predefinidas de partes.

Para lenguajes de programación habría partes de palabra clave, secuencias de puntuación utilizables ...

Para pastel de calabaza puede ser algo así como la corteza, relleno y coberturas.

Para los idiomas escritos, puede haber una palabra, una oración, qué es un verbo ...

Para los idiomas hablados puede ser tono, volumen, estado de ánimo, implicación, emoción, contexto

El análisis de sintaxis (así como el sentido común después de todo) diría si lo que está analizando es un pumpkinpie o un lenguaje de programación. ¿Tiene corteza? Bueno, tal vez es budín de calabaza o tal vez un idioma hablado!

Una cosa a tener en cuenta sobre el análisis de cosas es que generalmente hay muchas maneras de dividir las cosas en partes.

Por ejemplo, podría romper un pastel de calabaza cortándolo desde el centro hasta el borde o desde la parte inferior a la parte superior o con una pala para sacar el relleno o utilizando un martillo o comiéndolo.

Y cómo analizar las cosas determinaría si hacer algo con esas partes será fácil o difícil.

En el mundo de los "lenguajes de la computadora", hay formas comunes de analizar el código fuente del texto. Estos métodos comunes (algoritmos) tienen títulos o nombres. Busque en Internet métodos y nombres comunes para analizar el idioma. Wikipedia puede ayudar en este sentido.


En lingüística, para dividir el lenguaje en pequeños componentes que pueden analizarse. Por ejemplo, analizar esta oración implica dividirla en palabras y frases e identificar el tipo de cada componente (p. Ej., Verbo, adjetivo o sustantivo).

El análisis es una parte muy importante de muchas disciplinas de ciencias de la computación. Por ejemplo, los compiladores deben analizar el código fuente para poder traducirlo a código objeto. Del mismo modo, cualquier aplicación que procese comandos complejos debe poder analizar los comandos. Esto incluye prácticamente todas las aplicaciones de usuario final.

El análisis a menudo se divide en análisis léxico y análisis semántico. El análisis léxico se concentra en dividir cadenas en componentes, llamados tokens, basados ​​en la puntuación y otras claves. El análisis semántico luego intenta determinar el significado de la cadena.

http://www.webopedia.com/TERM/P/parse.html


Explicación simple: El análisis es dividir un bloque de datos en piezas más pequeñas (tokens) siguiendo un conjunto de reglas (usando delimitadores, por ejemplo), de modo que estos datos podrían ser procesos pieza por pieza (administrados, analizados, interpretados, transmitidos, ets) .

Ejemplos: muchas aplicaciones (como los programas de hoja de cálculo) utilizan el formato de archivo CSV (valores separados por comas) para importar y exportar datos. El formato CSV hace posible que las aplicaciones procesen estos datos con la ayuda de un analizador especial. Los navegadores web tienen analizadores especiales para archivos HTML y CSS. Los analizadores JSON existen. Todos los formatos de archivos especiales deben tener algunos analizadores diseñados específicamente para ellos.


Explicaría el análisis como el proceso de convertir algún tipo de datos en otro tipo de datos.

En la práctica, para mí esto casi siempre está convirtiendo una cadena o datos binarios en una estructura de datos dentro de mi Programa.

Por ejemplo, girando

":Nick!User@Host PRIVMSG #channel :Hello!"

en (C)

struct irc_line { char *nick; char *user; char *host; char *command; char **arguments; char *message; } sample = { "Nick", "User", "Host", "PRIVMSG", { "#channel" }, "Hello!" }


Pídales que intenten escribir un programa que pueda evaluar expresiones aritméticas simples arbitrarias. Este es un problema simple de entender, pero a medida que comienzas a profundizar en él, muchos análisis básicos comienzan a tener sentido.


Parsing es el proceso de analizar texto hecho de una secuencia de tokens para determinar su estructura gramatical con respecto a una gramática dada (más o menos) formal.

El analizador luego construye una estructura de datos basada en los tokens. Esta estructura de datos puede ser utilizada por un compilador, intérprete o traductor para crear un programa ejecutable o una biblioteca.

texto alternativo http://upload.wikimedia.org/wikipedia/en/a/a9/Parser_Flow.gif

Si le di una oración en inglés y le pedí que dividiera la oración en sus partes del habla (sustantivos, verbos, etc.), estaría analizando la oración.

Esa es la explicación más simple de análisis que puedo pensar.

Dicho esto, el análisis sintáctico es un problema computacional no trivial. Tienes que comenzar con ejemplos simples y avanzar hacia los más complejos.


El análisis se trata de LECTURA de datos en un formato, para que pueda usarlo según sus necesidades.

Creo que debes enseñarles a pensar así. Entonces, esta es la manera más simple en que puedo pensar para explicar el análisis de alguien nuevo en este concepto.

En general, tratamos de analizar los datos de una línea a la vez porque generalmente es más fácil para los humanos pensar de esta manera, dividir y conquistar, y también más fácil de codificar.

Llamamos campo a cada información mínima indivisible. El nombre es el campo, la edad es otro campo y el apellido es otro campo. Por ejemplo.

En una línea, podemos tener varios campos. Para distinguirlos, podemos delimitar campos por separadores o por la longitud máxima asignada a cada campo.

Por ejemplo: separando campos por comas

Paul, 20 años, Jones

O por espacio (el nombre puede tener 20 letras máx., Edad hasta 3 dígitos, Jones hasta 20 letras)

Paul 020Jones

Cualquiera de los anteriores grupos de campos se llama registro.

Para separar entre un registro de campo delimitado, necesitamos delimitar el registro. Un punto será suficiente (aunque usted sabe que puede aplicar CR / LF).

Una lista podría ser:

Michael, 39, Jordan.Shaquille, 40, O''neal.Lebron, 24, James.

o con CR / LF

Michael, 39 años, Jordan
Shaquille, 40, O''neal
Lebron, 24, James

Puedes decirles que enumeren 10 nba (o nlf) jugadores que les gustan. Luego, deben escribirlos de acuerdo con un formato. Luego crea un programa para analizarlo y mostrar cada registro. Un grupo puede hacer una lista en un formato separado por comas y un programa para analizar una lista en un formato de tamaño fijo, y viceversa.