Parcourir la source

parser: allow root path specifications

All a patch specification to be just '@' or '$' - this is mainly useful when
exporting the keys of the toplevel object to the shell.

Example:

    $ echo '{ "abc": 1, "def": 2 }' | jsonpath -e 'keys=@'
    export keys='abc'\ 'def';

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Jo-Philipp Wich il y a 8 ans
Parent
commit
596f31e7c6
1 fichiers modifiés avec 2 ajouts et 0 suppressions
  1. 2 0
      parser.y

+ 2 - 0
parser.y

@@ -56,6 +56,8 @@ expr(A) ::= path(B).								{ A = B; }
 
 path(A) ::= T_ROOT segments(B).						{ A = alloc_op(T_ROOT, 0, NULL, B); }
 path(A) ::= T_THIS segments(B).						{ A = alloc_op(T_THIS, 0, NULL, B); }
+path(A) ::= T_ROOT(B).								{ A = B; }
+path(A) ::= T_THIS(B).								{ A = B; }
 
 segments(A) ::= segments(B) segment(C).				{ A = append_op(B, C); }
 segments(A) ::= segment(B).							{ A = B; }