Why does jabref use two different versions of antlr?

I saw jabref/build.gradle at 7cb1b2301b864b389195ecc22fe520af1e00345b · JabRef/jabref · GitHub


JabRef uses a grammar for the LaTeX-BST-Parser, which is based on antlr3. Antlr4 grammar is used for the search grammar:

However, @calixtus is currently working on porting the BST stuf to antlr4

Well, no guarantee for success. It’s really messy converting it, since in antlr3 the parser produced an ast, we walked through ‘manually’. In antlr4 we have a generic so called visitor provided by antlr to walk through the parsed tree with methods for each syntax symbol which can be overridden. That needs in some parts total rethinking of the state manager and how custom functions mix up with bst language constructs.

A lot to learn for me, but this is why I try to do this.