syntax - semantica - ¿Cuál es la diferencia entre la sintaxis y la semántica de los lenguajes de programación?
sintaxis y semantica ejemplos (6)
La semántica es lo que significa tu código: lo que podrías describir en un pseudo-código. La sintaxis es la estructura real, todo, desde los nombres de las variables hasta los puntos y comas.
¿Cuál es la diferencia entre la sintaxis y la semántica en los lenguajes de programación (como C, C ++)?
La sintaxis es sobre la estructura o la gramática del lenguaje. 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 está o no construida correctamente.
Aquí hay algunas reglas de sintaxis del lenguaje C:
- declaraciones separadas con un punto y coma
- encierra la expresión condicional de una instrucción IF entre paréntesis
- agrupe múltiples enunciados en una sola declaración adjuntando llaves
- los tipos de datos y las variables deben declararse antes de la primera instrucción ejecutable (esta característica se ha descartado en C99. C99 y las últimas permiten declaraciones de tipos mixtos).
La semántica es sobre el significado 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 válido incluso intentar esto?
- Si x es un tipo de datos flotantes, esta afirmación no tiene ningún 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 sizeof ( 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 "agregar uno al valor en la dirección x y almacenar el resultado en la ubicación en la dirección x".
Finalmente, tenga en cuenta que algunas semánticas no pueden determinarse 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é ocurre cuando intenta agregarle 1? Otro ejemplo: ¿qué sucede si su programa intenta desreferenciar un puntero cuyo valor es NULL?
En resumen, la sintaxis es el concepto que se refiere solo a si la oración es válida o no para la gramática del idioma. La semántica trata de si la oración tiene o no un significado válido.
Wikipedia tiene la respuesta. Leer sintaxis (lenguajes de programación) y semántica (ciencias de la computación) wikipages.
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 construye un árbol de sintaxis abstracto (que es una representación de la sintaxis). Los próximos 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 (por if
tanto, if
convertirse en si
, convertirse en faire
, convertirse en sinon
etc.), definitivamente cambiaría la sintaxis de su idioma, pero no cambiarás mucho la semántica: ¡programar en ese francés-C no será más fácil!
Sintaxis: se refiere a la estructura gramatical del idioma. Si está escribiendo el lenguaje c. Debe tener mucho cuidado con el uso de tipos de datos, tokens [puede ser literal o un símbolo como "printf ()". Tiene 3 tokes, "printf, (,)"]. De la misma manera, debe tener mucho cuidado, cómo utiliza la función, la sintaxis de la función, la declaración de función, la definición, la inicialización y la invocación de la misma.
Mientras que la semántica, se refiere a la lógica o el concepto de oración o declaraciones. Si dices o escribes algo fuera de concepto o lógica. Entonces, estás semánticamente equivocado.
La sintaxis es la estructura o forma de expresiones, enunciados y unidades de programa, pero la semántica es el significado de esas expresiones, enunciados y unidades de programa. La semántica se sigue directamente de la sintaxis . La sintaxis se refiere a la estructura / forma del código que especifica un lenguaje de programación específico, pero la Semántica trata el significado asignado a los símbolos, caracteres y palabras.
La sintaxis se refiere a la estructura de un lenguaje, rastreando su etimología sobre cómo son las cosas juntas.
Por ejemplo, puede requerir que el código se junte al declarar 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 tiene que ver con el significado. Un compilador o intérprete podría quejarse de errores de sintaxis. Sus compañeros de trabajo se quejarán de la semántica.