k while recursing the grammar hierarchy, and
        that is the preferred approach used for top-down parsing. Since it takes
        a different kind of abstract machine to parse the two types of grammars,
        it proved to be efficient to separate the lexical scanner into a separate
        module which is built around the idea of a state machine. The goal here is
        to use the simplest parsing technique needed for the job.
      </p>
<p>
        Another, more practical, reason for separating the 