Professional Documents
Culture Documents
COMPILADORES Y TEORA
DEL LENGUAJE
ANALIZADOR LEXICO Y
SEMANTICO DE EXPRESIONES
CONTENIDO
ANALIZADOR LEXICO Y SEMANTICO .................................................................... 2
I.
INTRODUCCIN ................................................................................................. 2
II.
QU ES UN COMPILADOR? ........................................................................ 4
2.
3.
4.
III.
EXPRESION. ............................................................................................................. 11
CDIGO ................................................................................................................. 11
DEMOSTRACIN ................................................................................................. 16
CONCLUSIONES ...................................................................................................... 18
RECOMENDACIONES ............................................................................................. 18
BIBLIOGRAFA ........................................................................................................ 19
INTRODUCCIN
CAPTULO I: COMPILADORES
1. Qu es un compilador?
desarrollados para UNIX. Los inconvenientes que tienen son que los analizadores
que generan no son muy eficientes.
3. Funciones de un compilador
A grandes rasgos un compilador es un programa que lee un programa escrito es un
lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el
Programa objeto
Las tres primeras fases, que forman la mayor parte de la porcin de anlisis de un
compilador se analizan en la seccin IX. Otras dos actividades, la administracin de la
tabla se smbolos y el manejo de errores, se muestran en interaccin con las seis fases de
anlisis lxico, anlisis sintctico, anlisis semntico, generacin de cdigo intermedio,
Cada frase puede encontrar errores. Sin embargo, despus de detectar un error. Cada
fase debe tratar de alguna forma ese error, para poder continuar la compilacin,
permitiendo la deteccin de ms errores en el programa fuente. Un compilador que se
detiene cuando encuentra el primer error, no resulta tan til como debiera.
Las fases de anlisis sintctico y semntico por lo general manejan una gran proporcin
de los errores detectables por el compilador. La fase lxica puede detectar errores donde
los caracteres restantes de la entrada no forman ningn componente lxico del lenguaje.
Los errores donde la cadena de componentes lxicos violan las reglas de estructura
(sintaxis) del lenguaje son determinados por la fase del anlisis sintctico.
Durante el anlisis semntico el compilador intenta detectar construcciones que tengan
la estructura sintctica correcta, pero que no tengan significado para la operacin
implicada, por ejemplo, si se intenta sumar dos identificadores. Uno de los cuales es el
nombre de una matriz, y el otro, el nombre de un procedimiento.
10
III.
CAPTULO
2:
APLICACIN
ANALISIS
LEXICO
11
")
TABLA DE SIMBOLOS :")
For J = 0 To (TestLen - 1)
myChar = myString.Chars(J)
If myChar = "+" Or myChar = "-" Or myChar = "/" Or myChar = "*" Or
myChar = "=" Or myChar = "^" Then
' Console.Write("<" & myChar & ">")
ElseIf myChar = "a" Or myChar = "b"
Or myChar = "e" Or myChar = "f" Or myChar = "g"
Or myChar = "j" Or myChar = "k" Or myChar = "l"
Console.WriteLine("
<id," &
z = z + 1
")
TOKEN NO RECONOCIDO")
")
EXPRESION ANALIZADA LEXCAMENTE :")
For J = 0 To (TestLen - 1)
myChar = myString.Chars(J)
12
TOKEN NO RECONOCIDO")
Next
Console.WriteLine(" ")
Dim g As Integer
Dim h As Integer
Dim e As Integer
i = 0
h = 1
e = 0
g = 0
Console.WriteLine(" ")
Console.WriteLine("ANALIZADOR SINTACTICO: ")
'Console.WriteLine(":::::TOKENS:::::")
For i = 0 To TestLen - 1
If i = 0 Then
If myString.Chars(i) = "(" Then
g = g + 1
Else
If exp(i) = "exp" Or exp(i) = "num" Then
Else
If myString.Chars(i) = "-" Then
Else
If myString.Chars(i) = "+" Or myString.Chars(i) = "*"
Or myString.Chars(i) = "/" Or myString.Chars(i) = "^" Or myString.Chars(i) = "="
Then
Console.WriteLine("
ERROR EN EL CARACTER " &
i & " :")
Console.WriteLine("
no se puede escribir un
operador " & myString.Chars(i) & " al comienzo de una expresion")
h = 0
End If
13
Case "num"
If myString.Chars(i - 1) = "(" Then
Else
If exp(i - 1) = "op" Then
Else
Console.WriteLine("
Case "op"
If exp(i - 1) = "par_d" Or myString.Chars(i - 1) = "="
Then
If myString.Chars(i) = "-" Then
Else
Console.WriteLine("
ERROR EN EL CARACTER
14
no se puede poner un
End If
End If
Case "par_iz"
e = e + 1
If exp(i - 1) = "exp" Or exp(i - 1) = "num" Then
Else
If exp(i - 1) = "par_iz" Then
Else
If exp(i - 1) = "op" Then
Console.WriteLine("
ERROR EN EL CARACTER
no se puede poner un
ERROR EN EL CARACTER
no se puede poner dos
End If
End If
End Select
End If
Next
If h = 1 Then
Console.WriteLine("
End If
Console.WriteLine(" ")
NO MUESTRA ERRORES")
15
DEMOSTRACIN
EJEMPLO 1: a=b+c
Este ejemplo demuestra cmo se analiza una expresin bien escrita la cual muestra que
no tiene errores. Y el analizador sintctico nos dice que : LA EXPRESION ESTA BIEN
ESCRITA
16
EJEMPLO 2: *(a+b)=c
En este ejemplo se puede observar como el analizador lxico analiza los tokens y como
el analizador sintctico nos muestra que la expresin tiene un error uno de sus
caracteres, y te dice que el resultado en el analizador sintctico presenta un error.
17
CONCLUSIONES
El analizador lxico nos sirve para declarar los tokens que puede recibir nuestra
expresin, y nos muestra cada uno de los tokens de la expresin
El analizador sintctico nos muestra los errores que puede tener la expresin , nos
da las reglas a la cual la expresin se debe de acogerse para que esta sea correcta.
RECOMENDACIONES
18
BIBLIOGRAFA
http://www.dlsi.ua.es/docencia/asignaturas/comp1/comp1.html
http://www.cps.unizar.es/~ezpeleta/COMPI
http://www.ii.uam.es/~alfonsec
19