stringtranslate.com

Identificador (lenguajes informáticos)

En los lenguajes de programación de computadoras , un identificador es un token léxico (también llamado símbolo , pero no debe confundirse con el tipo de datos primitivo símbolo ) que nombra las entidades del lenguaje. Algunos de los tipos de entidades que un identificador puede indicar incluyen variables , tipos de datos , etiquetas , subrutinas y módulos .

forma léxica

Las secuencias de caracteres que constituyen identificadores dependen de la gramática léxica del idioma. Una regla común son las secuencias alfanuméricas , con guiones bajos también permitidos (en algunos idiomas, _ no está permitido), y con la condición de que no puede comenzar con un dígito numérico (para simplificar la lexing evitando confundir con literales enteros ), por lo que foo, foo1, foo_bar, _fooestán permitidas. , pero 1foono lo es: esta es la definición utilizada en versiones anteriores de C y C++ , Python y muchos otros lenguajes. Las versiones posteriores de estos idiomas, junto con muchos otros idiomas modernos, admiten muchos más caracteres Unicode en un identificador. Sin embargo, una restricción común es no permitir espacios en blanco ni operadores de idioma; esto simplifica la tokenización al hacerla libre de formato y contexto . Por ejemplo, prohibir +en identificadores debido a su uso como operación binaria significa que a+by se a + bpuede tokenizar igual, mientras que si estuviera permitido, a+bsería un identificador, no una adición. Los espacios en blanco en el identificador son particularmente problemáticos, ya que si se permiten espacios en los identificadores, entonces una cláusula como if rainy day then 1es legal, como rainy dayidentificador, pero tokenizar esto requiere el contexto de la frase de estar en la condición de una cláusula if. Sin embargo, algunos idiomas permiten espacios en los identificadores, como ALGOL 68 y algunas variantes de ALGOL; por ejemplo, la siguiente es una declaración válida: real half pi;which podría ingresarse como .real. half pi;(las palabras clave se representan en negrita, concretamente mediante ajuste ). En ALGOL esto fue posible porque las palabras clave se diferencian sintácticamente, por lo que no hay riesgo de colisión o ambigüedad, los espacios se eliminan durante la fase de reconstrucción de la línea y la fuente se procesó mediante análisis sin escáner , por lo que lexing podría ser sensible al contexto.

En la mayoría de los idiomas, algunas secuencias de caracteres tienen la forma léxica de un identificador, pero se conocen como palabras clave ; por ejemplo, iffrecuentemente es una palabra clave para una cláusula if, pero léxicamente tiene la misma forma que igo fooes decir, una secuencia de letras. Esta superposición se puede manejar de varias maneras: se les puede prohibir que sean identificadores, lo que simplifica la tokenización y el análisis, en cuyo caso son palabras reservadas ; ambos pueden permitirse pero distinguirse de otras maneras, como mediante el uso de correas; o se pueden permitir secuencias de palabras clave como identificadores y cuyo sentido se determina a partir del contexto, lo que requiere un léxico sensible al contexto. Las palabras que no son claves también pueden ser palabras reservadas (prohibidas como identificadores), particularmente por compatibilidad con versiones posteriores , en caso de que una palabra pueda convertirse en una palabra clave en el futuro. En algunos idiomas, por ejemplo, PL/1 , la distinción no está clara.

Semántica

El alcance o la accesibilidad dentro de un programa de un identificador puede ser local o global. Un identificador global se declara fuera de las funciones y está disponible en todo el programa. Un identificador local se declara dentro de una función específica y solo está disponible dentro de esa función. [1]

Para las implementaciones de lenguajes de programación que utilizan un compilador , los identificadores suelen ser solo entidades en tiempo de compilación . Es decir, en tiempo de ejecución , el programa compilado contiene referencias a direcciones de memoria y compensaciones en lugar de tokens de identificador textuales (estas direcciones de memoria, o compensaciones, han sido asignadas por el compilador a cada identificador).

En lenguajes que soportan la reflexión , como la evaluación interactiva del código fuente (usando un intérprete o un compilador incremental), los identificadores también son entidades en tiempo de ejecución, a veces incluso como objetos de primera clase que pueden manipularse y evaluarse libremente. En Lisp , estos se llaman símbolos .

Los compiladores e intérpretes no suelen asignar ningún significado semántico a un identificador basándose en la secuencia de caracteres real utilizada. Sin embargo, hay excepciones. Por ejemplo:

En algunos idiomas como Go, la unicidad de los identificadores se basa en su ortografía y su visibilidad. [2]

En HTML un identificador es uno de los posibles atributos de un elemento HTML . Es único dentro del documento.

Referencias

  1. ^ Malik, D. (2014). Programación C ++: desde el análisis de problemas hasta el diseño de programas (7ª ed.). Aprendizaje Cengage. pag. 397.ISBN​ 978-1-285-85274-4.
  2. ^ "La especificación del lenguaje de programación Go: el lenguaje de programación Go". Golang.org. 2013-05-08 . Consultado el 5 de junio de 2013 .

Ver también