Oh, a side point: there's some confusion introduced by the lack of a scanner/lexer in modern all-in-one-parsers.
Python, for example, uses a scanner and so its grammar is nominally not context sensitive, but its scanner very much is (maintaining a stack of indentation exactly as OP was asking about). When you do everything in one place, the result must have the ability to maintain and respond to global state. There's really no other way around it. A pure BNF cannot parse Python. Aaron Sherman, M.: P: 617-440-4332 Google Talk, Email and Google Plus: a...@ajs.com Toolsmith, developer, gamer and life-long student. On Tue, Sep 13, 2016 at 12:26 PM, Bennett Todd <bennett.e.t...@gmail.com> wrote: > Hostile or not, thanks for your informative reply. >