Got it. So the crux of the problem is porting from v3 to v4, plus the added uncertainty of the C++ v4 target.
I'm assuming that NiFi wants to eventually get onto v4 anyway. If that's the case, then porting to v4 is probably the ticket. Are there any concrete plans to do so in the NiFi mother project yet? -Andy ________________________________________ From: Matt Burgess <[email protected]> Sent: Thursday, May 4, 2017 9:18:00 AM To: [email protected] Subject: Re: MiNiFi C++ Expression Language Correct, the current NiFi EL grammar is ANTLR3. > On May 4, 2017, at 9:12 AM, Andrew Christianson > <[email protected]> wrote: > > 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
