Analizador semántico
La fase de análisis semántico revisa el programa fuente para
tratar de encontrar errores semánticos y reúne la información sobre los tipos
para la fase posterior de generación de código. En ella se utiliza la
estructura jerárquica determinada por la clase de análisis sintáctico para
identificar los operadores y operandos de expresiones y proposiciones.
ACTIVIDAD:
DOS CONCEPTOS MAS DE ANALIZADOR LÉXICO, EJEMPLO Y REPRESENTACIÓN DE SUS
COMPONEN
La fase de análisis semántico de un
procesador de lenguaje es aquélla que computa la información adicional
necesaria para el procesamiento de un lenguaje, una vez que la estructura
sintáctica de un programa haya sido obtenida. Es por tanto la fase posterior a
la de análisis sintáctico y la última dentro del proceso de síntesis de un
lenguaje de programación.
El
objetivo principal del analizador semántico de un procesador de lenguaje es
asegurarse de que el programa analizado satisfaga las reglas requeridas por la
especificación del lenguaje, para garantizar su correcta ejecución. El tipo y
dimensión de análisis semántico requerido varía enormemente de un lenguaje a
otro.
La fase de análisis semántico revisa
el programa fuente para tratar de encontrar errores semánticos y reúne la
información sobre los tipos para la fase posterior de generación de código. En
ella se utiliza la estructura jerárquica determinada por la fase de análisis
sintáctico para identificar los operadores y operandos de expresiones y
proposiciones.
Un componente importante del análisis semántico es
la Verificación de Tipos. Aquí, el compilador verifica si cada
operador tiene operandos permitidos por la especificación del lenguaje fuente.
Ejemplo:
Producciones
G={Vt, Vn, S, R}
Vt={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,2011,ENERO,FEBRERO,MARZO,ABRIL,MAYO,JUNIO,JULIO,AGOSTO,SEPTIEMBRE,OCTUBRE,NOVIEMBRE,DICIEMBRE
}
Vn={Día, Mes, Año, M1,
M2, M3,D1, D2, D3 }
REGLAS GRAMATICALES
S = Día/Mes/Año |
Año/Mes/Día
Mes = M1|M2|M3
M1 = ENERO|MARZO|MAYO|JULIO|AGOSTO|OCTUBRE|DICIEMBRE
M2 = ABRIL|JUNIO|SEPTIEMBRE|NOVIEMBRE
M3 = FEBRERO
Día = D1|D2|D3
D1 = 2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|
D2 = 2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30
D3 = 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28
Año = 2011
Reglas semánticas
S.Val = Día.Val /Mes.Val /Año.Val | Año.Val /Mes.Val /Día.Val
Mes.Val = M1.Val |M2.Val |M3.Val
M1.Val = ENERO |MARZO |MAYO |JULIO |AGOSTO |OCTUBRE
|DICIEMBRE
M2.Val = ABRIL |JUNIO |SEPTIEMBRE |NOVIEMBRE
M3.Val = FEBRERO
Día.Val = D1.Val |D2.Val |D3.Val
D1.Val = 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|
D2.Val = 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30
D3.Val = 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28
Año.Val = 2011
No hay comentarios:
Publicar un comentario