I had the chance already to write about the project I’m working on, DeveelDB (http://github.com/deveel/deveeldb), that is based on the SQL model. As such, one of the core components is an SQL language compiler.
In the current/old version (Version 1.0b) I used a parser generator I ported from JavaCC (http://github.com/deveel/csharpcc), because this was convenient for the scope of the project, not requiring any reference to any external library, and the license of the BSD license of the generated files allowed me to include them in the project (that goes as APL 2.0).
Although it is working fine technically (despite of the ugly generated code), the level of maintainability was really low, also given the Java origin of the project.
Because of this reason I decided to recreate the parser (in the new version 2.0, under development), using a modified version of Irony (http://irony.codeplex.com), that I could then embed into the core library, given the MIT license of the project.
The logic behind the new parser is totally different and requires further implementations to handle the tree-visitor, and some times it’s a pain to actually implement it (because of the string checks of the non-terminals to verify the correct allocation of nodes in the tree).
Anyways, I’m happier with this solution rather than the old one.
I’m wondering if anyone has better suggestions than Irony for such matter, taking in consideration 1) open license (letting me embed it in the main project), 2) performances (in such context, query parsing happens millions of times per minute) and 3) size of the library (to reduce the total footprint of the final solution).