PrimaryExpr ::= -- everything so far --
| ObjectConstructor
| ArrayConstructor
ObjectConstructor ::= "{" ( PairConstructor ("," PairConstructor)* )? "}"
PairConstructor ::= ExprSingle ":" ExprSingle
ArrayConstructor ::= "[" Expr? "]"
ExprSingle ::= -- everything so far --
| JSONDeleteExpr
| JSONInsertExpr
| JSONRenameExpr
| JSONReplaceExpr
| JSONAppendExpr
JSONDeleteExpr ::= "delete" "json" PrimaryExpr ( "(" ExprSingle ")" )+
JSONInsertExpr ::= "insert" "json" ExprSingle "into" ExprSingle
("at" "position" ExprSingle)?
| "insert" "json" PairConstructor ("," Pair Constructor)*
"into" ExprSingle
JSONRenameExpr ::= "rename" "json" PrimaryExpr ( "(" ExprSingle ")" )+
"as" ExprSingle
JSONReplaceExpr ::= "replace" "json" "value" "of"
PrimaryExpr ( "(" ExprSingle ")" )+
"with" ExprSingle
JSONAppendExpr ::= "append" "json" ExprSingle "into" ExprSingle
ItemType ::= -- everything so far --
| JSONTest
| StructuredItemTest
JSONTest ::=
JSONItemTest
| JSONObjectTest
| JSONArrayTest
StructuredItemTest ::= "structured-item" "(" ")"
JSONItemTest ::= "json-item" "(" ")"
JSONObjectTest ::= "object" "(" ")"
JSONArrayTest ::= "array" "(" ")"