I had some success in implementing a general parsing engine on top of Packrat. It fits well this purpose because of the memoisation - an editor invalidates only the memoised chunks that overlaps the modified line, and then the whole file is reparsed, but only the modified line is actually parsed, all the rest stays memoised from the previous run.
There are no ready usable solutions, but you can pick up any Packrat implementation and brew your own thing on top of it.
You can take a look at how Packrat integrates with a text editor here:
http://www.meta-alternative.net/mbase.html