Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo:
Un alfabeto con una sola letra V = { a }, podemos decir que el universo del
discurso es: W(V) = { λ, a, aa, aaa, aaaa,....} y así contiene una cadenas infinitas.
Lenguajes, tipos y herramientas.
Lenguajes. Es un conjunto de cadenas, de todas las seleccionadas de un Σ*. Si Σ
es un alfabeto y L Σ*, entonces L es un lenguaje de Σ.
Observe que un lenguaje de Σ no necesita incluir cadenas con todos los símbolos
de Σ, ya que una vez que se sabe que L es un lenguaje de Σ, también sabemos que
es un lenguaje de cualquier alfabeto que sea un súper conjunto de Σ.
Lenguajes, tipos y herramientas.
La elección del término "lenguaje" puede parecer extraña, Sin embargo, los
lenguajes habituales pueden interpretarse como conjuntos de cadenas. Un
ejemplo sería el Inglés, donde la colección de las palabras correctas inglesas es
un conjunto de cadenas del alfabeto que consta de todas las letras.
Lenguajes, tipos y herramientas.
Tipos de lenguajes.
● \t — Representa un tabulador.
● \r — Representa el "retorno de carro" o "regreso al inicio" o sea el lugar en que la línea vuelve a iniciar.
● \n — Representa la "nueva línea" el carácter por medio del cual una línea da inicio. Es necesario recordar que en Windows es
necesaria una combinación de \r\n para comenzar una nueva línea, mientras que en Unix solamente se usa \n y en Mac_OS
clásico se usa solamente \r.
● \a — Representa una "campana" o "beep" que se produce al imprimir este carácter.
● \e — Representa la tecla "Esc" o "Escape"
● \f — Representa un salto de página
● \v — Representa un tabulador vertical
● \x — Se utiliza para representar caracteres ASCII o ANSI si conoce su código. De esta forma, si se busca el símbolo de
derechos de autor y la fuente en la que se busca utiliza el conjunto de caracteres latín-1 es posible encontrarlo utilizando \xA9".
● \u — Se utiliza para representar caracteres Unicode si se conoce su código. "\u00A2" representa el símbolo de centavos. No
todos los motores de Expresiones Regulares soportan Unicode. El .Net Framework lo hace, pero el EditPad Pro no, por ejemplo.
Diseño de una ER.
● \d — Representa un dígito del 0 al 9.
● \w — Representa cualquier carácter alfanumérico.
● \s — Representa un espacio en blanco.
● \D — Representa cualquier carácter que no sea un dígito del 0 al 9.
● \W — Representa cualquier carácter no alfanumérico.
● \S — Representa cualquier carácter que no sea un espacio en blanco.
● \A — Representa el inicio de la cadena. No un carácter sino una posición.
● \Z — Representa el final de la cadena. No un carácter sino una posición.
● \b — Marca la posición de una palabra limitada por espacios en blanco, puntuación o el inicio/final
de una cadena.
● \B — Marca la posición entre dos caracteres alfanuméricos o dos no-alfanuméricos.
Diseño de una ER.
Los corchetes "[ ]".La función de los corchetes en el lenguaje de las expresiones
regulares es representar "clases de caracteres", o sea, agrupar caracteres en
grupos o clases. Son útiles cuando es necesario buscar uno de un grupo de
caracteres. Dentro de los corchetes es posible utilizar el guión "-" para especificar
rangos de caracteres.
Diseño de una ER.
La barra "|". Sirve para indicar una de varias opciones. Por ejemplo, la expresión
regular "a|e" encontrará cualquier "a" o "e" dentro del texto. La expresión regular
"este|oeste|norte|sur" permitirá encontrar cualquiera de los nombres de los puntos
cardinales. La barra se utiliza comúnmente en conjunto con otros caracteres
especiales.
Diseño de una ER.
El signo de dólar "$". Representa el final de la cadena de caracteres o el final de la
línea, si se utiliza el modo multi-línea.
Por tanto, si se utiliza la expresión regular "^[a-z]" el motor encontrará todos los
párrafos que den inicio con una letra minúscula.
Diseño de una ER.
Los paréntesis "()". De forma similar que los corchetes, los paréntesis sirven para
agrupar caracteres, sin embargo existen varias diferencias fundamentales entre
los grupos establecidos por medio de corchetes y los grupos establecidos por
paréntesis:
● E: alfabeto de entrada.
● Q: conjunto de estados; es conjunto finito no vacío.
● f: función de transición. f(p,a)=q
● q0 : (perteneciente a Q) estado inicial.
● F : (perteneciente a Q) conjunto de estados finales o de aceptación.
Autómatas Finitos.
Los autómatas se pueden clasificar en:
Tablas de transición:
definida por:
f(p,a) = q f(p,b) = r
f(q,a) = q f(q,b) = r
f(r,a) = r f(r,b) = r
función de transición: q q r
f(p,a) = q f(p,b) = r r r r
f(q,a) = q f(q,b) = r
f(r,a) = r f(r,b) = r
Análisis Léxico.
Análisis Léxico.
Definición de analizador léxico.
El analizador léxico es una herramienta de un compilador que nos ayuda a leer los
caracteres de entrada para formar componentes y así poder identificarlos y pasar
la información a analizadores sintácticos.
● Literales.
● Signos de puntuación.
● Librerías.
Lexema.
Representan cadenas de caracteres en el programa fuente que se pueden tratar
juntos como una unidad léxica. Un lexema es una secuencia de caracteres en el
programa fuente con la que concuerda el patrón para un componente léxico.
Patrón.
Regla que describe el conjunto de lexemas que pueden representar a un
determinado componente léxico en los programas fuente.
Son situaciones en las que usa un carácter inválido (@,$,",>,...), que no pertenece
al vocabulario del lenguaje de programación, al escribir mal un identicador,
palabra reservada u operador.
Errores léxicos.
Errores de ortografía en palabras reservadas, caracteres omitidos, adicionales o
cambiados de sitio, por ejemplo:
(Del lat. grammatĭca, y este del gr. γραμματική). f. Ciencia que estudia los
elementos de una lengua y sus combinaciones.
Arte de hablar y escribir correctamente una lengua. Estudio de una lengua regido
por el principio de que todos sus elementos mantienen entre sí relaciones
sistemáticas.
La que trata de formular una serie de reglas capaces de generar o producir todas
las oraciones posibles y aceptables de un idioma o lenguaje.
Definición y clasificación de gramáticas.
TIPO “0” O “No restringida o recursivamente enumerables”. Incluye a todas las
gramáticas formales. Estas gramáticas generan todos los lenguajes de ser
reconocidos por una máquina de Turing. Y con este lenguaje se hacen los
parser(Sintáctico) de un compilador.
Como toda gramática se definen mediante una cuadrupla G = (N, T, P, S), siendo
Un árbol es un grafo dirigido acíclico en el cual cada nodo se conecta con un nodo
distinguido, llamado nodo raíz mediante un único camino. Un nodo n 1 se dice
descendiente de otro nodo n 2 si se puede llegar a n 1 a partir de n 1. El nodo raíz
no es descendiente de ningún nodo, y los nodos que no tienen descendientes se
denominan hojas. El resto de los nodos se denominan nodos interiores.
Árboles de derivación
Árboles de derivación
Un árbol de derivación tiene las siguientes propiedades:
C := D - E * F
Árboles de derivación
Ejemplo: La siguiente definición BNF(notación de Backus-Naur) describe en forma
simplificada la sintaxis de una sentencia de asignación de un lenguaje tipo Pascal:
De esta forma todos los posibles caminos desde el inicio del grafo hasta el
final,representan formas sentenciales válidas. Demostraremos que los diagramas
de sintaxis permiten representar las mismas gramáticas que la notación BNF, por
inducción sobre las operaciones básicas de BNF:
Diagramas de sintaxis.
Diagramas de sintaxis.
Diagramas de sintaxis.
Eliminación de la ambigüedad.
Una GLC es ambigua si existe una cadena w Є L(G) que tiene más de una
derivación por la izquierda o más de una derivación por la derecha o si tiene dos o
más árboles de derivación.
Eliminación de la ambigüedad.
Tipos de Ambigüedad