Saltar al contenido

¿Cuál es la diferencia entre sintaxis y semántica en los lenguajes de programación?

Solución:

La sintaxis trata sobre el estructura o la gramática del idioma. Responde a la pregunta: ¿cómo construyo una oración válida? Todos los idiomas, incluso el inglés y otros idiomas humanos (también conocidos como “naturales”) tienen gramáticas, es decir, reglas que definen si la oración se construye correctamente o no.

A continuación, se muestran algunas reglas de sintaxis del lenguaje C:

  • declaraciones separadas con punto y coma
  • encierre la expresión condicional de una declaración IF entre paréntesis
  • agrupar varias declaraciones en una sola declaración encerrándolas entre llaves
  • los tipos de datos y las variables deben declararse antes de la primera declaración ejecutable (esta característica se eliminó en C99. C99 y la última permite declaraciones de tipos mixtos).

La semántica se trata de sentido de la oración. Responde a las preguntas: ¿es válida esta oración? Si es así, ¿qué significa la oración? Por ejemplo:

x++;                  // increment
foo(xyz, --b, &qrs);  // call foo

son declaraciones C sintácticamente válidas. ¿Pero, qué quieren decir? ¿Es incluso válido intentar transformar estas declaraciones en una secuencia ejecutable de instrucciones? Estas preguntas están en el corazón de la semántica.

Considere el operador ++ en la primera declaración. En primer lugar, ¿es incluso válido intentar esto?

  • Si x es un tipo de datos flotante, esta declaración no tiene significado (de acuerdo con las reglas del lenguaje C) y, por lo tanto, es un error. aunque la declaración sea sintácticamente correcta.
  • Si x es un puntero a algún tipo de datos, el significado de la declaración es “agregar tamaño de (algún tipo de datos) al valor en la dirección x y almacenar el resultado en la ubicación en la dirección x “.
  • Si x es un escalar, el significado de la declaración es “agregue uno al valor en la dirección x y almacene el resultado en la ubicación en la dirección x”.

Por último, tenga en cuenta que algunas semánticas no se pueden determinar en tiempo de compilación y, por lo tanto, deben evaluarse en tiempo de ejecución. En el ejemplo del operador ++, si x ya está en el valor máximo para su tipo de datos, ¿qué sucede cuando intenta agregarle 1? Otro ejemplo: ¿qué sucede si su programa intenta eliminar la referencia a un puntero cuyo valor es NULL?

En resumen, la sintaxis es el concepto que se ocupa solo de si la oración es válida o no para la gramática del idioma. La semántica se trata de si la oración tiene o no un significado válido.

La sintaxis se refiere a la estructura de un lenguaje, rastreando su etimología hasta cómo se juntan las cosas.

Por ejemplo, puede requerir que el código se junte declarando un tipo, luego un nombre y luego un punto y coma, para que sea sintácticamente correcto.

Type token;

Por otro lado, la semántica se trata de significado. Un compilador o intérprete podría quejarse de errores de sintaxis. Tus compañeros de trabajo se quejarán de la semántica.

Wikipedia tiene la respuesta. Leer wikipages de sintaxis (lenguajes de programación) y semántica (informática).

O piense en el trabajo de cualquier compilador o intérprete. El primer paso es el análisis léxico donde los tokens se generan dividiendo la cadena en lexemas y luego analizando, lo que crea un árbol de sintaxis abstracto (que es una representación de la sintaxis). Los siguientes pasos implican transformar o evaluar estos AST (semántica).

Además, observe que si definió una variante de C donde cada palabra clave se transformó en su equivalente francés (entonces if convirtiéndose si, do convirtiéndose faire, else convirtiéndose sinon etc etc …) definitivamente cambiaría la sintaxis de su idioma, pero no cambiará mucho la semántica: ¡programar en ese francés-C no será más fácil!

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *