Tokens - glantucan/puzzle_game GitHub Wiki
Lo primero que hace el compilador es separar el código en secuencias de caracteres específicos que él es capaz de reconocer. Este proceso es parecido al que realiza nuestro cerebro cuando escucha a alguien hablar en otro idioma. Hasta que no somos capaces de reconocer las palabras no podemos asignarles un significado, separar unas frases de otras, ni llegar a entender el mensaje.
Estas secuencias de caracteres se denominan lexemas (tokens, en inglés) y esta primera separación es la que permite al compilador construir lo que llamamos símbolos y guardarlos temporalmente en una tabla que utilizará en varias fases para desgranar el sgnificado de nuestro programa.
Sin entrar en mucho detalle podemos ver como el compilador despieza una sentencia tan sencilla como esta:
Los símbolos se clasifican en varias categorías:
-
Palabras clave:
Son palabras que ya tienen significado específico dentro del lenguaje y no pueden ser utilizadas para nada más que lo predefinido (no se pueden usar como variables o nombres de función). Ejemplos:class
,public
,private
,return
,int
,string
,bool
, ... Aquí tienes la lista completa de palabras clave de C#. -
Identificadores: Son palabras que inventa el programador para dar nombre a las variables, funciones o clases que crea dentro de su programa. Por ejemplo, en:
int edad = 25;
La palabra edad
es el identificador que se ha inventado para dar nombre a la variable que se utiliza para guardar la edad de un personaje.
Para que un identificador sea válido no debe empezar por un número o caracter especial (con excepción del guión bajo _
).
Es importante usar identificadores descriptivos y al mismo tiempo seguir un criterio claro a la hora de usar mayúsculas y minúsculas en los mismos.
El criterio más común en C# para el uso de mayúsculas en identificadores es camelCase para nombres de variables y PascalCase para nombres de funciones y clases. Puedes leer más sobre esto aquí
-
Operadores: Tienen, como las palabras clave, un significado específico dentro del lenguaje pero además, como su nombre indica, realizan operaciones sobre uno o más valores y producen como resultado otro valor. Ejemplos:
+
,-
,.
, ...
No tienen por qué corresponderse con una operación matemática o lógica: Por ejemplo, el.
cuando se encuentra entre un identificador de objeto y otro de variable, sirve para obtener el valor de esa variable dentro de dicho objeto:Debug.Log(player.name);
Aquí puedes encontrar una lista de los operadores más comunes e instrucciones sobre como utilizarlos.
-
Literales: Son símbolos que sirven para crear valores al vuelo. Los números y las cadenas de texto, cuando se escriben explícitamente en un programa, son literales: Ejemplos:
"Hola mundo"
,5
,3.1415F
, ... -
Separadores: Son caracteres especiales que sirven para separar y delimitar valores, sentencias, bloques de código, etc. dentro de un programa. Ejemplos:
;
,,
,{
,}
,(
,)
,[
, ... Aquí puedes encontrar una lista de los más habituales y algunas recomendaciones a la hora de utilizarlos y evitar errores comunes.
Es fundamental, para que el compilador no de errores, que sepamos escribir los símbolos de nuestras sentencias correctamente y en orden. Fallar en esto implica que el compilador no va a ser capaz de crear los símbolos y que cualquier mensaje de error que nos de sea muy impreciso. Sin la identificación de símbolos, no será capaz de separar correctamente las sentencias y los bloques de código, por lo que incluso el número de linea que nos indique como fuente del error será incorrecto en la mayoría de los casos.