On Sun, Jan 9, 2022 at 4:42 PM Oscar Westra van Holthe - Kind < [email protected]> wrote:
> Thank you for the reactions on this! I really appreciate it. > > Given the responses, migrating to ANTLR will allow us to tap more > knowledge, > and target multiple languages. ANTLR supports, among others, C++, C#, Java, > JavaScript, PHP, Python 2 and Python 3. > I agree that ANTLR 4 looks like the best tool for this job at the moment! Looking forward to learn something new from you! :-) > > Going forward, I'll be taking a few steps: > > 1. Upgrade the JavaCC plugin as per Martins suggestion, and JavaCC to > the most recent version of the plugin dependency, 7.0.10 > 2. Upgrade the comment handling by the IDL to warn if documentation > comments are out of place > (this is useful to prepare for less hacky documentation comment > handling, but will force compilation errors if documentation comments > are > used as regular multiline comments) > 3. Suggest an ANTLR grammar to replace the IDL grammar > > > Kind regards, > Oscar > > > On Thu, 6 Jan 2022 at 18:24, Ryan Skraba <[email protected]> wrote: > > > Hey, this is an excellent analysis for the future of the IDL > > implementation, thanks! > > > > I am really not any expert around parser generators, but I've learned > > quite a bit from reading through your PRs. Switching to ANTLR might > > bring in some more active developers in this area, so I'm all for it! > > Thanks again for the work you've been doing and if you choose to take > > on this task. > > > > Would using ANTLR help some of the other SDKs implement the IDL > > specification? That would be a huge advantage. > > > > All my best, Ryan > > > > > > > > On Thu, Jan 6, 2022 at 4:30 AM Raymie Stata <[email protected]> > > wrote: > > > > > > I support your recommendation. I've recently used ANTLR on a use-case > > > similar to this one and had a great experience. > > > > > > Raymie > > > > > > On Wed, Jan 5, 2022 at 5:13 PM Oscar Westra van Holthe - Kind < > > > [email protected]> wrote: > > > > > > > Hi everyone, > > > > > > > > One of the avro components in Java is the IDL parser. It is generated > > from > > > > a grammar using JavaCC. This is an old library, that enforces Java > 1.5 > > > > syntax for the IDL class. What's worse, it is not really upgraded > > anymore. > > > > > > > > For now it works, but it's not suitable for maintaining a high > quality > > > > component. As a result, I've been looking for a replacement. > > > > > > > > Some alternatives to JavaCC are: > > > > * JavaCC 21; written by a brilliant mind, but who has been out of > > > > programming for a decade and returned a few years ago. JavaCC 21 > lacks > > > > maven support, and I cannot find it in Maven Central. > > > > * CookCC; has a YACC-like syntax (quite archaic), and is at version > > > > 0.something > > > > * CUP (a Java based “Constructor of Useful Parsers”) generates more > > > > powerful LALR parsers, which allows for grammars that are easier to > > read. > > > > However, it was last released in Oktober 2015. > > > > * ANTLR is actively developed (9 releases since 2017, last one > November > > > > 2021) and thus the most obvious choice, but requires ANTLR artifacts > at > > > > runtime (i.e. a 328kB extra runtime dependency for the IDL parser) > > > > > > > > Going forward, I suggest switching to ANTLR. > > > > My reasons: > > > > 1. It's actively maintained > > > > 2. There is a Maven plugin, to generate the parser during the build > > > > 3. I know where to find working examples > > > > > > > > Does anyone have a better/easier suggestion? > > > > > > > > Or should I continue with ANTLR? > > > > > > > > > > > > Kind regards, > > > > Oscar > > > > > > > > > > > > -- > > > > Oscar Westra van Holthe - Kind <[email protected]> > > > > > > > > > -- > > ✉️ Oscar Westra van Holthe - Kind <[email protected]> >
