From: Jo-Philipp Wich Date: Tue, 24 May 2016 15:06:50 +0000 (+0200) Subject: parser: allow root path specifications X-Git-Url: https://git.librecmc.org/?p=oweals%2Fjsonpath.git;a=commitdiff_plain;h=596f31e7c6e59685d1c04e91ea01b5982c044459 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 --- diff --git a/parser.y b/parser.y index f77779b..f037a69 100644 --- a/parser.y +++ b/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; }