Btw. to your other questions: I think Stephen's attitude toward TP4 is that there should be a smooth transition, so ideally this would be for TP3, migrating to TP4 when the time comes.
Native Java traversals are not accessible to a parser, so I do not see how they would be impacted by gremlin-grammar or gremlin-language. Josh On Mon, Mar 22, 2021 at 2:00 PM Joshua Shinavier <[email protected]> wrote: > I am not yet entirely sure what it means either, but I am thinking that it > would be nice to be able to > a) validate Gremlin expressions written in languages other than Groovy or > Java, and > b) parse Gremlin expressions in Gremlin language variants, producing > JVM-based traversals, or even > c) parse Gremlin expressions in Gremlin language variants, producing > native traversals in the host language > These options range from easy (a) to hard (c). > > Another way to look at this is: let's use Stephen's grammar as a template > for a more generic grammar which is more flexible w.r.t. the input language. > > Josh > > > > On Mon, Mar 22, 2021 at 11:37 AM pieter gmail <[email protected]> > wrote: > >> Hi, >> >> Exciting as this is I am not quite sure what it means. >> >> Naively perhaps it the idea, >> Arbitary gremlin string -> antlr parser -> some AST walker -> gremlin >> byte code -> java in memory steps ... -> voila >> >> Is the grammar going to be the primary and only >> interface/specification, or will the native java implementation bypass >> the grammar going straight to the steps instead? >> >> Is this aimed at the gremlin 3 or 4? >> >> Cheers >> Pieter >> >> On Tue, 2021-03-16 at 15:47 -0400, Stephen Mallette wrote: >> > Here is the PR: https://github.com/apache/tinkerpop/pull/1408 >> > >> > On Tue, Mar 16, 2021 at 6:14 AM Stephen Mallette >> > <[email protected]> >> > wrote: >> > >> > > No branch yet, but I think I will be sending the PR today. >> > > >> > > On Mon, Mar 15, 2021 at 9:33 PM Joshua Shinavier >> > > <[email protected]> >> > > wrote: >> > > >> > > > Is there a branch we can take a look at before the PR is ready? >> > > > >> > > > Josh >> > > > >> > > > On Fri, Mar 12, 2021 at 5:42 AM Stephen Mallette >> > > > <[email protected]> >> > > > wrote: >> > > > >> > > > > I've been working on forming a pull request for this task. I >> > > > > don't >> > > > think IP >> > > > > Clearance is necessary as I originally did because the >> > > > > contribution is >> > > > > really just an ANTLR4 grammar file with some tests to validate >> > > > > things. >> > > > > Therefore, it's not a big body of independent code as I'd >> > > > > perhaps >> > > > initially >> > > > > envisioned. Compared to gremlint, this addition is pretty >> > > > > simple and >> > > > > straightforward. I've created this issue in JIRA with some >> > > > > additional >> > > > notes >> > > > > on what to expect in this initial body of work: >> > > > > >> > > > > https://issues.apache.org/jira/browse/TINKERPOP-2533 >> > > > > >> > > > > >> > > > > >> > > > > On Mon, Feb 8, 2021 at 10:06 AM Stephen Mallette >> > > > > <[email protected]> >> > > > > wrote: >> > > > > >> > > > > > Just wanted to leave an update on this thread. It was nice to >> > > > > > see some >> > > > > > support for it. I've not had time to focus on the task itself >> > > > > > so sorry >> > > > > > there hasn't been much movement, but I hope to see it on >> > > > > > track soon. I >> > > > > > thought to update the thread after I came across yet another >> > > > > > nice >> > > > usage >> > > > > for >> > > > > > it. I've long wanted to unify our test framework (i.e. >> > > > > > deprecate the >> > > > JVM >> > > > > > process suite in favor of the GLV test suite). I was >> > > > > > experimenting >> > > > with >> > > > > > what that might look like on Friday and hit a circular >> > > > > > dependency >> > > > which >> > > > > > constantly trips things up where gremlin-test wants to depend >> > > > > > on >> > > > > > gremlin-groovy (for ScriptEngine support) but gremlin-groovy >> > > > > > depends >> > > > on >> > > > > > gremlin-test and tinkergraph with <test> scope already. I >> > > > > > think the >> > > > > > introduction of gremlin-script would let gremlin-test build >> > > > > > the >> > > > Traversal >> > > > > > object from a Gremlin string and thus avoid that circular >> > > > relationship. >> > > > > > >> > > > > > On Fri, Jan 8, 2021 at 2:43 AM pieter gmail >> > > > > > <[email protected]> >> > > > > > wrote: >> > > > > > >> > > > > > > +1 >> > > > > > > >> > > > > > > I have often thought the language specification should be a >> > > > > > > project >> > > > > > > separate from the implementations, and done in a formal but >> > > > > > > plain >> > > > > > > English format similar to OMG or IETF specifications. >> > > > > > > >> > > > > > > I suspect Sqlg's code base would have been fastly different >> > > > > > > if it had >> > > > > > > evolved from a grammer instead of an api. >> > > > > > > >> > > > > > > Cheers >> > > > > > > Pieter >> > > > > > > >> > > > > > > On Thu, 2020-12-24 at 14:41 -0500, Stephen Mallette wrote: >> > > > > > > > As a project, over the years, we've often been asked the >> > > > > > > > question >> > > > as >> > > > > > > > to why >> > > > > > > > Gremlin doesn't have an ANTLR style grammar. There have >> > > > > > > > been >> > > > varying >> > > > > > > > answers over the years to explain the reasoning but in >> > > > > > > > recent years >> > > > > > > > I've >> > > > > > > > started to see where our dependence on Java for driving >> > > > > > > > Gremlin >> > > > > > > > design has >> > > > > > > > not translated well as we have expanded Gremlin into >> > > > > > > > other >> > > > > > > > programming >> > > > > > > > ecosystems. Using Java has often allowed idioms of that >> > > > > > > > language to >> > > > > > > > leak >> > > > > > > > into Gremlin itself which introduces friction when >> > > > > > > > implemented >> > > > > > > > outside of >> > > > > > > > the JVM. I think that there is some advantage to >> > > > > > > > designing Gremlin >> > > > > > > > more >> > > > > > > > with just graphs/usage in mind and then determining how >> > > > > > > > that design >> > > > > > > > choice >> > > > > > > > looks in each programming language. >> > > > > > > > >> > > > > > > > I think that using an ANTLR grammar to drive that design >> > > > > > > > work for >> > > > > > > > Gremlin >> > > > > > > > makes a lot of sense in this context. We would >> > > > > > > > effectively have >> > > > > > > > something >> > > > > > > > like a gremlin-script which would become the new language >> > > > archetype. >> > > > > > > > New >> > > > > > > > steps, language changes, etc. would be discussed in its >> > > > > > > > context and >> > > > > > > > then >> > > > > > > > implemented in the grammar and later in each programming >> > > > > > > > language >> > > > we >> > > > > > > > support in the style a developer would expect. An >> > > > > > > > interesting >> > > > upside >> > > > > > > > of >> > > > > > > > this approach is that we can implement gremlin-script in >> > > > > > > > the >> > > > > > > > ScriptEngine >> > > > > > > > and replace GremlinGroovyScriptEngine which would help us >> > > > strengthen >> > > > > > > > our >> > > > > > > > security story in Gremlin Server. Groovy processing would >> > > > > > > > just be a >> > > > > > > > fallback to Gremlin scripts that could not be processed >> > > > > > > > by the AST. >> > > > > > > > In fact >> > > > > > > > users who didn't need Groovy could simply not install it >> > > > > > > > at all and >> > > > > > > > thus >> > > > > > > > boast a much more secure system. >> > > > > > > > >> > > > > > > > I think that inclusion of a grammar in our project is an >> > > > > > > > exciting >> > > > new >> > > > > > > > direction for us to take and will help in a variety of >> > > > > > > > areas beyond >> > > > > > > > those >> > > > > > > > I've already related. >> > > > > > > > >> > > > > > > > If we like this direction, Amazon Neptune already >> > > > > > > > maintains such a >> > > > > > > > grammar >> > > > > > > > and would be willing to contribute it to the project to >> > > > > > > > live in >> > > > open >> > > > > > > > source. The contribution would go through the same IP >> > > > > > > > Clearance >> > > > > > > > process >> > > > > > > > gremlint is going through since it was developed outside >> > > > > > > > of >> > > > > > > > TinkerPop. I'd >> > > > > > > > be happy to guide that process through if we draw to >> > > > > > > > consensus >> > > > here. >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > >> > > > >> > > >> >>
