It’s unlikely to conflict I think
What I care about is the concrete syntax tree API, and the actual parsing algorithm is more-or less irrelevant, as long as it can deal with incomplete input. Moreover, in the current libsyntax2 codebase the parser and parse tree construction are nicely separated, so it shouldn’t be too hard to use other parser with current syntax tree API, or, vice verse, to reuse parser to produce a different tree. The implementation of the syntax tree is swapable as well, the API is hopefully not leaky.
I’ll be more than happy to replace a hand-written parser with something generated, if it works great. The reason why libsyntax2 uses a hand-written parser atm is just that it was easier to implement. Like, I wrote my own parser generator, and fiddled quite a bit with LALRPOP, and wrote a blog-post about how an ideal parser generator should look like (REPL-ish features and inline tests!!!), and in the end just written something that works okeish by hand 
One non-obvious thing in this area i"d like to point out is that “being incremental” probably shouldn’t be the primary focus of a parser, for two reasons:
- Vast majority of files are readonly.
- Parsers are fast enough. Reparsing parser.rs (which is the largest non-generated Rust file I know about) completely from scratch takes 20 milliseconds using current libsytnax2 parser (which allocates all over the place). I think that’s fast enough even for interactions, which block UI (for example, to handle
Enter key to auto-indent correctly), and is totally fine for async things like syntax highlighting. Adding super-simple incrementality (reuse tokens and don’t reparse outside balanced {}) should push the timings bellow 10 ms for the vast majority of edits I think.