Python implementation of Parsec?
I recently wrote a parser in Python using Ply (it's a python reimplementation of yacc).  When I was almost done with the parser I discovered that the grammar I need to parse requires me to do some look up during parsing to inform the lexer.  Without doing a look up to inform the lexer I cannot correctly parse the strings in the language.

Given than I can control the state of the lexer from the grammar rules I think I'll be solving my use case using a look up table in the parser module, but it may become too difficult to maintain/test.  So I want to know about some of the other options.

In Haskell I would use Parsec, a library of parsing functions (known as combinators).  Is there a Python implementation of Parsec?  Or perhaps some other production quality library full of parsing functionality so I can build a context sensitive parser in Python?
Python implementation of Parsec?
===

I recently wrote a parser in Python using Ply (it's a python reimplementation of yacc).  When I was almost done with the parser I discovered that the grammar I need to parse requires me to do some look up during parsing to inform the lexer.  Without doing a look up to inform the lexer I cannot correctly parse the strings in the language.

Given than I can control the state of the lexer from the grammar rules I think I'll be solving my use case using a look up table in the parser module, but it may become too difficult to maintain/test.  So I want to know about some of the other options.

In Haskell I would use Parsec, a library of parsing functions (known as combinators).  Is there a Python implementation of Parsec?  Or perhaps some other production quality library full of parsing functionality so I can build a context sensitive parser in Python?