In computer programming languages, an identifier is a lexical token (also called a symbol, but not to be confused with the symbol primitive data type) that names the language's entities. Some of the kinds of entities an identifier might denote include variables, data types, labels, subroutines, and modules.

Lexical form

edit

Which character sequences constitute identifiers depends on the lexical grammar of the language. A common rule is alphanumeric sequences, with underscore also allowed (in some languages, _ is not allowed), and with the condition that it can not begin with a numerical digit (to simplify lexing by avoiding confusing with integer literals) – so foo, foo1, foo_bar, _foo are allowed, but 1foo is not – this is the definition used in earlier versions of C and C++, Python, and many other languages. Later versions of these languages, along with many other modern languages, support many more Unicode characters in an identifier. However, a common restriction is not to permit whitespace characters and language operators; this simplifies tokenization by making it free-form and context-free. For example, forbidding + in identifiers due to its use as a binary operation means that a+b and a + b can be tokenized the same, while if it were allowed, a+b would be an identifier, not an addition. Whitespace in an identifier is particularly problematic, because if spaces are allowed in identifiers, then a clause such as if rainy day then 1 is legal, with rainy day as an identifier, and tokenizing this requires the phrasal context of being in the condition of an if clause. Some languages do allow spaces in identifiers, however, such as ALGOL 68 and some ALGOL variants – for example, the following is a valid statement: real half pi; which could be entered as .real. half pi; (keywords are represented in boldface, concretely via stropping). In ALGOL this was possible because keywords are syntactically differentiated, so there is no risk of collision or ambiguity, spaces are eliminated during the line reconstruction phase, and the source was processed via scannerless parsing, so lexing could be context-sensitive.

In most languages, some character sequences have the lexical form of an identifier but are known as keywords – for example, if is frequently a keyword for an if clause, but lexically is of the same form as ig or foo namely a sequence of letters. This overlap can be handled in various ways: these may be forbidden from being identifiers – which simplifies tokenization and parsing – in which case they are reserved words; they may both be allowed but distinguished in other ways, such as via stropping; or keyword sequences may be allowed as identifiers and which sense is determined from context, which requires a context-sensitive lexer. Non-keywords may also be reserved words (forbidden as identifiers), particularly for forward compatibility, in case a word may become a keyword in future. In a few languages, e.g., PL/1, the distinction is not clear.

Semantics

edit

The scope, or accessibility within a program of an identifier can be either local or global. A global identifier is declared outside of functions and is available throughout the program. A local identifier is declared within a specific function and only available within that function.[1]

For implementations of programming languages that are using a compiler, identifiers are often only compile time entities. That is, at runtime the compiled program contains references to memory addresses and offsets rather than the textual identifier tokens (these memory addresses, or offsets, having been assigned by the compiler to each identifier).

In languages that support reflection, such as interactive evaluation of source code (using an interpreter or an incremental compiler), identifiers are also runtime entities, sometimes even as first-class objects that can be freely manipulated and evaluated. In Lisp, these are called symbols.

Compilers and interpreters do not usually assign any semantic meaning to an identifier based on the actual character sequence used. However, there are exceptions. For example:

  • In Perl a variable is indicated using a prefix called a sigil, which specifies aspects of how the variable is interpreted in expressions.
  • In Ruby a variable is automatically considered immutable if its identifier starts with a capital letter.
  • In Go, the capitalization of the first letter of a variable's name determines its visibility (uppercase for public, lowercase for private).
  • In Fortran a default type is given to a variable based on its first letter. Integer if it is in the range I-N, or real otherwise.

In some languages, such as Go, identifiers' uniqueness is based on their spelling and their visibility.[2]

In HTML an identifier is one of the possible attributes of an HTML element. It is unique within the document.

See also

edit

References

edit
  1. ^ Malik, D. (2014). C++ programming : from problem analysis to program design (7th ed.). Cengage Learning. p. 397. ISBN 978-1-285-85274-4.
  2. ^ "The Go Programming Language Specification - The Go Programming Language". Golang.org. 2013-05-08. Retrieved 2013-06-05.

📚 Artikel Terkait di Wikipedia

Identifier

identification (the process of identifying), or an identifier (that is, an instance of identification). An identifier may be a word, number, letter, symbol

Natural language processing

Natural language processing (NLP) is the processing of natural language information by a computer. NLP is a subfield of computer science and is closely

Variable (high-level programming language)

used independently of the exact information it represents. The identifier in computer source code can be bound to a value during run time, and the value

Reserved word

programming language, a reserved word (sometimes known as a reserved identifier) is a word that cannot be used by a programmer as an identifier, such as

Glossary of computer science

declaration In computer programming, a language construct that specifies properties of an identifier: it declares what a word (identifier) "means". Declarations

Unique identifier

A unique identifier (UID) is an identifier that is guaranteed to be unique among all identifiers used for those objects and for a specific purpose. The

Uniform Resource Identifier

A Uniform Resource Identifier (URI), formerly Universal Resource Identifier, is a unique sequence of characters that identifies an abstract or physical

Naming convention (programming)

In computer programming, a naming convention is a set of rules for choosing the character sequence to be used for identifiers which denote variables, types