LENGUAJES DE PROGRAMACION
Enviado por MikolContry • 29 de Abril de 2022 • Tarea • 1.880 Palabras (8 Páginas) • 45 Visitas
LENGUAJES DE PROGRAMACION
Leer los caracteres de entrada y elaborar como salida una secuencia de componentes léxicos que utiliza el analizador sintáctico para hacer el análisis.
El analizador léxico es la primera fase de un compilador. Su principal función consiste en leer los caracteres de entrada y elaborar como salida una secuencia de componentes léxicos que utiliza el analizador sintáctico para hacer el análisis. Esta interacción, suele aplicarse convirtiendo al analizador léxico en una subrutina o corrutina del analizador sintáctico. Cuando hablamos de esto nos referimos a ciertas pautas que van asociándose con instrucciones específicas propias del lenguaje, como por ejemplo palabras claves u operadores aritméticos. Para que se entienda mejor de lo que estamos hablando la siguiente tabla sin dudas servirá de ayuda:
Expresión Regular | Token | Valor de atributo |
if | IF | Palabra clave if |
WhilE | WHILE | Palabra clave WGILE |
lastName, count, status2 | ID | Cualquier secuencia de caracteres seguidos por caracteres o dígitos |
0, 1, 2, 500 | NUM | Cualquier número |
«cadena de texto» | STRING | Cualquier cadena de texto |
+ | PLUS | Operador de suma |
> | GT | Greater than, o Mayor que |
>= | GE | Greater than or equal to, o Mayor o igual que |
= | EQ | Equal to, o Igual que |
EOF | End of file, o Fin de archivo |
Un analizador léxico permite que un traductor maneje instrucciones de varios caracteres como identificadores, que se escriben como secuencias de caracteres, pero se tratan como unidades conocidas como tokens durante el análisis sintáctico; por ejemplo, en la expresión cuenta+1, el identificador cuenta se trata como una unidad.
Una gramática describe en forma natural la estructura jerárquica de la mayoría de las instrucciones de un lenguaje de programación. Por ejemplo, una instrucción if-else en Java puede tener la siguiente forma:
if ( expr ) instr else instr
Una gramática libre de contexto tiene cuatro componentes:
1. Un conjunto de símbolos terminales, a los que algunas veces se les conoce como “tokens”. Los terminales son los símbolos elementales del lenguaje definido por la gramática.
2. Un conjunto de no terminales, a las que algunas veces se les conoce como “variables sintácticas”. Cada no terminal representa un conjunto de cadenas o terminales, de una forma que describiremos más adelante.
3. Un conjunto de producciones, en donde cada producción consiste en un no terminal, llamada encabezado o lado izquierdo de la producción, una flecha y una secuencia de terminales y no terminales, llamada cuerpo o lado derecho de la producción. La intención intuitiva de una producción es especificar una de las formas escritas de una instrucción; si el no terminal del encabezado representa a una instrucción, entonces el cuerpo representa una forma escrita de la instrucción.
4. Una designación de una de los no terminales como el símbolo inicial.
Para especificar las gramáticas presentamos sus producciones, en donde primero se listan las producciones para el símbolo inicial. Suponemos que los dígitos, los signos como < y <=, y las cadenas en negritas como while son terminales. Un nombre en cursiva es un no terminal, y se puede asumir que cualquier nombre o símbolo que no esté en cursiva es un terminal.
EJEMPLO:
[pic 1]
Un árbol de análisis sintáctico muestra, en forma gráfica, la manera en que el símbolo inicial de una gramática deriva a una cadena en el lenguaje.
De manera formal, dada una gramática libre de contexto, un árbol de análisis sintáctico de acuerdo con la gramática es un árbol con las siguientes propiedades:
1. La raíz se etiqueta con el símbolo inicial.
2. Cada hoja se etiqueta con un terminal, o con .
3. Cada nodo interior se etiqueta con un no terminal.
4. Si A es el no terminal que etiqueta a cierto nodo interior, y X1, X2, . . ., Xn son las etiquetas de los hijos de ese nodo de izquierda a derecha, entonces debe haber una producción A → X1X2 · · · Xn. Aquí, cada una de las etiquetas X1, X2, . . ., Xn representa a un símbolo que puede ser o no un terminal. Como un caso especial, si A → es una producción, entonces un nodo etiquetado como A puede tener un solo hijo, etiquetado como .
EJEMPLO:
Dada la siguiente producción [pic 2][pic 3]
se genera el siguiente árbol:
PROCESAMIENTO DE LENGUAJES NATURALES
Procesamiento de Lenguajes Naturales en el área de la Inteligencia Artificial para establecer comunicación con Agentes Inteligentes por medio de modelos formales que representan una comunicación similar a la humana. El Procesamiento del Lenguaje Natural es el campo de conocimiento de la Inteligencia Artificial que se ocupa de la investigar la manera de comunicar las máquinas con las personas mediante el uso de lenguas naturales, como el español, el inglés o el chino.
Tratar computacionalmente una lengua implica un proceso de modelización matemática. Los ordenadores solo entienden de bytes y dígitos y los informáticos codifican los programas empleando lenguajes de programación como C, Python o Java. Los lingüistas escriben reglas de reconocimiento de patrones estructurales, empleando un formalismo gramatical concreto. Estas reglas, en combinación con la información almacenada en diccionarios computacionales, definen los patrones que hay que reconocer para resolver la tarea (buscar información, traducir, etc.). Estos modelos lógicos pretenden reflejar la estructura lógica del lenguaje y surgen a partir de las teorías de N. Chomsky en los años 50.
...