ABSTRACT

Indisputably, the notion of a procedure is central to computation and, consequently, computer science as a whole. Automata define strings of their language by rewriting processes that start from these strings and end in prescribed special sets of strings, usually called start and final configurations. They formalize procedures that have only two outputs—“yes” and “no.” The output “yes” represents a resulting affirmative response to the input, expressed by stating that the input is accepted. The output “no” means a negative response to the input, which is said to be rejected. Grammars are language-generating counterparts to the automata. Instead of accepting strings, they define strings of their languages by generating them from a special start string. Consequently, as opposed to automata, they formalize procedures that produce out data without any input.