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

Reply via email to