language-agnostic programming-languages syntax keyword reserved-words

language agnostic - ¿Cuál es la diferencia entre "palabra clave" y "palabra reservada"?



language-agnostic programming-languages (10)

¿Cuál es la diferencia entre una palabra clave y una palabra reservada ?

Por ejemplo, en la propuesta de conceptos en C ++ uno puede leer la siguiente declaración:

Esta propuesta introduce cinco palabras clave nuevas: concepto, mapa conceptual, dónde, axioma y verificación tardía. Todas estas palabras clave también serán palabras reservadas.


Las palabras reservadas y las palabras clave son en su mayoría iguales y tienen significados predefinidos en GW-BASIC ... estos tienen usos predefinidos y no se pueden usar o redefinir para ningún otro propósito en Basic. Las palabras clave no se pueden usar como nombre de variable. Algunas de las palabras clave de Basic son ... IF , THEN , WHILE , etc.


Palabras clave: Palabras clave tiene algunas funcionalidades especiales para el compilador. Por lo tanto, las palabras clave no se pueden usar como identificadores en la codificación. Palabras reservadas: palabras de reserva son las palabras que están reservadas para uso futuro. En java, const y goto son las palabras reservadas que no se están usando actualmente y pueden volver a Java en el futuro. Si revisamos aquí Palabras clave de lenguaje Java ( https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html ), dice que java (más reciente supongo) tiene 50 palabras clave, incluidas goto y const. Entonces goto y const son las palabras clave que están reservadas.


Realmente dependerá mucho del contexto. Por ejemplo, el Estándar ISO C ++ dice que cosas como "si", "mientras", "int", etc. son palabras clave , y en realidad no usa el término palabra reservada , excepto una vez, en una nota al pie, donde probablemente haya algo más significado :-)

La gama estándar especifica nombres reservados ; por ejemplo, todos los nombres que comienzan con un guión bajo y una letra mayúscula son nombres reservados.


Solo para mostrar que la distinción es muy significativa:

No en todos los idiomas están todas las palabras clave reservadas. En Fortran es posible hacer esto:

if if then then else else

En este caso, las palabras clave no están reservadas, pero dependiendo del contexto pueden ser interpretadas por el compilador como variables.


Supongo que palabra clave es una palabra usada como "palabra clave" (como si, para, cambiar, etc.) mientras que una palabra reservada es algo que no puedes usar como nombre de variable porque podría convertirse en una palabra clave en una versión futura del idioma.


Un buen ejemplo de esta distinción es "goto" en Java. No es una palabra clave de idioma (es decir, no es Java válida), pero es una palabra reservada.

Parece que los diseñadores de Java nos dicen "No vamos a usar ''goto'', y tú tampoco".



Las palabras clave tienen un significado especial en un idioma y son parte de la sintaxis.

Las palabras reservadas son palabras que no pueden usarse como identificadores (variables, funciones, etc.), ya que están reservadas por el idioma.

En la práctica, la mayoría de las palabras clave son palabras reservadas y viceversa. Pero debido a que son dos cosas diferentes, puede suceder que una palabra clave no sea una palabra reservada (por ejemplo, una palabra clave solo tiene significado en un contexto especial y puede usarse como un identificador) o una palabra reservada no es una palabra clave ( por ejemplo, porque está reservado para uso futuro).

Actualización: algunos ejemplos dados por otros que ilustran la distinción:

  • En Java, goto es una palabra reservada pero no una palabra clave (como consecuencia, no puedes usarla en absoluto)
  • Fortran no tiene palabras reservadas, todas las palabras clave (si, entonces, etc.) se pueden usar como identificadores

palabra clave , - una palabra con un significado especial en un contexto particular. Es una definición semántica .

palabra reservada es una palabra que no se puede usar como identificador , como por ejemplo, variable y nombre de función. Es una definición sintáctica .

EgEn Java, todas las palabras clave son palabras reservadas. Probablemente no al revés. goto es palabra reservada pero no se usa y no tiene función.

En idiomas más antiguos como FORTRAN, había palabras clave pero no palabras reservadas.

Sin embargo, palabra clave y palabra reservada se usan indistintamente.


  • Palabra clave: Tiene algún significado y podemos usarlo en el programa.
  • Palabra reservada: no podemos usar en el programa. Se pueden usar en el futuro. Ejemplo: goto