Vous êtes sur la page 1sur 19

1.

DEFINICIONES
Autmata:
Un autmata es una mquina secuencial sncrona (controlada por una seal de
reloj) que se puede encontrar en uno de entre un nmero posible de estados,
recibe una serie de entradas binarias y en funcin de estas entradas y del estado
particular en el que se encuentra, genera una o varias salidas binarias
determinadas. Se le llama finito por que el nmero de estados en el que puede
encontrarse el autmata tiene que quedar perfectamente determinado, de ah que
a estos sistemas se les llame tambin deterministas.
Autmata:
La palabra autmata evoca algo que pretende imitar las funciones propias de los
seres vivos, especialmente relacionadas con el movimiento, por ejemplo, el tpico
robot antropomorfo. El autmata recibe los smbolos de entrada, uno detrs del
otro, es decir secuencialmente. El smbolo de salida que en un instante
determinado produce un autmata, no solo depende del ultimo smbolo recibido a
la entrada, sino de toda la secuencia o cadena, que ha recibido hasta ese instante.

2. FASES DE UN COMPILADOR
Los compiladores son programas de computadora que traducen de un lenguaje a
otro. Un compilador toma como su entrada un programa escrito en lenguaje fuente
y produce un programa equivalente escrito en lenguaje objeto.
Un compilador se compone internamente de varias etapas, o fases, que realizan
operaciones lgicas. Es til pensar en estas fases como piezas separadas dentro
del compilador, y pueden en realidad escribirse como operaciones codificadas
separadamente, aunque en la prctica a menudo se integran.

FASE

QU ES?
La cadena de entrada se recibe como una sucesin de
caracteres. El anlisis lxico agrupa los caracteres en
secuencias con significado colectivo y mnimo en el
lenguaje, llamadas componentes lxicos (palabras o
token), con ciertos atributos lxicos.

Anlisis Lxico
Las palabras clave, identificadores, operadores, constantes
numricas, signos de puntuacin como separadores de
sentencias, llaves, parntesis, etc., son diversas
clasificaciones de componentes lxicos.
Los componentes lxicos se agrupan para formar frases. El
valor lxico de los componentes es en este momento
irrelevante.
Anlisis
Sintctico

Determina si la secuencia de componentes lxicos sigue la


sintaxis del lenguaje y obtiene la estructura jerrquica del
programa en forma de rbol, donde los nodos son las
construcciones de alto nivel del lenguaje.
Realiza las comprobaciones necesarias sobre el rbol
sintctico para determinar el correcto significado del
programa.

Anlisis
Semntico

Las tareas bsicas a realizar son: La verificacin e inferencia


de tipos en asignaciones y expresiones, la declaracin del
tipo de variables y funciones antes de su uso, el correcto
uso de operadores, el mbito de las variables y la correcta
llamada a funciones.
Se genera en esta fase un cdigo intermedio para una
mquina abstracta, y es posible que explcitamente. Esta
representacin debe ser fcil de producir y fcil de traducir al
programa objeto.

Generacin de
Cdigo
Intermedio

Optimizacin de
Cdigo

Generando un cdigo mejorado, ya no estructurado, ms


fcil de traducir directamente a cdigo ensamblador o
mquina, compuesto de un cdigo de tres direcciones (cada
instruccin tiene un operador, y la direccin de dos
operndoos y un lugar donde guardar el resultado), tambin
conocida como cdigo intermedio.
Se trata en esta fase de mejorar el cdigo, en el sentido de
reducir la cantidad de recursos (tiempo y memoria)
necesarios.
Algunas optimaciones son triviales, como por ejemplo hacer
algunas transformaciones directamente en la compilacin,
en lugar de dejarlo para la ejecucin.
En esta fase final se genera por fin el cdigo objeto,
normalmente cdigo mquina re localizable o ensamblador.

Generacin de
Cdigo

Se seleccionan entonces posiciones de memoria relativas o


registros para las variables y cada sentencia del cdigo
intermedio se traduce a una secuencia de instrucciones que

3.

CUL ES LA FUNCIN DE UN ANLISIS LXICO?

El analizador lxico es la primera fase de un compilador. Su principal funcin


consiste en leer los caracteres de entrada y elaborar como salida una secuencia
de componentes lxicos que utiliza el analizador sintctico para hacer el anlisis.
El analizador sintctico emite la orden al analizador lxico para que agrupe los
caracteres y forme unidades con significado propio llamados componentes lxicos
(tokens).
El analizador lxico opera bajo peticin del analizador sintctico devolviendo un
componente lxico conforme el analizador sintctico lo va necesitando para
avanzar en la gramtica. Los componentes lxicos son los smbolos terminales de
la gramtica. Suele implementarse como una subrutina del analizador sintctico.
Cuando recibe la orden obtn el siguiente componente lxico, el analizador
lxico lee los caracteres de entrada hasta identificar el siguiente componente
lxico.

Otras funciones que realiza:


Eliminar los comentarios del programa.
Eliminar espacios en blanco, tabuladores, retorno de carro, etc, y en
general, todo aquello que carezca de significado segn la sintaxis del
lenguaje.
Reconocer los identificadores de usuario, nmeros, palabras reservadas del
lenguaje, y tratarlos correctamente con respecto a la tabla de smbolos
(solo en los casos que debe de tratar con la tabla de smbolos).
Llevar la cuenta del nmero de lnea por la que va leyendo, por si se
produce algn error, dar informacin sobre donde se ha producido.
Avisar de errores lxicos. Por ejemplo, si @ no pertenece al lenguaje,
avisar de un error.
Puede hacer funciones de preprocesador

4. CULES SON LAS FASES DE UN ANLISIS


LXICO?
Componente lxico (token).
Son las unidades lgicas que genera el analizador lxico. Es el conjunto de
cadenas de entrada que produce como salida el mismo componente lxico.
Cada token es una secuencia de caracteres que representa una unidad de
informacin en el programa fuente. Los componentes lxicos ms comunes
son los siguientes: palabras clave o reservadas:
Operadores aritmticos
Operadores
Relacionales
Operadores lgicos
Operador de asignacin
Identificadores
Constantes
Cadenas
Literales
Signos de puntuacin

Libreras

Lexema:
Representan cadenas de caracteres en el programa fuente que se pueden
tratar juntos como una unidad lxica. Un lexema es una secuencia de
caracteres en el programa fuente con la que concuerda el patrn para un
componente lxico.
Patrn:
Regla que describe el conjunto de lexemas que pueden representar a un
determinado componente lxico en los programas fuente. En otras
palabras, es la descripcin del componente lxico mediante una regla.

5. EL ANALIZADOR LXICO ES UN AUTMATA?


POR QU?
Si, el analizador lxico es un autmata porque en este lenguaje, los patrones se
especifican por medio de expresiones regulares, y un compilador de LEX puede
generar un reconocedor de las expresiones regulares mediante un autmata finito
eficiente.

6. ELIGE UN LENGUAJE DE PROGRAMACIN QUE


DOMINES PARA EXPLICAR CMO FUNCIONAN UN
ANLISIS LXICO.
Primero hay que definir que un analizador lxico porque es el encargado de leer
carcter por carcter de un archivo (que contenga cdigo fuente escrito en algn

lenguaje de programacin especifico), a continuacin, se construyen elementos


lxicos llamados Patrones que sern utilizados posteriormente por un analizador
sintctico.
Un patrn es una pareja ordenada compuesta por un token y un lexema. Un token
es el elemento lxico del lenguaje, es decir el smbolo terminal de una gramtica
libre de contexto. Por ltimo, un lexema es la secuencia de caracteres que
coinciden con un token.
Como ejemplo el siguiente cdigo creado en java para determinar los tockens,
dgitos (componente lxico) e identificadores (lexema) que contiene nuestra
expresin ingresada.
CDIGO EN JAVA
import java.io.*;
class analizador
{
public static void main(String carls[])
{
Character in[];
lexer prueba=new lexer();
prueba.instrucciones();
in=prueba.leer();
prueba.esIdentificador(in);
prueba.esToken(in);
prueba.esDigito(in);
}
}
class tipos
{
private int cont;
private String tipo;
private String cualesSon;
public tipos(int cont,String tipo,String cualesSon)
{
setCont(cont);
setTipo(tipo);
setCualesSon(cualesSon);
}
public void setCont(int cont)
{

this.cont=cont;
}
public void setTipo(String tipo)
{
this.tipo=tipo;
}
public void setCualesSon(String cualesSon)
{
this.cualesSon=cualesSon;
}
public int getCont()
{
return cont;
}
public String getTipo()
{
return tipo;
}
public String getCualesSon()
{
return cualesSon;
}
public void verTipos()
{
System.out.println("\nLos " + getTipo() + " ingresados son " +
getCont() + " : "+getCualesSon());
}
}
class lexer
{
private Character tokens[]=
{
'=','(',')','+','-','*','/',';','<','>'
};
private
Character au='x';
public void instrucciones()
{
System.out.println("---------------------------------------------------------------");
System.out.print("
Programa Ansis Lxico
\n");

System.out.print("

Materia: Lgica Computacional

System.out.print("

Gerardo Miguel Arriola Miranda

\n");
\n\n");
System.out.print("Instrucciones:\n");
System.out.print("
1.Ingresa una expresin para realizar un
anlisis lxico\n");
System.out.print("
2.Al finalizar tu expresin, pulsa la barrra
espaciadora\n");
System.out.print("
e ingresa un enter al final.\n");
System.out.println("--------------------------------------------------------------");
System.out.println();
}
public Character[] leer()
{
String res="";
int longitud=0;
Character ch[];
BufferedReader
in=new
BufferedReader(new
InputStreamReader(System.in));
try{
System.out.print("A continuacin ingresa tu expresin: ");
do{
res+=in.readLine();
}while(!res.endsWith(" "));
}catch(IOException ioe)
{
System.out.println("Ocurrio la Sig. Excepcion " +ioe);
}
longitud=res.length();
ch=new Character[longitud];
for(int i=0;i<longitud;i++)
{
ch[i]=res.charAt(i);
}
return ch;
}
public void esDigito(Character ch[])
{
int cont=0;
String cualesSon="";
for(int i=0;i<ch.length;i++)
{
if(au.isDigit(ch[i]))
{

cont++;
cualesSon+=ch[i].toString() + " ";
}
}
tipos out=new tipos(cont,"Digitos",cualesSon);
out.verTipos();
}
public void esToken(Character ch[])
{
int ope=0;
String cualesSon="";
for(int i=0;i<ch.length;i++)
{
for(int j=0;j<tokens.length;j++)
{
if(ch[i].equals(tokens[j]))
{
ope++;
cualesSon+=ch[i].toString() + " ";
}
}
}
tipos out=new tipos(ope,"Tokens",cualesSon);
out.verTipos();
}
public void esIdentificador(Character ch[])
{
int Id=0;
String cualesSon="";
for(int i=0;i<ch.length;i++)
{
if(au.isJavaIdentifierStart(ch[i]))
{
Id++;
cualesSon+=ch[i].toString() + " ";
}
}
tipos out=new tipos(Id,"Identificadores",cualesSon);
out.verTipos();
}
}

EJECUCIN DEL PROGRAMA EN JAVA

7. CUADRO SINPTICO TIPOS DE AUTMATAS

8.
Un autmata finito determinista es una quntupla.
M= (Q,,q0,,F)
Para cada9.
estado en que se encuentre el autmata, y con cualquier smbolo del alfabeto ledo, existe
siempre a lodonde:
ms una transicin posible desde es
Q
es
un
conjunto
finito
cuyos elementos llamaremos
10.
Autmata finito determinista
es un alfabeto que llamamos alfabeto de entrada.
11.
q0Q es un estado sealado que llamamos estado in
(AFD)
F es un subconjunto de Q no vaco, cuyos elementos
12.
es una aplicacin de QQ, que llamamos funcin
13.
14.
15.
16.
Formalmente un autmata finito no
17.
determinista es una quntupla
18.
M= (Q,
, q0 sino
,, F)un
donde:
Permite que, desde un estado, con un smbolo del alfabeto se alcance no un nico
estado,
subconjunto de estados (incluido
19.
Q es un conjunto finito a cuyos elementos llamamos
Autmata finito no determinista
Tipos de Autmatas
es un alfabeto que llamamos alfabeto de entrada
(AFND)
20.
q0 es un estado sealado que llamamos estado inicia
21.
F es un subconjunto de Q, no vaco, cuyos elementos
es una aplicacin de QP(Q), que llamamos func
22.
23.
24.
25.
Las caractersticas de los autmatas es que sin lectura de un smbolo del alfabeto no hay transicin. Este tipo de mquina elimina esta restriccin permitiend
26.
Un autmata finito no determinista con -transiciones es una quntupla M=(Q,,q0,,F) donde todos
de determinista
transicin :Q({})P(Q).
Autmatafuncin
finito no
con
27.
Es-transiciones
decir, ahora no slo hay transiciones del tipo (q,a) donde qQ y a, sino que tambin se defin
28.
(AFND-)
29.
30.

31.
32.
33.
Ejemplo
34.
Sea M1 = (Q, , , q0,F) donde Q={p,q,r}, ={a,b}, Sea p el estado inicial, F={r} y definida como sigue:
(p,a)=q
(p,b)=r
35. Autmata finito determinista (AFD)
(q,a)=p
(q,b)=q
36.
(r,a)=r
(r,b)=r
37.
38.
39.
40.
41.
42.
Ejemplo
43.
Sea M5= (Q,,q0,,F) siendo Q={p,q,r,s}, ={0,1,2}, sea p el estado inicial, F={q,s} y
(AFND)
44.Autmata finito no determinista
la funcin de transicin dada por:
Tipos de Autmatas
45.
(p,0)={q,r}
(p,1)=
(q,0)={q}
(q,1)={q,s}
46.
(r,0)=
(r,1)={s}
47.
(s,0)={p} (s,1)=
48.
49.
50.
51.
52.
Ejemplo
53. Autmata finito no determinista con Si la mquina M5 aadimos las transiciones
-transiciones
(p,)={r}
(q,)={p}
(r,)=
(s,)={q}
54.
(AFND-)

Obtenemos una nueva mquina M6.

55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.Expresin Regular
74. Lineal
75.
76.
77.
78.

Es regular lineal por la derecha si sus reglas son de


una de las tres formas siguientes S:= o A:=a o A:=aB
siendo A, B y S smbolos no terminales, S el axioma y
a un smbolo terminal.
{L * :AF, L = L(AF)} = {L * :G3, L = L(G3 )}

Sea M =(Q,,q0,,F) un autmata conocido (debe ser


un autmata sin -transiciones). Una gramtica G =
(T,N,S,P) tal que L(M) = L(G).
La gramtica de la forma siguiente:
si (p,a) = q y qF aadimos la regla p:=aq
si (p,a) = q y qF aadimos las reglas p:=aq y p:=a
si q0F aadimos la regla q0:=.

Tipos de
Autmatas

79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
Expresin Regular
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.

Las
expresiones
regulares
son
una
manera resumida de
representar
ciertos
lenguajes
sobre
un
alfabeto. Sea un
alfabeto,
cada
expresin
regular

Son expresiones regulares:


es una expresin regular que representa al lenguaje .
es una expresin regular y representa al lenguaje {}.
a, a es una expresin regular y representa a {a}.
Si y son expresiones regulares + es una expresin regular y
representa a L()L().
Si y son expresiones regulares es una expresin regular y
representa a L()L().
Si es una expresin regular, * es una expresin regular y
representa a L()*.
Si es una expresin regular, + es una expresin regular y
representa a L()+.
Si es una expresin regular, () es una expresin regular y
representa a L().
Cualquier combinacin finita de expresiones regulares unidas
mediante los operadores definidos (concatenacin, unin, clausura
positiva y cierre de Kleene) es una expresin regular.
Ejemplos:

Capaces de reconocer lenguajes mucho ms potentes


debido a la memoria disponible en la pila. Para llevar
a cabo el reconocimiento de lenguajes independientes
del contexto se aade a los autmatas un mecanismo
que aumenta la memoria del mismo, y no es otro que
una pila.

Un
autmata
de
pila
es
una
sptupla
M=(Q,,,q0,,F) donde:
Q= conjunto finito de estados
= alfabeto de entrada
= alfabeto de pila
q0Q estado inicial
FQ, F, conjunto de estados finales
es la funcin de transicin.
La forma genrica de la imagen de una terna ser
( q,a,Z) = {(r1 ,1 ),,(rk ,k ); ri Q, i *}

Tipos de
Autmatas

103.
Autmata de Pila
104.
(AP)
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
Autmata de Pila
116.
Determinista
117. (APD)
118.
119.
120.
121.
122.
123.
Autmata de Pila
124.
No Determinista
125.(APND)
126.

En autmata determinista no debe existir transicin


posible con lectura de smbolo si puede hacerse sin
ella, ni al contrario.

Un autmata finito con pila no determinista (AFPN)


consta de los mismos parmetros de un AFPD.
P = (Q, , , , q0, T,Z):
Donde la funcin de transicin es de la forma:
: Q ( U { }) Pf(Q *)

Un autmata de pila determinista (AFPD) es una 7-upla,


P = (Q, , ,, q0, T,Z) donde:
Q es un conjunto finito de estados.
es el alfabeto de entrada.
es el alfabeto de la pila.
q0 Q es el estado inicial.
Z smbolo inicial de la pila.
T es subconjunto de Q (conjunto de estados finales).
es la funcin de transicin tal que:
: Q ( U { }) (Q *)

127.
128.
129.
130.
131.
132.
133.
134.
135.
Autmata de Pila
(AP)

Tipos de
Autmatas

Autmata de Pila
Determinista
(APD)

Autmata de Pila
No Determinista
(APND)

Ejemplo
Sea M8 = (Q,,,q0,,F,) con Q = {p,q,r,s}, = {0,1},
= {#,a}, p estado inicial,
F={s}, y funcin de transicin definida de la manera
siguiente:
(p,,)={(q,#)}
(q,0,)={(q,a)}
(q,1,a)={(r,)}
(r,1,a)={(r,)}
(r,,#)={(s,)}

Ejemplo
En un momento, la unidad de control del autmata
escanea un smbolo a sobre la cinta de entrada y el
smbolo s en el tope de la pila.
Este paso computacional representa: La unidad de
control pasa a q0 y se mueve a la derecha en la cinta
de entrada, borra el smbolo s del tope, escribe en la
Ejemplo
cadena y pasa a escanear el nuevo tope.
Disear un AFPN que acepte el lenguaje {a^ib^i:
i>=0}4
Sobre:
= {a, b}
(q0, a, Z) = (q0, AZ)
(q0, , Z) = (q2, Z) (acepta )
(q0, a, A) = (q0, AA)
(q0, b, A) = (q1, )
(q1, b, A) = (q1, )

136.
137.

REFERENCIAS

138.
139.
140.
Autmatas
secuenciales
finitos.
Extrado
el
30/03/2026.
Desde
http://www.aquihayapuntes.com/automatassecuenciales-finitos.html

141.
142.
Juan Manuel Cueva Lovelle. Lenguajes gramtica y autmatas.
Segunda Edicin, Noviembre 2001. Extrado el 30/03/2016. Desde
http://di002.edv.uniovi.es/~cueva/publicaciones/AUTOMATA.pdf

143.
144.
M. Luisa Gonzlez Daz. Introduccin a la construccin de
compiladores.
Extrado
el
30/03/2016.
Desde
http://www.infor.uva.es/~mluisa/talf/docs/aula/A7.pdf

145.
146.
Anlisis
Lxico.
Extrado
http://www.galeon.com/shock/tareas.html

el

30/03/2016.

Desde

el

30/03/2016.

Desde

150.
Autmatas
Finitos.
Extrado
el
31/03/2016.
http://www2.dis.ulpgc.es/~mluengo/automatas/teoria/tema2.pdf

Desde

147.
148.
Anlisis
Lxico.
Extrado
http://10380054.galeon.com/u5.htm

149.
151.
152.
Autmatas
de
Pila.
Extrado
el
31/03/2016.
http://www2.dis.ulpgc.es/~mluengo/automatas/teoria/tema4.pdf

Desde

153.
154.
Anlisis
Lxico.
Extrado
el
31/03/2016.
Desde
http://paginasprodigy.com/edserna/cursos/compilador/notas/Notas2.pdf

155.
156.
Teora de Lenguajes. Extrado el 31/03/2016. Desde
https://es.scribd.com/doc/4750526/20/FUNCIONES-DEL-ANALIZADORLEXICO

157.
158.
159.
160.
161.
162.

163.
164.
165.
166.
167.
168.
169.
170.
171.
172.

Vous aimerez peut-être aussi