Name resolution (programming languages)

Expressions in computer programs reference variables, data types, functions, classes, objects, libraries, packages and other entities by name.

Static name resolution catches, at compile time, use of variables that are not in scope; preventing programmer errors.

[3] Examples of languages that use static name resolution include C, C++, E, Erlang, Haskell, Java, Pascal, Scheme, and Smalltalk.

Examples of languages that use dynamic name resolution include some Lisp dialects, Perl, PHP, Python, Rebol, and Tcl.

Alpha-renaming can make static code analysis easier since only the alpha renamer needs to understand the language's scoping rules.