如何修改 ANTLR4 语法以支持运算符的左关联?
How can I modify ANTLR4 grammar such that left association of operator can be supported?
我想支持以下输入,因为它具有提供的语法。
这行不通
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
我们可以通过修改语法来做些什么吗?
变化:
oC_StringListNullOperatorExpression
: oC_PropertyOrLabelsExpression ( oC_StringOperatorExpression
| oC_ListOperatorExpression
| oC_NullOperatorExpression
)*
;
进入:
oC_StringListNullOperatorExpression
: oC_PropertyOrLabelsExpression ( oC_StringOperatorExpression
| oC_ListOperatorExpression
| oC_NullOperatorExpression
| oC_PropertyLookup
)*
;
我想支持以下输入,因为它具有提供的语法。
这行不通
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
我们可以通过修改语法来做些什么吗?
变化:
oC_StringListNullOperatorExpression
: oC_PropertyOrLabelsExpression ( oC_StringOperatorExpression
| oC_ListOperatorExpression
| oC_NullOperatorExpression
)*
;
进入:
oC_StringListNullOperatorExpression
: oC_PropertyOrLabelsExpression ( oC_StringOperatorExpression
| oC_ListOperatorExpression
| oC_NullOperatorExpression
| oC_PropertyLookup
)*
;