mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
Make XPath-like `//a/b` recursive structure traversal easier in jq, which then becomes: ..|.a?.b? The `?` operator suppresses errors about . not being an array or object. The `..` operator is equivalent to calling the new `recurse_down` built-in, which in turn is equivalent to recurse(.[]?) Note that `..a` is not supported; neither is `...a`. That could be add added, but it doesn't seem worth the trouble of saving the need to type a '|'.
35 lines
832 B
C
35 lines
832 B
C
OP(LOADK, CONSTANT, 1, 1)
|
|
OP(DUP, NONE, 1, 2)
|
|
OP(DUP2, NONE, 2, 3)
|
|
OP(POP, NONE, 1, 0)
|
|
OP(LOADV, VARIABLE, 1, 1)
|
|
OP(LOADVN, VARIABLE, 1, 1)
|
|
OP(STOREV, VARIABLE, 1, 0)
|
|
OP(INDEX, NONE, 2, 1)
|
|
OP(INDEX_OPT, NONE, 2, 1)
|
|
OP(EACH, NONE, 1, 1)
|
|
OP(EACH_OPT, NONE, 1, 1)
|
|
OP(FORK, BRANCH, 0, 0)
|
|
OP(JUMP, BRANCH, 0, 0)
|
|
OP(JUMP_F,BRANCH, 1, 0)
|
|
OP(BACKTRACK, NONE, 0, 0)
|
|
OP(APPEND, VARIABLE,1, 0)
|
|
OP(INSERT, NONE, 4, 2)
|
|
OP(RANGE, VARIABLE, 1, 1)
|
|
|
|
OP(SUBEXP_BEGIN, NONE, 1, 2)
|
|
OP(SUBEXP_END, NONE, 2, 2)
|
|
|
|
OP(PATH_BEGIN, NONE, 1, 2)
|
|
OP(PATH_END, NONE, 2, 1)
|
|
|
|
OP(CALL_BUILTIN, CFUNC, -1, 1)
|
|
|
|
OP(CALL_JQ, UFUNC, 1, 1)
|
|
OP(RET, NONE, 1, 1)
|
|
|
|
OP(CLOSURE_PARAM, DEFINITION, 0, 0)
|
|
OP(CLOSURE_REF, CLOSURE_REF_IMM, 0, 0)
|
|
OP(CLOSURE_CREATE, DEFINITION, 0, 0)
|
|
OP(CLOSURE_CREATE_C, DEFINITION, 0, 0)
|