3.2 Tokens
§1 Sinopsis
El tratar de la estructura lógica de un programa (
1.3.1) 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
(
1.4).
Comprenden los siguientes tipos de elementos (podríamos considerar que el lenguaje computacional C++ tiene las siguientes clases de "palabras"):
-
Palabras clave ("keywords"). C++ dispone de un conjunto relativamente extenso de palabras clave, señaladas en (
3.2.1). -
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.(
3.2.2). -
Constantes. Existen varias clases, cuyos detalles se exponen en las páginas siguientes (
3.2.3) -
operadores (
4.9) -
signos de puntuación, también llamados puntuadores (
3.2.6).
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):
| { | } | [ | ] | # | ## | ( | ) | \ |
| <: | :> | <% | %> | %: | %:%: | ; | : | ... |
| " | ' | ? | :: | . | .* | |||
| + | - | * | / | % | ^ | & | | | ~ |
| ! | = | < | > | += | -= | *= | /= | %= |
| ^= | &= | |= | << | >> | >>= | <<= | == | != |
| <= | >= | && | || | ++ | -- | , | ->* | -> |
| and | and_eq | bitand | bitor | compl | not | not_eq | or | or_eq |
| xor | xor_eq | ( ) | [ ] | new | delete | new[ ] | delete[ ] |
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 |
| ; | puntuador |