<A> ::= α
”, such as
<S> ::= a <S> | a <S> b <S> | ε
<thing> b ::= b <thing>Equivalently, context-sensitive grammars can be built using only productions of the form “
α <B> γ ::= αβγ
”.
These rules are called context-sensitive because the replacement of a nonterminal by its definition depends on the surrounding symbols.
The language generated by this grammar consists of strings having equal number a 's, b 's, and c 's in that order—namely, the set { abc , aabbcc , aaabbbccc , ... }.
|
|
<thing>
, the terminal symbol following the nonterminal determines which rule can be applied.
This causes the grammar to be context-sensitive.
In fact, a result in computation theory asserts that no context-free grammar produces this language.
α ::= β
”—for example,
a <thing> b ::= b <another thing>