In formal language theory, an unrestricted grammar is a formal grammar on which no restrictions are made on the left and right sides of the grammar's productions. This is the most general class of grammars in the Chomsky–Schützenberger hierarchy, and can recognize arbitrary recursively enumerable languages.
An unrestricted grammar is a formal grammar , where is a set of nonterminal symbols is a set of terminal symbols, where and are disjoint (actually, this is not strictly necessary, because unrestricted grammars make no real distinction between nonterminal and terminal symbols, the designation exists purely so that one knows when to stop when trying to generate sentential forms of the grammar), is a set of production rules of the form where and are in , but is not empty, and is a specially designated start symbol. As the name implies, there are no real restrictions on the types of production rules that unrestricted grammars can have.
It may be shown that unrestricted grammars characterize the recursively enumerable languages. This is the same as saying that for every unrestricted grammar there exists some Turing machine capable of recognizing and vice-versa. Given an unrestricted grammar, such a Turing machine is simple enough to construct, as a two-tape nondeterministic Turing machine. The first tape contains the input word to be tested, and the second tape is used by the machine to generate sentential forms from . The Turing machine then does the following:
It is easy to see that this Turing machine will generate all and only the sentential forms of on its second tape after the last step is executed an arbitrary number of times, thus the language must be recursively enumerable.
The reverse construction is also possible. Given some Turing machine, it is possible to create an unrestricted grammar.
As might be expected from the equivalence of unrestricted grammars and Turing machines, the decision problem of whether a given string belongs to the language of some unrestricted grammar is in general undecidable.
It is perfectly possible to create a universal unrestricted grammar capable of accepting any other unrestricted grammar's language given a description of the language, just as it is possible to create a universal Turing machine, so it would in theory be possible to build a programming language based on unrestricted grammars.
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Unrestricted grammar".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world