In
formal language theory
In logic, mathematics, computer science, and linguistics, a formal language consists of words whose letters are taken from an alphabet and are well-formed according to a specific set of rules.
The alphabet of a formal language consists of sy ...
, a context-sensitive language is a language that can be defined by a
context-sensitive grammar
A context-sensitive grammar (CSG) is a formal grammar in which the left-hand sides and right-hand sides of any production rules may be surrounded by a context of terminal and nonterminal symbols. Context-sensitive grammars are more general than ...
(and equivalently by a
noncontracting grammar). Context-sensitive is one of the four types of grammars in the
Chomsky hierarchy
In formal language theory, computer science and linguistics, the Chomsky hierarchy (also referred to as the Chomsky–Schützenberger hierarchy) is a containment hierarchy of classes of formal grammars.
This hierarchy of grammars was described ...
.
Computational properties
Computationally, a context-sensitive language is equivalent to a linear bounded
nondeterministic Turing machine, also called a
linear bounded automaton In computer science, a linear bounded automaton (plural linear bounded automata, abbreviated LBA) is a restricted form of Turing machine.
Operation
A linear bounded automaton is a nondeterministic Turing machine that satisfies the following thre ...
. That is a non-deterministic Turing machine with a tape of only
cells, where
is the size of the input and
is a constant associated with the machine. This means that every formal language that can be decided by such a machine is a context-sensitive language, and every context-sensitive language can be decided by such a machine.
This set of languages is also known as NLINSPACE or NSPACE(''O''(''n'')), because they can be accepted using linear space on a non-deterministic Turing machine. The class LINSPACE (or DSPACE(''O''(''n''))) is defined the same, except using a
deterministic Turing machine. Clearly LINSPACE is a subset of NLINSPACE, but it is not known whether LINSPACE=NLINSPACE.
Examples
One of the simplest context-sensitive but not context-free languages is
: the language of all strings consisting of occurrences of the symbol "a", then "b"'s, then "c"'s (abc, , , etc.)