如何修改Antlr4语法以支持左侧操作员的关联?

发布于 2025-01-22 22:47:27 字数 610 浏览 0 评论 0原文

我想支持以下输入,因为它是提供的语法。

不起作用

with [{id: 1},{id: 2}] as a
return a[0].id, a[1].id

如果我们将其更改为:

with [{id: 1},{id: 2}] as a
return (a[0]).id, (a[1]).id

语法的相关部分在这里

oC_PropertyOrLabelsExpression
                          :  oC_Atom ( SP? oC_PropertyLookup )* ( SP? oC_NodeLabels )? ;

:这是完整的语法: https://s3.amazonaws.com/artifacts.opencypher.org/ m18/cypher.g4

通过修改语法可以做什么?

I want to support the following input as it is with a provided grammar.

This does not work

with [{id: 1},{id: 2}] as a
return a[0].id, a[1].id

It works if we change it to be:

with [{id: 1},{id: 2}] as a
return (a[0]).id, (a[1]).id

The relevant part of the grammar is here:

oC_PropertyOrLabelsExpression
                          :  oC_Atom ( SP? oC_PropertyLookup )* ( SP? oC_NodeLabels )? ;

This is the full grammar:
https://s3.amazonaws.com/artifacts.opencypher.org/M18/Cypher.g4

Is there anything we can do by modifying the grammar?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

木槿暧夏七纪年 2025-01-29 22:47:27

变成

oC_StringListNullOperatorExpression
 :  oC_PropertyOrLabelsExpression ( oC_StringOperatorExpression
                                  | oC_ListOperatorExpression
                                  | oC_NullOperatorExpression
                                  )*
 ;

oC_StringListNullOperatorExpression
 :  oC_PropertyOrLabelsExpression ( oC_StringOperatorExpression
                                  | oC_ListOperatorExpression
                                  | oC_NullOperatorExpression
                                  | oC_PropertyLookup
                                  )*
 ;

Change:

oC_StringListNullOperatorExpression
 :  oC_PropertyOrLabelsExpression ( oC_StringOperatorExpression
                                  | oC_ListOperatorExpression
                                  | oC_NullOperatorExpression
                                  )*
 ;

into:

oC_StringListNullOperatorExpression
 :  oC_PropertyOrLabelsExpression ( oC_StringOperatorExpression
                                  | oC_ListOperatorExpression
                                  | oC_NullOperatorExpression
                                  | oC_PropertyLookup
                                  )*
 ;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文