Professional Documents
Culture Documents
LyAII Evidencia1 TorresEsquivelHenry
LyAII Evidencia1 TorresEsquivelHenry
Dirección General
Subdirección Académica
INSTITUTO TECNOLÓGICO
SUPERIOR PROGRESO
PROGRAMA ACADÉMICO DE INGENIERÍA EN
SISTEMAS COMPUTACIONALES
ASIGNATURA
Lenguajes y Autómatas II
DOCENTE
Dr. Holzen A. Martínez García
TRABAJO
Evidencia 1 – Reporte de investigación. Errores
Semánticos
PRESENTA
Br. Henry Efrain Torres Esquivel (04190031)
Índice.
Contenido
Introducción. ..................................................................................................................... 4
Marco teórico. ................................................................................................................... 5
Errores semánticos. ....................................................................................................... 5
¿Cómo se producen? ................................................................................................. 5
Manejo de errores semánticos. ..................................................................................... 7
Comprobaciones de tipos en expresiones. ........................................................................ 8
¿En qué consiste?.......................................................................................................... 8
Comprobaciones estáticas. .................................................................................... 8
Ejemplo......................................................................................................................... 8
Comprobaciones dinámicas. .................................................................................. 9
Ejemplo......................................................................................................................... 9
Verificación de tipos. ........................................................................................... 10
Ejemplo....................................................................................................................... 10
Inferencia de tipos. .............................................................................................. 11
Ejemplo....................................................................................................................... 11
Conclusiones................................................................................................................... 12
Referencias. .................................................................................................................... 13
Instrumento de evaluación. ............................................................................................. 14
Introducción.
Un error semántico se produce cuando la sintaxis del código es correcta, pero la semántica
o significado no es el que se pretendía. La construcción obedece las reglas del lenguaje,
y por ello el compilador o intérprete no detectan los errores semánticos.
Las comprobaciones de tipos en expresiones verifican que los tipos y valores asociados a
los objetos de un programa se utilizan de acuerdo con la especificación del lenguaje.
Para entender de mejor manera lo antes mencionado, se especifican los puntos en los
siguientes apartados.
Marco teórico.
Errores semánticos.
¿Cómo se producen?
Un error semántico se produce cuando la sintaxis del código es correcta, pero la semántica
o significado no es el que se pretendía. La construcción obedece las reglas del lenguaje,
y por ello el compilador o intérprete no detectan los errores semánticos. Los compiladores
e intérpretes sólo se ocupan de la estructura del código que se escribe, y no de su
significado.
int x;
x = 4.32;
if (x || 5) x = 0;
• Errores de puntuación.
• Errores de palabras clave.
• Otros tipos de errores.
Los errores que puede detectar el analizador sintáctico son aquellos que violan las reglas
de una gramática independiente del contexto.
Sin embargo, la mayoría de los errores semánticos pueden ser detectados mediante la
revisión de la tabla de símbolos, suponiendo un tipo que se base en el contexto donde
ocurra o un tipo universal que permita al identificador ser un operando de cualquier
operador del lenguaje. Al hacerlo, evitamos la producción de un mensaje de error cada
vez que se use la variable no definida. Si el tipo de un operando no concuerda con los
requisitos de tipo del operador, también es conveniente reemplazar el operando con una
variable ficticia de tipo universal.
En cierto modo, este tipo de error es el más difícil de depurar, ya que ni el compilador ni
el sistema proporcionan información sobre qué está fallando. Lo único cierto es que el
programa no se está comportando como debería.
Es conveniente un buen manejo de errores, y que el compilador detecte todos los errores
que tiene el programa y no se pare en el primero que encuentre. Hay, pues, dos criterios
a seguir a la hora de manejar errores:
El análisis semántico es posterior al sintáctico y mucho más difícil de formalizar que éste.
Se trata de determinar el tipo de los resultados intermedios, comprobar que los
argumentos que tiene un operador pertenecen al conjunto de los operadores posibles, y si
son compatibles entre sí, etc. En definitiva, comprobará que el significado de lo que se va
leyendo es válido.
• Comprobaciones estáticas.
Ejemplo.
• Comprobaciones dinámicas.
Ejemplo.
• Verificación de tipos.
Ejemplo.
En algunos lenguajes de tipos estrictos, solo puede agregar dos enteros o dos números de
coma flotante, pero puede marcar un error si lo intenta para agregar un número entero a
un flotante.
int x, a; float y, b;
b = x + y;
A ax;
B * bp;
Con los punteros también hay un vacío * que es un puntero comodín. Permite el uso donde
se permite cualquier tipo de puntero, tales funciones de tipo mem, p. Ej. memcpy.
• Inferencia de tipos.
Ejemplo.
Conclusiones.
Un error semántico puede hacer que el programa termine de forma anormal, con o sin un
mensaje de error. Hablando en términos coloquiales, puede hacer que el equipo se quede
"colgado".
Hay que señalar que los posibles errores ya deben estar considerados al diseñar un
lenguaje de programación. Por ejemplo, considerar si cada proposición del lenguaje de
programación comienza con una palabra clave diferente (excepto la proposición de
asignación, por supuesto). Sin embargo, es indispensable lo siguiente:
Verifica:
Referencias.
Instrumento de evaluación.