Sunteți pe pagina 1din 11

UNIVERSIDAD MARIANO GALVEZ

MAZATENANGO, SUCHITEPEQUEZ
INGENERIA EN SISTEMAS
ING. CARLOS HUMBERTO MOTTA MORALES
COMPILADORES
SEPTIMO CICLO

TRABJO:
ANALIZADOR LEXICO

NOMBRE:
DANIEL GERARDO QUAN AGUILAR
CARNE:3090-15-19153
FECHA DE ENTREGA:
18 DE ABRIL DEL 2020
ANASISTE LEXICO
1. Construir un DT para el reconocimiento de números enteros con signo negativo o sin
signo y los operadores suma (“+”) y doble incremento (“+++”).
Componentes léxicos:
Notación: d = dígito; t = otro.
 Entero → -?d+
 Suma → +
 Dobleincremento → +++

NOTA: El estado de aceptación del token “doble incremento” no lleva asterisco por ser
cadena específica y no ser prefijo de ninguna otra, y por tanto no necesita leer el
siguiente carácter y retroceder. Los estados de aceptación del token “suma” si llevan el
asterisco a pesar de ser específicas, por ser prefijos del “doble incremento”. Además,
uno de ellos lleva dos asteriscos, indicando que si se llega a ese estado se debe
retornar el token “suma” y devolver dos caracteres al buffer de entrada.

- ? d + t + t + + +

Begin Forward
2. Construir un DT para el reconocimiento de identificadores, números enteros sin signo
y las palabras reservadas “do” y “done”.

Notación: d = dígito; l = letra; t = otro; f = otro alfanumérico (dígito o letra); a n = ir al


estado Componentes léxicos:
 Identificador → l(l|d)*
 Entero → d+
 Do → do
 Done → done

NOTA: En este DT, todos los estados de aceptación deben estar marcados con
asterisco, por lo que habrá que devolver el último carácter leído al buffer de entrada.
Esto es debido,para este ejercicio, a que todos los tokens son unos prefijos de otros
(do, done, identificador) o son cadenas no específicas (entero e identificador).

I ( I | d ) * t d + t d o t d o n e

Begin Forward
3. Diseñar un DT para el reconocimiento de tokens involucrados en expresiones
aritméticas (operadores: “?-”, “+”, “*?”, “/”, “(“ y “)”) en las que intervienen números
enteros y reales sin signo y variables
expresadUasnimveedrsiaidntaedidNenatcifiiocandaol rdees. Trujillo

Notación: d = dígito; l = letra; a = alfanumérico (dígito | letra); t = otro.


Componentes léxicos:
 Entero → d+
 Real → d+.d+
 Identificador → l(l|d)*
 Opsuma → +
 Opresta → -
 Opmul → *
 Opdiv → /
 Parder → )
 Parizq → (

NOTA: El patrón de los enteros es un prefijo del patrón de los reales, por lo que se
construye para ambos una misma rama del autómata en la que aparecerá un estado
de aceptación que surge de un estado intermedio para los enteros y otro final para los
reales. En este caso, todos los estados de aceptación llevan asociado el
reconocimiento de un token distinto. Aquellos que estarán marcados con “*” para que
el reconocimiento de esos tokens se produzca cuando se ha leído uno o más caracteres
más allá del final del lexema correspondiente a dicho patrón, por lo que llevan como
acción asociada el retroceso de la marca de análisis sobre el buffer de entrada.

d + t d + . d + t l ( I | d ) * t ( + t - t * t / ) t

Begin Forward
4. Sea un lenguaje de características similares al HTML para el que se ha definido los
siguientes componentes léxicos:
5. Identificar los lexemas y los tokens que el analizador de léxico reconocería en el
siguiente programa de lenguaje Pascal.

function max (i,j: integer):integer;


{ Devuelve el valor máximo de dos enteros }
begin
if i>j then max:=i
else max := j
end;
6. Diseñar un diagrama de transiciones determinista para reconocer los siguientes
componentes léxicos:
 letras cualquier secuencia de una o más letras (mayúsculas y minúsculas)
 entero cualquier secuencia de uno o más dígitos
 explos1 la palabra reservada “bang”
 explos2 la palabra reservada “boom”
 true la secuencia “:-)”
 false la secuencia “:-(”
 asignar la secuencia “ := ”
7. Dada la siguiente sentencia:

(defun suma-conjuntos (c1 c2 &aux (c3 c2) (cant (length c1))) (do* ((i 0 (+ i 1)) (e (nth
0 c1) (nth i c1)))
((= i cant) c3) (unless (member e c3) (push e c3)
)
)
)
Se pide:
a) Determinar los tokens que debe reconocer el analizador léxico.
b) Definir los patrones léxicos (E.R.) de cada token.
c) Construir el autómata que reconoce el conjunto de tokens
8. HTML es el lenguaje que se utiliza para especificar contenidos Web. Su funcionamiento
se basa en utilizar una serie de etiquetas que indican de qué forma se debe representar
dicho texto en pantalla. Especificar un analizador léxico que reconozca los elementos
léxicos que aparecen en el siguiente ejemplo:

a) Especificar el conjunto de tokens que debe reconocer el analizador, indicando


(token, lexema).

b) Especificar el patrón léxico (expresión regular) que define cada posible token del
lenguaje.

c) Construir el autómata que reconoce el lenguaje anterior.

S-ar putea să vă placă și