Do I understand correctly that NiFi is currently using ANTLRv3? ________________________________________ From: Matt Burgess <[email protected]> Sent: Thursday, May 4, 2017 9:05:35 AM To: [email protected] Subject: Re: MiNiFi C++ Expression Language
I haven't used Flex/Bison since a trivial example in college, so I'm not sure about the LOE for getting that set up, maybe there's a Maven-built project out there that we could look at for inspiration, but that seems unlikely :) An ANTLR4 refactor (assuming the C++ target is in good shape) would give us NiFi/MiNiFi EL compatibility (and full-featured EL support in MiNiFi C++), but we'd have to accept the risks of introducing bugs, regressions, etc. as a result of the refactor. Basically we'd just need to test the heck out of it on all platforms, which isn't a bad thing but adds to the LOE for the ANTLR4 upgrade, versus a smaller testing "surface" for incremental development of a C/C++ based grammar. On May 4, 2017, at 8:51 AM, Andrew Christianson <[email protected]> wrote: >> I tried a quick ANTLR4 upgrade myself, it's indeed a big job to refactor the >> existing grammar. Since the source and target for MiNiFi C++ is, well, C++, >> an alternative could be to use lex/yacc (Flex/Bison) [1], Lemon [2], Ragel >> [3], etc. The downside is maintaining two grammars, but we are doing that >> with all the MiNiFi components already. The upside is being able to support >> EL incrementally as the grammar is developed. What do you think? > > This seems like a pragmatic approach. What's the level-of-effort required to > do the initial grammar port and set up the build tooling? Less than > refactoring for ANTLR4? I'm not as familiar with the EL grammar situation. > > -Andy > ________________________________________ > From: Matt Burgess <[email protected]> > Sent: Thursday, May 4, 2017 8:46:20 AM > To: [email protected] > Subject: Re: MiNiFi C++ Expression Language > > I tried a quick ANTLR4 upgrade myself, it's indeed a big job to refactor the > existing grammar. Since the source and target for MiNiFi C++ is, well, C++, > an alternative could be to use lex/yacc (Flex/Bison) [1], Lemon [2], Ragel > [3], etc. The downside is maintaining two grammars, but we are doing that > with all the MiNiFi components already. The upside is being able to support > EL incrementally as the grammar is developed. What do you think? > > Regards, > Matt > > [1] http://dinosaur.compilertools.net/ > [2] http://www.hwaci.com/sw/lemon/ > [3] http://www.colm.net/open-source/ragel/ > > > > Sent from my iPhone >> On May 4, 2017, at 8:13 AM, Marc P. <[email protected]> wrote: >> >> Andrew, >> I am not aware of it being actively worked [1]. This would require using >> ANTLR4, but I don't believe C++ support is well tested [2]. Someone can >> correct me if I'm wrong, but there would have to be changes to both sides. >> I attempted a quick straw man with grammars, but didn't take it very far >> after making initial changes to the grammar. It generated code, but I'm >> uncertain of cross platform compatibility with the expression language. If >> that's not expected or required that will remove some limitations as a >> result of moving to ANTLR4. >> >> [1] https://issues.apache.org/jira/browse/MINIFI-140 >> [2] http://www.soft-gems.net/index.php/tools/49-the-antlr4-c-target-is-here >> >> On Thu, May 4, 2017 at 8:07 AM, Andrew Christianson < >> [email protected]> wrote: >> >>> All, >>> >>> I see that we do not have support for the expression language yet in >>> MiNiFi C++. Is anyone actively working on this, and if so, is there an ETA? >>> If no one is working on it, is there a general plan for how it should be >>> implemented? I think I recall seeing references to ANTLR
