Tokens. También llamado componente léxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programación. Ejemplos de tokens, podrían ser palabras clave (if, while, int,…), identificadores, números, signos, o un operador de varios caracteres, (por ejemplo, :=).
Son los elementos más básicos sobre los cuales se desarrolla toda traducción de un programa, surgen en la primera fase, llamada análisis léxico, sin embargo se siguen utilizando en las siguientes fases (análisis sintáctico y análisis semántico) antes de perderse en la fase de síntesis.

 

§1  Sinopsis

El tratar de la estructura lógica de un programa, se señaló que tokens son los elementos en que el preprocesado desmenuza el código fuente. En un lenguaje de programación, los tokens son el equivalente a las palabras y signos de puntuación en el lenguaje natural escrito. Los tokens están separados por elementos de separación que reciben el nombre genérico de separadores.

 

Comprenden los siguientes tipos de elementos (podríamos considerar que el lenguaje computacional tiene las siguientes clases de «palabras»):

 

  • Palabras clave («keywords»). C++ dispone de un conjunto relativamente extenso de palabras clave.

  •  
  • Identificadores. Su número puede ser virtualmente infinito; dentro de ciertas normas el programador es libre de elegir los que mejor se ajusten a sus necesidades.

  •  
  • Constantes. Existen varias clases, cuyos detalles se exponen a continuación.

  •  
  • La primera es el sentido normal de la palabra constante en lenguaje natural; es decir, datos (de cualquiera de los tipos posible) cuyos valores se han definido en el momento de escribir el código del programa, y no pueden ser modificados más tarde en tiempo de ejecución (lo que significa que sus valores deben ser resueltos en tiempo de compilación). 

    •  
    • Dicho en otras palabras:  el compilador sabe cual es el valor de los objetos declarados como constantes y en base a este conocimiento puede hacer cuantas suposiciones sean válidas para conseguir la mayor eficiencia en tiempo de ejecución.
    •  
    • En este sentido, el concepto constante es justamente el opuesto a variable, que corresponde a aquellos objetos-dato que pueden recibir nuevas asignaciones de valor a lo largo del programa.
    • En otras palabras: entidades cuyo valor solo es conocido en tiempo de ejecución.
    •  
    • La segunda connotación es la de tipo de objeto-dato. En este sentido podemos afirmar que en programación los enteros (variables) forman un tipo distinto de los enteros constantes (constantes enteras), y que los caracteres (variables) forman un tipo distinto de las constantes carácter. Así pues, distinguimos entre un tipo char y un tipo const char. 
    •  
    • Como prácticamente todos los tipos de objeto-dato posibles en en lenguaje de programación, puede declararse constantes, existe un universo de tipos simétricos al de los tipos de objetos variables, pero de objetos constantes.
    •  
    • Operadores. Son un tipo de tokens que pueden aparecer en las expresiones, e indican al compilador la realización de determinadas operaciones matemáticas, lógicas y numéricas. Se aplican a variables u otros objetos denominados operandos y su efecto es una combinación de las siguientes acciones:
    •                                                                             
    •  
    •  
    • Producir un resultado-valor
    •  
    • Alterar un operando
    •  
    • Designar un objeto o función.
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  • Signos de puntuación, también llamados puntuadores juegan el mismo papel que sus homónimos en el lenguaje natural escrito. Conocidos también como puntuadores, son los que se citan a continuación. La mayoría de ellos tienen un doble uso y en ocasiones funcionan también como operadores.

 

 En ocasiones, los operadores y signos de puntuación comparten la misma representación escrita. En estos casos, el sentido debe deducirse del contexto y por la forma en que están agrupados los diversos signos.

 

El conjunto de símbolos; grupos de símbolos, y palabras utilizados en C++ como operadores y/o puntuadores, es el siguiente (los operadores se han señalado en azul):

 

Una vez entregado el fuente al compilador, es precisamente el analizador sintáctico («parser») el encargado de es identificar los tokens.

 

Por ejemplo, la sentencia    int    i    ;    float    f ; es descompuesta por el «parser» en los siguientes tokens:

 

                                    int     palabra clave

 

                                    i         identificador

 

                                    ;         puntuador

 

                                    float  palabra clave

 

                                    f         identificador